Ir ao conteúdo

Posts recomendados

Postado


/*
  *  Lab.  de  Programacao  de  Computadores  I  -  Laboratorio  07
 *
  *  Aluno:	Gláucio Carley Pereira
 */



/*
  Objetivo: Implementar uma função que receba como parametros um vetor de inteiros v, o numero de elementos dele n e ponteiros para variaveis e obtenha o valor maximo e minimo dos elementos desse vetor. 
  Entrada:  O tamanho do vetor, n, e cada um dos elementos do vetor
  Retorno:  O valor maximo e o valor minimo do vetor.
 */
 
 
#include <stdio.h>

void maxMin(int *v,int *n,int *maximo,int *minimo, int tamV,int vetor[tamV])

{

for(int i=0;i<tamV;i++)
  {
      
      *maximo=vetor[0];
      *minimo = vetor[0];
if(*maximo>=vetor[i])
{

  *maximo = vetor[i];
  
}
 
 if(*minimo<=vetor[i])
{

  *minimo = vetor[i];
  
}

}

int main() {

  // Tamanho do Vetor 
  int tamV;
  int maximo,minimo;
  int vetor[tamV];
  
  printf("Digite o tamanho do vetor\n");
  scanf("%d", &tamV);

  for(int i=0;i<tamV;i++)
  {
    printf("Digite os elementos do vetor: O elemento de ordem %d :\n", i+1); // Usuario preencher o vetor
    scanf("%d", &vetor[tamV]);
  }
  
 

  maxMin(vetor,tamV,&maximo,&minimo,tamV,vetor[tamV]);
  
  printf("TamV = %d\n", tamV);
  printf("Max = %d  Min = %d",maximo,minimo);
  
  return 0;
}
}

Preciso de um programa que leia o tamanho de um vetor, cada um de seus elementos e forneça o valor maximo e minimo dos elementos dos vetores.....está dando erro

  • Obrigado 1
Postado
1 hora atrás, Maxavam disse:

está dando erro


 Pois é. Eis alguns problemas

 

void maxMin(
    int *v, int *n, int *maximo, int *minimo, int tamV, int vetor[tamV])

 

Contei 6 parâmetros, sendo 4 ponteiros. Pra que isso tudo? Até seu comentário resumia as coisas:

 

Citação

Implementar uma função que receba como parametros um vetor
  de inteiros v, o numero de elementos dele n e ponteiros para variaveis

 

Então entra um vetor de um certo tamanho. 2 parâmetros. Retornar duas coisas, e o comentário já sugere como: "ponteiros para variáveis" você escreveu. Então
 

    void min_max( int* vetor, int tamanho, int* maximo, int* minimo );

 

não serviria?

 

Sobre o programa:

 

  • main() deve ser a primeira função de seu programa, se possível em um arquivo separado
  • não pode declarar tamanhos variáveis como vetor[tamV] na linha de argumentos. Ou usa o tamanho ou apenas o nome.
  • entenda que int pode ser negativo. Se precisa do máximo e do mínimo precisa iniciar essas duas variáveis de acordo. Você fez certo, mas DEIXOU DENTRO DO LOOP. Por que? Não faz sentido. Inicialize com o primeiro, ok. Mas, claro, compare a partir do segundo... E teste pra ver se tem dois. Ou mesmo um no vetor. Não se sabe como alguém vai chamar isso.

 

Sobre essa comparação:
 

        if (*maximo >= vetor[i]) { *maximo = vetor[i]; }

 

Entenda que esse sinal quer dizer "maior ou igual".  Sua comparação não está fazendo nada.  E nem essa:

 

        if (*minimo <= vetor[i]) { *minimo = vetor[i]; }

 

É o contrário. E se for igual porque vai fazer algo? Igual quer dizer igual. Teste as coisas. Use mensagens, mostre os valores na tela, escreva num papel...

 

E não precisa dessas chaves na mesma linha. Só atrapalha para ler. E é mais uma chance de errar algo.

 

void min_max(int vetor[], int tamanho, int *maximo, int *minimo)
{
    *maximo = vetor[0];
    *minimo = vetor[0];
    for (int i = 1; i < tamanho; i++)
    {
        if (vetor[i] > *maximo)
            *maximo = vetor[i];
        else if (vetor[i] < *minimo)
            *minimo = vetor[i];
    }
}

 

    // Tamanho do Vetor
    int tamV;
    int maximo, minimo;
    int vetor[tamV];

 

Evite esse tipo de comentário. Dá pra imaginar que tamV seja o tamanho. Se não dá melhore o nome.

 

No oficial em C não existe esse lance de tamanho variável. Ou define um valor ou aloca a memória na hora

 

Isso você pode escrever:
 

    int vetor[] = {1, 2, 3, 0, -1, -2, -3, -3};

 

Se seu enunciado não EXIGE que você leia esses valores use constantes, gere na hora o vetor com números aleatórios ou leia de um arquivo que você digita no próprio IDE. É muito mais fácil.

 

Nunca escreva um programa interativo à toa. C nem foi escrita para isso.

 

Se declarou o vetor como mostrei pode escrever o simples
 

    int vetor[] = {1, 2, 3, 0, -1, -2, -3, -3};
    int tamanho = sizeof(vetor) / sizeof(int);
    printf("Tamanho do vetor: %d\n", tamanho);

 

Porque? Porque assim pode digitar mais ou menos caras no vetor e não ter que mexer no resto do programa.

 

Tem chaves fora de lugar no seu programa. Em geral os editores dos IDE modernos (sim, IDE é singular) mostram os níveis de chaves, colchetes e parenteses. Alguns até mudam a cor para facilitar. USE.

 

Escreva em torno dos dados. É mais fácil.

 

Veja como pode escrever um programa de teste assim:

 

int main(void)
{
    int vetor[] = {1, 2, 3, 0, -1, -2, -3, -3};
    int tamanho = sizeof(vetor) / sizeof(int);
    int min = 0;
    int max = 0;
    min_max(vetor, tamanho, &max, &min);
    printf("Para o vetor V[%d] = { ", tamanho);
    for (int i = 0; i < tamanho - 1; i += 1) printf("%d,", vetor[i]);
    printf(
        "%d }\n    Min = %d, Max = %d\n\n",
        vetor[tamanho - 1], min, max);
    return 0;
}

 

Que mostra

 

Para o vetor V[8] = { 1,2,3,0,-1,-2,-3,-3 }
    Min = -3, Max = 3

 

Se a função estiver certa. A sua quase está. Faça o simples. Escreva assim. Altere o vetor, faça uns testes. E aí se precisar ler do teclado só então faça isso.

 

 

 

 

 

 

 

 

  • Obrigado 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!