Ir para conteúdo
  • Cadastre-se
Gustavo Cruz

Ajuda com linguagem C!!!

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); ^~~~~~~~~~~~

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×