pedrobrms 0 Denunciar post Postado Outubro 25, 2012 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
reebr 94 Denunciar post Postado Outubro 25, 2012 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
guidjos 65 Denunciar post Postado Outubro 25, 2012 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
Mateus GP 13 Denunciar post Postado Novembro 21, 2012 #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