[ galitden @ 13.03.2007. 19:34 ] @
Evo ljudi pisem program (za maturalni rad) koji služi za kriptiranje podataka i pri tome koristi des algoritam. Te jedan dio programa treba rotirati zadane bitove... U ovom codu sto sam postavio ovdje, imaju dvije greške, prvo program mi neće da izađe iz prve FOR petlje (ako mi je uvjet nije k<x, ako je x od 1 do 14 izlazi iz petje a ako je x od 15 pa nadalje ne izlazi iz petlje). A drugi problem je pri ispisu C nizova pomoću druge FOR petlje, ispisani nizovi imaju duljine veće od 28 znakova (tj. imaju više od 28 znakova)??? Te evo molim vas da mi pokažete i objasnite u čemu je problem??? Zadatak ovoga djela programa je da sa zadanim stringom u ovome slučaju C[0] i D[0] vrši rotiranje znakova u ljevo... I to tako da stvori 16 novih stringova ( C[1] , C[2], ... , C[16] i D[1] , D[2], ... , D[16] ) pri čemu je svaki pomaknut u odnosu na predhodni za 1 ili 2 znaka što ovisi o trenutnoj vrjednosti K. Code: #include <iostream> #include <string> using namespace std; void pomicanje_ljevo(char a[], int x, char b[]) { if(x==1){ char temp=a[0]; for(int s=0;s<27;s++) b[s]=a[s+1]; b[27]=temp; b[28]='\0'; } else{ char temp1 =a[0],temp2=a[1]; for(int s=0;s<26;s++) b[s]=a[s+2]; b[26]=temp1; b[27]=temp2; b[28]='\0'; } } int main() { char C[17][28],D[17][28]; strcpy(C[0],"0000000011111111111111111001"); strcpy(D[0],"1001001010100111001011100001"); C[0][28]='\0'; D[0][28]='\0'; cout<<C[0]<<endl; cout<<D[0]<<endl<<endl; for(int k=0;k<16;k++){ if(k==0 || k==1 || k==8 || k==15){ pomicanje_ljevo(C[k],1, C[k+1]); pomicanje_ljevo(D[k],1, D[k+1]); } else{ pomicanje_ljevo(C[k],2, C[k+1]); pomicanje_ljevo(D[k],2, D[k+1]); } } for(int z=1;z<17;z++) { cout<<"C: "<<C[z]<<endl; } return 0; } |