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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons no total são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.


  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...