Error: "error: array type 'int [oversize]' is not assignable"

1

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

  

error: array type 'int [oversize]' is not assignable

     

majorVetor = vectorII;

     

~~~~~~~~ ^

     

error: array type 'int [oversize]' is not assignable

     

majorVector = vectorI;

     

~~~~~~~~ ^

#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;
}
    
asked by anonymous 15.05.2017 / 21:46

1 answer

1

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

memcpy(maiorVetor, vetorI);

But maybe you can optimize the code so you do not even need it.

    
15.05.2017 / 21:54