Ir para conteúdo

Ajuda com linguagem C!!!


Gustavo Cruz

Posts Recomendados

Pessoal, boa tarde . Sou iniciante em linguagem C, e por isso estou com dificuldades pra conseguir identificar o erro. Me digam por favor o que está errado nesse código, e me digam como resolver!!

CÓDIGO:
 
#include <stdio.h>
#include <stdlib.h>
 
int i;
int vetor1 [5];
int vetor2 [5];
int vetor3 [5];
float total = 0;
 
void mediaVetores (int *vetor3, int tamanho, float total = 0){
 
for (int i = 0; i < tamanho; i++){
 
vetor3 = (vetor1 + vetor2);
 
total = total + vetor3;
}
total = total/tamanho;
 
printf ("\nA média dos dois vetores é: \n\n%.2f\n", total);
 
}
 
int main() {
 
printf ("\n Digite os valores do primeiro vetor: \n\n");
 
for (int i = 0; i < 5; i++){
 
scanf ("%d", &vetor1);
 
}
 
printf ("\n Digite os valores do segundo vetor: \n\n");
 
for (int i = 0; i < 5; i++){
 
scanf ("%d", &vetor2);
 
}
 
mediaVetores (total);
 
}
 
ERROS QUE O REPL.IT INFORMA:
 
exit status 1 main.c:11:58: error: expected ';', ',' or ')' before '=' token void mediaVetores (int *vetor3, int tamanho, float total = 0){ ^ main.c: In function 'main': main.c:43:5: warning: implicit declaration of function 'mediaVetores' [-Wimplicit-function-declaration] mediaVetores (total); ^~~~~~~~~~~~
Link para o comentário
Compartilhar em outros sites

  • Apoiador Nibble

Na main() voce esta enviando o vetor em si para o scanf, o certo seria voce enviar somente a variavel que voce deseja atribuir, nesse caso voce acessa ela via indice

scanf("%d", vetor[i]);

Visto que as variaveis sao globais, nao precisa enviar elas via parametros ja que voce pode acessar-las de qualquer local do codigo e ainda na mediaVetores() voce esta atribuindo valores para os argumentos que nao foram passados, isso funciona na maioria das linguagens(python, java, c++...) mas em C voce nao pode fazer isso.

Voce nao precisa de argumentos nesse caso, ja que voce ja sabe quais sao as variaveis nesse codigo. ainda na funcao mediaVetores() voce esta somando um vetor com um float, o correto seria fazer a soma com os valores que estao armazenados no vetor, no caso via indice, mas ja que voce quer somente a media dos vetores, voce pode somar os valores dos dois vetores na variavel total e depois dividir pelo total de elementos.

float mediaVetores (){
	for (int i = 0; i < TAM_VETOR; i++){
	 	total += ((float)vetor1[i] + (float)vetor2[i]);
	}

	total /= TAM_VETOR * 2;
	return total; 
}

O tamanho dos vetores sao fixos (5), entao voce pode definir uma macro (#define TAM_VETOR 5) e usar ela como tamanho, e voce pode fazer a mediaVetores() retornar um float em vez de ser void.

 

No final, o codigo ficaria da seguinte maneira

#include <stdio.h>
#include <stdlib.h>
#define TAM_VETOR 5 

int i;
int vetor1 [TAM_VETOR];
int vetor2 [TAM_VETOR];
int vetor3 [TAM_VETOR];
float total = 0;
 
float mediaVetores (){
	for (int i = 0; i < TAM_VETOR; i++){
	 	total += ((float)vetor1[i] + (float)vetor2[i]);
	}

	total /= TAM_VETOR * 2;
	return total; 
}
 
int main() {
 
	printf ("\n Digite os valores do primeiro vetor: \n\n");
	 
	for (int i = 0; i < 5; i++){
	 
		scanf ("%d", &vetor1[i]);
	 
	}
	 
	printf ("\n Digite os valores do segundo vetor: \n\n");
	 
	for (int i = 0; i < 5; i++){
	 
		scanf ("%d", &vetor2[i]);
	 
	}
	 
	printf("Media vetores: %f\n", mediaVetores()); 
}

 

No canal do papo binario tem um curso execelente da linguagem C.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...