int vetor[100], i, num, soma;
printf("Digite os valores da matriz\n");
for(i=1; i<=3; i++){
printf("Elemento: %d ",i);
scanf("%d",&vetor[i]);
vetor[i] = rand() % 100;
}
soma = vetor[0];
for(i=1; i<=3; i++){
soma = soma + vetor[i];
}
printf("Total: %d",soma);
vetor[0] não tem valor definido em momento algum do seu código.
troque:
soma = vetor[0];
por:
soma = 0;
Nesse exercício vamos encontrar o erro do código dado. Para isso vamos comentar linha a linha (prática recomendada quando se programa) o código para identificar o erro.
Comentadno, temos:
int vetor[100], i, num, soma; // vetor: 100 inteiros, i: inteiro, num: inteiro, soma: inteiro
printf("Digite os valores da matriz\n"); // Instrucao
for(i=1; i<=3; i++){ // Para i na sequencia {1,2,3}
printf("Elemento: %d ",i); // Imprime o numero do elemento (1,2,3)
scanf("%d",&vetor[i]); // Le os 3 elementos e guarda em vetor[1], vetor[2] e vetor[3]
vetor[i] = rand() % 100; // Sorteia 3 numeros e sobrescreve os números lidos
}
soma = vetor[0]; // soma inicializado com o conteúdo de vetor[0] (lixo)
for(i=1; i<=3; i++){ // Para i na sequencia {1,2,3}
soma = soma + vetor[i]; // incrementa soma com o valor de vetor[i]
}
printf("Total: %d",soma); // imprime soma=vetor[0]+vetor[1]+vetor[2]+vetor[3]
Da forma como está o programa soma junto com o resultado da soma do vetor o elemento contido em soma[0], que como não foi inicializado, pode ser qualquer valor inteiro, o que chamamos de lixo. Para resolver o problema podemos inicializar soma com zero, o que nos leva ao seguinte código, onde a linha em negrito indica a alteração realizada:
int vetor[100], i, num, soma; // vetor: 100 inteiros, i: inteiro, num: inteiro, soma: inteiro
printf("Digite os valores da matriz\n"); // Instrucao
for(i=1; i<=3; i++){ // Para i na sequencia {1,2,3}
printf("Elemento: %d ",i); // Imprime o numero do elemento (1,2,3)
scanf("%d",&vetor[i]); // Le os 3 elementos e guarda em vetor[1], vetor[2] e vetor[3]
vetor[i] = rand() % 100; // Sorteia 3 numeros e sobrescreve os números lidos
}
soma = 0; // soma inicializado com 0
for(i=1; i<=3; i++){ // Para i na sequencia {1,2,3}
soma = soma + vetor[i]; // incrementa soma com o valor de vetor[i]
}
printf("Total: %d",soma); // imprime soma=0+vetor[1]+vetor[2]+vetor[3]
Da forma como está o programa soma junto com o resultado da soma do vetor o elemento contido em soma[0], que como não foi inicializado, pode ser qualquer valor inteiro, o que chamamos de lixo. Para resolver o problema podemos inicializar soma com zero, o que nos leva ao seguinte código, onde a linha em negrito indica a alteração realizada:
int vetor[100], i, num, soma; // vetor: 100 inteiros, i: inteiro, num: inteiro, soma: inteiro
printf("Digite os valores da matriz\n"); // Instrucao
for(i=1; i<=3; i++){ // Para i na sequencia {1,2,3}
printf("Elemento: %d ",i); // Imprime o numero do elemento (1,2,3)
scanf("%d",&vetor[i]); // Le os 3 elementos e guarda em vetor[1], vetor[2] e vetor[3]
vetor[i] = rand() % 100; // Sorteia 3 numeros e sobrescreve os números lidos
}
soma = 0; // soma inicializado com 0
for(i=1; i<=3; i++){ // Para i na sequencia {1,2,3}
soma = soma + vetor[i]; // incrementa soma com o valor de vetor[i]
}
printf("Total: %d",soma); // imprime soma=0+vetor[1]+vetor[2]+vetor[3]
Para escrever sua resposta aqui, entre ou crie uma conta
Linguagem de Programação (c/c++)
•UNINTER
Compartilhar