1
While trying to compile the code I get the following error messages:
#include <stdio.h>
#include <stdlib.h>
#define OK 0
void preencherVetor(int* vetor[], int tamanho)
{
int indice;
for (indice = 0; indice < tamanho; indice++)
{
printf("Entre com o valor[%d]\n", indice+1);
scanf("%d", vetor[indice]);
}
}
void copiarVetor(int* novoVetor[], int* antigoVetor[], int tamanho)
{
int indice;
for (indice = 0; indice < tamanho; indice++)
{
(*novoVetor[indice]) = (*antigoVetor[indice]);
}
}
int* somaVetores(int* vetorSoma[]/*, int tamanhoI, int tamanhoII*/)
{
vetorSoma = (int*) malloc(sizeof (int) * 20);
int indice = 0;
int tamanho;
int tamanhoI;
int tamanhoII;
int tamanhoExcedente; //Se os vetores possuírem tamanhos diferentes, o tamanhoExcedente será o tamanho do maior vetor
int* maiorVetor[20];
maiorVetor = (int*) malloc(sizeof (int) * 20);
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];
vetorI = (int*) malloc(sizeof (int) * tamanhoI);
int* vetorII[tamanhoII];
vetorII = (int*) malloc(sizeof (int) * tamanhoII);
printf("\nPreencha o primeiro vetor\n");
preencherVetor(vetorI, tamanhoI);
printf("\nPreencha o segundo vetor\n");
preencherVetor(vetorII, tamanhoII);
while ((tamanhoI >= 1) && (tamanhoI <= 20) && (tamanhoII >= 1) && (tamanhoII <= 20))
{
if (tamanhoI < tamanhoII)
{
tamanho = tamanhoI;
tamanhoExcedente = tamanhoII;
copiarVetor(maiorVetor, vetorII, tamanhoII);
}
else if ((tamanhoI) > (tamanhoII))
{
tamanho = tamanhoII;
tamanhoExcedente = tamanhoI;
copiarVetor(maiorVetor, vetorI, tamanhoI);
}
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;
copiarVetor(maiorVetor, vetorI, tamanhoI);
}
for (indice = 0; indice < tamanho; indice++)
{
(*vetorSoma[indice]) = (int) ((*vetorI[indice]) + (*vetorII[indice]));
}
indice = tamanho;
for (indice = tamanho; indice < tamanhoExcedente; indice++)
{
(*vetorSoma[indice]) = (*maiorVetor[indice]);
}
printf("\nVetor Soma = {");
printf("%d", (*vetorSoma[0]));
indice = 1;
for (indice = 1; indice < tamanhoExcedente; indice++)
{
printf(", %d", (*vetorSoma[indice]));
}
printf("}\n");
return *vetorSoma;
}
printf("ERRO\n O tamanho de um vetor excede o limite permitido!!!\n");
return 0;
}
int main()
{
int opcao;
int* vetSoma;
vetSoma = (int*) malloc(sizeof (int) * 20); //vetor soma
do
{
printf("\nCALCULADORA DE VETORES E MATRIZES\n\n");
printf("1 - Soma de dois vetores\n");
printf("2 - Produto interno de dois vetores\n");
printf("3 - Intercalação de dois vetores de 8 posições em um vetor de 16\n");
printf("4 - Ordenação de um vetor de inteiros em ordem crescente\n");
printf("5 - Transposta de uma matriz");
printf("6 - Multiplicação de duas matrizes\n");
printf("0 - Sair\n");
scanf("%d", &opcao);
switch (opcao)
{
case 1:
somaVetores(&vetSoma/*, tamanho1, tamanho2*/);
break;
case 0:
break;
default:
printf("Operação não disponível\n");
break;
}
} while(opcao != 0);
return OK;
}
Could you tell me what happens when you take the conversions before malloc? It is important to understand that in C, it is ideal that you do not do type conversion when using malloc. Language itself makes the conversion implicitly to you.
– Nexus
You put #include <stdlib. h>?
– Taisbevalle
Don’t change the question, if you have another problem, ask another question.
– Maniero