Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pedrobrms

Problemas com algoritmo

Recommended Posts

Olá pessoal! Estou com uma certa dúvida em um algoritmo

preciso fazer um algoritmo que leia cinco valores numéricos (A,B,C,D,E) e apresente o maior e o menor dos cinco valores.

 

Pensei que seria o sucessor e o antecessor de cada valor numérico, porém, analisando bem, vejo que é o maior entre os cinco valores, por exemplo

A = 5

B = 3

C = 9

D = 8

E = 4

MAIOR : 9

MENOR = 3

 

Não sei proceder. alguém consegue me dar uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estrutura de repetição. ^_^

Do contrário você terá que criar uma variável para ler cada número digitado, exemplo: num1, num2, num3[...]

 

 

Um exemplo com for:

 

#include "stdio.h"
#include "stdlib.h"

#define MAX 5 

int A[MAX], i, maior, menor;

int main()
{
 for(i=0; i<MAX; i++)
  {
   system("CLS"); 

   printf("Digite o %i numero:\n", i+1);
   scanf("%i", &A[i]); 
  }

  maior = A[0];
  menor = A[0];

  for(i=0; i<MAX; i++) 
   {
    if(A[i] > maior) 
      maior = A[i]; 

    if(A[i] < menor)
       menor = A[i]; 
    }

    system("CLS");

    printf("\n\nO maior valor digitado foi: %i\nO menor valor digitado foi: %i\n\n", maior, menor);
    system("PAUSE");
   }

 

Um exemplo com While:

#include <stdio.h>
#include <stdlib.h>

int num = 0, maior = 0, menor = 0, i = 0;

main()
{

 while(i < 5)
  {
   printf("Digite o %i numero:\n", i+1);
   scanf("%i", &num);

   if(i<=0)
    {
     maior = num;
     menor = num;
    }

   if(num > maior)
    maior = num;

   if(num < menor)
    menor = num;

   i++ ;
  }

  printf("\n\nO maior valor digitado foi: %i\nO menor valor digitado foi: %i\n\n", maior, menor);
  system("PAUSE");
}

 

Um exemplo com do...while:

#include <stdio.h>
#include <stdlib.h>

int num = 0, maior = 0, menor = 0, i = 0;

main()
{

 do
  {
   printf("Digite o %i numero:\n", i+1);
   scanf("%i", &num);

   if(i<=0)
    {
     maior = num;
     menor = num;
    }

   if(num > maior)
    maior = num;

   if(num < menor)
    menor = num;

   i++ ;
  }while(i < 5);

  printf("\n\nO maior valor digitado foi: %i\nO menor valor digitado foi: %i\n\n", maior, menor);
  system("PAUSE");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pedro, tente descrever seu raciocínio e fazer perguntas que te ajudem a avançar.

 

Renan, é legal ajudarmos, mas evite dar a solução pronta.

 

Já que temos os códigos, seguem sugestões:

 

- Especifique o tipo de retorno de main. Nas versões menos antigas da linguagem (C99, C11), não assume-se mais que seja (int).

 

- Na solução usando for, você itera duas vezes sobre os números. A segunda solução é melhor nesse aspecto (melhora um fator constante na complexidade temporal em relação ao primeiro algoritmo).

 

Segue uma solução minha, que lê números passados como argumentos para o programa. Aceita quantidades variáveis de números de entrada:

 

// compilação: gcc -std=c99 -Wall -Wextra -pedantic [src.c] -o [tgt]

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main(int argc, char *argv[])
{
   long int maior = LONG_MIN,
            menor = LONG_MAX;

   for (; argc > 1; argc--)
   {
       long int iter = strtol(argv[argc - 1], NULL, 10);

       if (iter < menor)
           menor = iter;

       if (iter > maior)
           maior = iter;
   }

   printf("\n\tMenor: %ld\n\tMaior: %ld\n\n", menor, maior);
}

 

p.s.: omiti verificações de erro para simplificar o código. A solução é minimalista.

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>

int main()
{
   int min, max, vetor[5], i = 0;

   puts("Insira cinco numeros:");
   while(i < 5)
       scanf("%d", vetor + i++);

   min = max = *vetor;
   while(i >= 0)
   {
       if(min > vetor[i])
           min = vetor[i];

       if(max < vetor[i])
           max = vetor[i];
       i--;
   }
   printf("Menor: %d\nMaior: %d\n", min, max);
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.