Ir ao conteúdo
  • Cadastre-se

C Programa em C com erro de compilação


Maxavam

Posts recomendados



/*
  *  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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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