#cpp #c
Код приведенный ниже выполняет сложение 2 массивов которые являются двоичными числами. Долго думал над данным кодом, но что-то пошло не так. При переносе единицы в меньший разряд где в массиве А находится 1 появляется на выходе 2(а двоичный код не может состоять из 2) Надо поправить. Большая просьба(менять только мат часть и без сложных манипуляций) это лаба по предмету, преподу надо объяснить это) (несколько раз запустите цикл, может и без ошибок пройти) #include#include #include #define N 5 int main() { int A[N],B[N],C[N+1],a,b,i,grs=0; srand(time(NULL)); for(i=0; i -1;i--){ if(A[i]==2){ A[i+1]=1; A[i]=0; } if(A[i] && B[i]){ C[i+1]=C[i+1]+((A[i] + B[i])%2); C[i] = C[i] + 1; }else{ if(A[i]>B[i]){ C[i+1]=A[i]+ C[i+1]; }else{ C[i+1]=B[i]+ C[i+1]; } } } printf("\n"); if(C[0]==1){ printf("%s","Length exceeded, response:"); }else{ printf("%s","Otvet:"); } for(i=0; i Ответы
Ответ 1
Да просто введите переменную переноса и все: #include#include #include #define N 5 int main() { int A[N],B[N],C[N],i; srand(time(NULL)); printf(" "); for(i=0; i< N ;i++) printf("%i ", A[i] = rand()%2); printf("\n "); for(i=0; i< N ;i++) printf("%i ", B[i] = rand()%2); int carry = 0; for(i = N-1; i >= 0; i--) { C[i] = A[i] + B[i] + carry; if (C[i] > 1) { carry = 1; C[i] %= 2; } else carry = 0; } printf("\n"); if(carry) { printf("%s","Length exceeded, response: 1 "); } else { printf("%s","Otvet: "); } for(i = 0; i < N ; i++) printf("%i ", C[i]); printf("\n"); }
Комментариев нет:
Отправить комментарий