Ir ao conteúdo
  • Cadastre-se

Vetor na funçao


Posts recomendados

Galera estou fazendo um programa que receba um vetor na funçao main,e tenho que levar os valores desse vetor ate uma funçao e descobrir qual o maior valor desse vetor,e passar o maior valor que descobri na funçao para o programa e imprimi-lo.não esta dando nenhum erro,porém na hora que eu vou testar,ele me da o maior numero sendo o ultimo,porque isso? é como se tivesse lendo a posiçao e nao o valor que esta nela,porque?

obs:linguagem c

int lervetor(vetor){
int maior;
maior=0;
scanf("%d",&vetor);
    if (vetor>maior)
    maior=vetor;

    return maior;
}



int main(){
int vetor[10],i,vetormaior;
printf("escreva os valores que deseja armazenar");
lervetor(vetor);
for(i=0;i<10;i++)
vetormaior=lervetor(vetor);
printf("Maior numero do vetor é %i",vetormaior);

    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

@Rafael Filho

Essa resposta ai se aplica completamente a você.

Você ainda não entendeu a lógica para se trabalhar com vetores.

 

Você precisa ler cada posição separadamente e ir atribuindo o valor maior.

 

Acesso a vetores, como você mesmo postou em outro tópico seu

No tópico que mencionei acima, você dá a entender que sabe acessar os indices de vetor A[i+8], porém, não aplicou no seu código ai emcima...

 

Resumão: Você está trabalhando apenas com a primeira posição do vetor, logo, a primeira é a ultima posição, então, ele sempre vai ser o maior...

Link para o comentário
Compartilhar em outros sites

14 horas atrás, Rafael Filho disse:

@Carlos Zanon não entendi muito bem, porque o meu pensamento,é que eu estou escrevendo os valores do vetor na main,e estou lendo/recebendo eles la na funçao e estou fazendo a comparaçao la de qual numero é o maior entendeu?porque não esta funcionando assim?

 

Porque você não está indicando qual posição do vetor está trabalhando e o programa não consegue adivinhar isso pra você :v

Ele obtém, por padrão, a primeira posição dele :v

 

Quando você declara um vetor de 8 posições, por exemplo, a variável declarada aponta para 8 posições de memória ao mesmo tempo, sendo assim acessadas usando os índices do vetor.

 

int vetor[8] = { 12, 5, 8, 1, 7, 4, 10, 0 };

As posições de índices variam de 0 até 7.

 

Quando você utiliza somente a chamada "vetor", que é o seu caso, você está passando a primeira posição é como se você fizesse "vetor[0]"... se você deseja fazer com que ele acesse as demais opções, você tem que:

 

1º- Não usar variáveis de escopo de função.

 

Faça um teste de mesa aqui.

14 horas atrás, Rafael Filho disse:

int lervetor(vetor){ int maior; maior=0; scanf("%d",&vetor); if (vetor>maior) maior=vetor; return maior; }

 

Quando você declarou maior, dentro de lervetor(), cada vez que você chamar ela, ela será igual a zero.

A Segunda coisa é que &vetor, apontará para a primeira posição do vetor como eu mencionei ali emcima, então você sempre irá gravar o ultimo valor lido dentro de "vetor[0]" e como você não contou pra função qual era o valor maior do vetor, ela deverá usar o valor que você inicializou ela com zero... então sempre o primeiro número e o maior valor serão os últimos que você digitar.

 

Seria melhor você separar em partes.

 

/**
 * Faz a leitura e gravação de um vetor inicializado e retorna o maior valor
 * para o mesmo.
 */
int lerVetor(int vetor[], int tamanho)
{
	int i, maior;
	
	// Faz a leitura completa do vetor.
	for(i = 0; i < tamanho; i++)
	{
		int aux;
		scanf("%i", &aux);
		
		if(i == 0 || aux > maior)
			maior = aux;

		vetor[i] = maior;
	}
	
	return maior;
}

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!