Дополнение двух в недопустимых типах ‘int [int]’ для индекса массива

Я пытаюсь реализовать своего рода алгоритм дополнения до двух в C ++, и до сих пор я думаю, что моя логика верна. Тем не менее, я получаю следующую ошибку при запуске invalid types 'int[int]' for array subscript

#include <iostream>
#include <stdio.h>
using namespace std;

int main(){

int a[4] = {0, 2, 3, 5};
int b[4] = {9, 7, 8 ,4};

int sum = 0;
int transmit = 0;
int c{0};

for (int k=3;k>0;k--){
sum = a[k]+b[k]+transmit;
c[k+1]=sum%10;
transmit=sum/10;
}

c[0] = transmit;
return 0;
}

0

Решение

Я полагаю, ваша цель состоит в том, чтобы сделать плюс работу двух массивов int?
Небольшое объяснение: вы должны объявить пять единиц для «с», так как может быть один дополнительный носитель (вы назвали передачу)

#include <iostream>
#include <stdio.h>
using namespace std;

int main(){

int a[4] = {0, 2, 3, 5};
int b[4] = {9, 7, 8 ,4};

int sum = 0;
int transmit = 0;
int c[5] = {0};

for (int k=3;k>0;k--){
sum = a[k]+b[k]+transmit;
c[k+1]=sum%10;
transmit=sum/10;
}

c[0] = transmit;
return 0;
}

С этим форматом: массив десятичных целых чисел, их несколько трудно преобразовать в двоичный файл напрямую. Но я все еще могу попытаться выдать решение:

// first convert to an unsigned int
unsigned int result = 0;
for (int k = 0; k < 5; ++k) {
result *= 10;
result += c[k];
}

// then convert to binary
char binary[32]; // 32bit should be enough
int len = 0;
while (result > 0) {
binary[len++] = (result % 2) + '0';
result /= 2;
}

// finally print binary
for (int k = len - 1; k >= 0; --k) {
printf("%c", binary[k]);
}

Полная программа:

#include <iostream>
#include <stdio.h>
using namespace std;

int main(){

int a[4] = {0, 2, 3, 5};
int b[4] = {9, 7, 8 ,4};

int sum = 0;
int transmit = 0;
int c[5] = {0};

for (int k=3;k>0;k--){
sum = a[k]+b[k]+transmit;
c[k+1]=sum%10;
transmit=sum/10;
}

c[0] = transmit;

// first convert to an unsigned int
unsigned int result = 0;
for (int k = 0; k < 5; ++k) {
result *= 10;
result += c[k];
}

// then convert to binary
char binary[32]; // 32bit should be enough
int len = 0;
while (result > 0) {
binary[len++] = (result % 2) + '0';
result /= 2;
}

// finally print binary
for (int k = len - 1; k >= 0; --k) {
printf("%c", binary[k]);
}

printf("\n");

return 0;
}
0

Другие решения

c имеет тип int

int c{0};

И вы пытаетесь почтить его, как если бы это был массив:

c[k+1]=sum%10;

Вы не можете юридически разыменовать int,

4

По вопросам рекламы [email protected]