Error: "error: array type 'int [sizeExcedent]' is not Assignable"

Asked

Viewed 279 times

1

When trying to compile the program I get the following message:

error: array type 'int [sizeExcedent]' is not Assignable

uppercase = vector II;

~~~~~~~~ ^

error: array type 'int [sizeExcedent]' is not Assignable

uppercase = vector I;

~~~~~~~~ ^

#include <stdio.h>

int main()
{
  int tamanhoI;
  int tamanhoII;
  int indice;
  int tamanho;
  int vetorSoma[tamanho];
  int tamanhoExcedente; //Se os vetores possuírem tamanhos diferentes, o tamanhoExcedente será o tamanho do maior vetor
  int maiorVetor[tamanhoExcedente];

  printf("\nDigite o tamanho do primeiro vetor\n(O valor do tamanho deve pertencer ao intervalo [1,20])\n");
  scanf("%d", &tamanhoI);

  printf("Digite o tamanho do segundo vetor\n(O valor do tamanho deve pertencer ao intervalo [1,20]\n");
  scanf("%d", &tamanhoII);

  int vetorI[tamanhoI];
  int vetorII[tamanhoII];

  while (tamanhoI >= 1 && tamanhoI <= 20 && tamanhoII >= 1 && tamanhoII <= 20)
  {
    if (tamanhoI < tamanhoII)
    {
      tamanho = tamanhoI;
      tamanhoExcedente = tamanhoII;
      maiorVetor = vetorII;
    }

    else if (tamanhoI > tamanhoII)
    {
      tamanho = tamanhoII;
      tamanhoExcedente = tamanhoI;
      maiorVetor = vetorI;
    }

    else
    {
      tamanho = tamanhoI; //Como neste caso os dois vetores possuem tamanhos iguais, *tamanho deve ser igual ao tamanho de qualquer um dos vetores
      tamanhoExcedente = tamanhoI;
    }

    for (indice = 0; indice < tamanho; indice++)
    {
      vetorSoma[indice] = (vetorI[indice] + vetorII[indice]);
    }

    for (indice = (tamanho); indice < (tamanhoExcedente); indice++)
    {
      vetorSoma[indice] = maiorVetor[indice];
    }

    printf("\nVetor Soma = {");

    for (indice = 1; indice < tamanhoExcedente; indice++)
    {
      printf("%d", vetorSoma[0]);
      printf(", %d", vetorSoma[indice]);
    }

    printf("}\n");

    return 0;
  }

  printf("ERRO\n O tamanho de um vetor excede o limite permitido!!!\n");

  return 0;
}

1 answer

1


C can only copy simple memory to copy one array needs a function (in fact all languages are equal, only different C that gives you the power to do it the way you want while others make a pattern without you seeing). Then use memcpy().

memcpy(maiorVetor, vetorI);

I put in the Github for future reference.

But maybe I can optimize the code so I don’t need this.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.