Страницы

Поиск по вопросам

воскресенье, 29 марта 2020 г.

Сложение двоичного кода заданного 2 массивами C++

#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"); }

Комментариев нет:

Отправить комментарий