Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal, fiz esse programa mas ele tem alguns erros, não consegui entender bem a logica dele, se vocês poderem me dizer onde esta o erro e como poderia fazer para funcionar me digam por favor e sim eu sei que está errado, mas como disse a cima eu estou com dificuldade em repetição, se poder ajudar, obrigada. A questão é essa :     

.) Faça um programa que leia um número inteiro positivo de três dígitos (de 100 a 999).


Gere três números formados pelos dígitos do número lido (exiba cada número em uma linha) e em seguida:

 

a) Encontre e exiba o maior valor dos três números digitados.

b) Some os dois maiores números e divida pelo menor número.

c) Pare o programa quando o número lido estiver fora do intervalo proposto.

 

E o meu programa é este :

<#include <iostream>
main (){
    int x,y,z, media, maior=0, numerolido, i;
    for (i=1; i>3; i++){
        
    printf ("Numero Lido:\n");
    scanf("%d",&numerolido);
    
    
    if (x == numerolido) {
        x = numerolido;
        printf ("X: %d \n", x);
    
    }
    if (y == numerolido){
        y = numerolido;
        printf ("Y: %d \n", y);
    }
    
    if  (z == numerolido){
        z = numerolido;
            printf ("Z: %d \n", z);
    }
    else if (maior > numerolido){
        printf ("Maior : %d \n", maior);
    }
    else {
        printf ("Media : %d \n", media);
    }
        
    }
    
    
    
}>

 

  • Obrigado 1
Postado

Você colocou for (i=1; i>3;i++) esse é o problema você está dizendo repita o código enquanto i for maior que 3 e nunca vai ser pois está iniciando em 1, faça for(i=1;i<3;i++). Você possivelmente ainda está aprendendo a programar e não tem problema mais sempre evite repetir código (está cheio de if) um bom programador sabe como otimizar isso da melhor forma.

adicionado 2 minutos depois

* não é enquanto é até que, desculpe a confusão

  • Curtir 1
Postado

Poderia colocar os dígitos dentro de um vetor e ordenar ele, assim você saberia onde encontrar o menor e o maior número. Algo assim:

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

int main() {
    const int quantidade = 3;   // Quantidade de digitos
    int digitos[quantidade];    // Digitos separados

    int entrada = 0;            // Entrada do usuario
    int maior = 0;              // Maior digito (exercicio A)

    double divisao = 0.0;       // Resultado da divisao (exercicio B)

    // Pega os dados do usuario
    printf("Digite um numero com tres algarismos (100 - 999): ");
    scanf(" %i%*c", &entrada);

    // Valida o valor inserido (exercicio C)
    if (entrada < 100 || entrada > 999) {
        fprintf(stderr, "[ E ]: Numero fora do intervalo. \n");
        return EXIT_FAILURE;
    }

    // Separa os numeros em digitos
    digitos[0] = entrada / 100;
    digitos[1] = (entrada / 10) % 10;
    digitos[2] = entrada % 10;

    // Coloca os digitos em ordem DECRESCENTE
    for (int i = 0; i < quantidade - 1; ++i) {
        for (int j = quantidade - 1; j > i; --j) {
            if (digitos[i] < digitos[j]) {
                int temp = digitos[i];
                digitos[i] = digitos[j];
                digitos[j] = temp;
            }
        }
    }

    // Resolver exercicio A)
    maior = digitos[0];

    // Resolver exercicio B)
    divisao = (digitos[2] != 0)
              ? (double) (digitos[0] + digitos[1]) / digitos[2]
              : 0.0;

    // Exibe tudo
    printf("-------------------------------- \n");
    printf("  Maior: %i \n", maior);
    printf("Divisao: %.2f \n", divisao);
    printf("Digitos: [");
    for (int i = 0; i < quantidade; ++i) {
        printf("%i", digitos[i]);
        if (i + 1 < quantidade) printf(", ");
    }
    printf("] \n");
    printf("-------------------------------- \n");

    return EXIT_SUCCESS;
}

 

  • Curtir 1
Postado
14 horas atrás, julialilia disse:

fiz esse programa mas ele tem alguns erros, não consegui entender bem a logica dele

 

🤔 você fez o programa e não entendeu a lógica dele?

 

 

 

Postado

@AdrianoSiqueira ordenação funciona, e na prática em matrizes volumosas é ainda melhor.

 

 

@julialilia Querendo, use duas funções de uma linha cada que resolve de outro jeito.

int imaior (int a, int b){ return a > b ? a : b; }
int imenor (int a, int b){ return a < b ? a : b; }

 

Para determinar o maior e menor de 3 valores int, sem se preocupar com os detalhes.

int primeiro = imaior (imaior (a, b), c);
int terceito = imenor (imenor (a, b), c);

 

E o segundo ?

int segundo = (a + b + c) - (primeiro + terceiro);

 

 

Aritmética "de maçãs". 

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!