salve ragazzi
ho un problema riguardante il programma di crc da me sviluppato, per prima cosa devo passarlo in java ma quello è un problema secondario,il problema principale è che il programma oltre a rilevarmi il crc deve andare a inserirsi in una stringa contenente il valore iniziale binario e il valore del crc.
posto il codice qui :
codice:
#include <cstdlib>#include <iostream>
#include <string.h>
using namespace std;
const int DIM=20;
int main()
{
string A,B,C,D;
int lung,i=0,i1,n,cont,lunga;
char e;
cont=0;
cout<<"inserire la stringa da elaborare[F(x)]\n : ";
cin>>A;
cout<<endl;
cout<<"inserire il polinomio generatore[G(x)] N.B deve essere piu' corta della stringa da elaborare!!': ";
cin>>B;
cout<<endl;
lunga=A.length();
lung=B.length();
while(lunga<lung){
cout<<"la stringa da elaborare e' piu' corta del polinomio generatore.\n";
cout<<"inserire la stringa da elaborare: ";
cin>>A;
lunga=A.length();
}
while(i<lunga){
if((A.at(i)!='0')&&(A.at(i)!='1')){
cout<<"la stringa da elaborare e' errata!!\n";
cout<<"inserire la stringa da elaborare[F(x)]\n N.B. deve essere piu' lunga del polinomio generatore: ";
cin>>A;
lunga=A.length();
i=0;
}
else i++;
}
i=0;
while(i<lung){
if((B.at(i)!='0')&&(B.at(i)!='1')){
cout<<"il polinomio e' errato."<<endl;
cout<<"inserire il polinomio generatore[G(x)]: ";
cin>>B;
lung=B.length();
i=0;
}
else i++;
}
for(i=0;i<lung-1;i++){
A=A+"0";
}
D=D+A.substr(0,lung);
lunga=A.length();
while(lunga>=lung){
i1=0;
cont=0;
for(i=0;i<lung;i++){
e=D.at(i)^B.at(i1);
e+=48;
C=C+e;
i1++;
}
for(i=0;((i<C.length())&&(C.at(i)=='0'));i++)
{
cont++;
}
C.erase(0,cont);
A.erase(0,lung);
A=C+A;
D.clear();
C.clear();
D=A.substr(0,lung);
lunga=A.length();
}
lung=B.length();
i=0;
lunga=A.length();
while(lunga<lung){
A="0"+A;
i++;
lunga=A.length();
}
cout<<"il crc e': "<<A<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
il problema è che avendolo fatto con string e non con char non mi funziona strcpy e strcat ...
sono ormai alla deriva....