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

112
13 сентября 2019, 16:10

Код приведенный ниже выполняет сложение 2 массивов которые являются двоичными числами. Долго думал над данным кодом, но что-то пошло не так. При переносе единицы в меньший разряд где в массиве А находится 1 появляется на выходе 2(а двоичный код не может состоять из 2) Надо поправить. Большая просьба(менять только мат часть и без сложных манипуляций) это лаба по предмету, преподу надо объяснить это) (несколько раз запустите цикл, может и без ошибок пройти)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#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<N+1 ; i++){
C[i]=0;
}
for(i=0; i<N ; i++){
a = random() % 2;
A[i]=a;
printf("%i ", a);
}
printf("\n");
for(i=0; i<N ; i++){
b = random() % 2;
B[i]=b;
printf("%i ", b);
}
for(i=N-1; 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<N+1 ; i++){
if(i==0 && C[i]==0){}else{
printf("%i ", C[i]);}
}
}
Answer 1

Да просто введите переменную переноса и все:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#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");
}
READ ALSO
Почему не меняется адрес функции в разделе импорта?

Почему не меняется адрес функции в разделе импорта?

Написал код для смены импортируемого адреса CreateProcessW на свойЕсли я пытаюсь поменять адрес импортируемой функции в своем процессе (CLIENT

155
Как замедлить кручение объекта по своей оси в Box2D?

Как замедлить кручение объекта по своей оси в Box2D?

Квадрат падает под углом, отскакивая от земли он крутится, но крутится бесконечно, а нужно что бы его кручение замедлялось, как это сделать?

123
Демон оповещений (фоновая программа) на Java

Демон оповещений (фоновая программа) на Java

Недавно начал изучать тему ботов ВК, Телеграм и других соц сетейУ них есть одна проблема: чтобы увидеть оповещение об появлении новой информации...

145
Преобразование даты в java

Преобразование даты в java

Проблема такая: Нужно внести в базу данных дату и время в соответствующие поляНо происходит непонятная ситуация

177