Ir ao conteúdo

Posts recomendados

Postado

Boa tarde!

 

Preciso construir um programa para calcular o orçamento de um computador. O programa tem de pedir ao usuario as especificações do computador que quer, e dependendo disso o preço final vai ser um ou outro.

Especificações:

* Processador: i5 (500 reais), i7 (750 reais), i9 (1200 reais)

* Memória RAM: 8 GB (200 reais), 16 GB (300 reais)

* Disco rigido: 256 GB (200 reais), 512 GB (300 reais), 1 TB (500 reais)

 

O usuário será questionado sobre o tipo de computador que deseja, usando as opções numéricas (1, 2 e 3, em o caso do processador; 1 e 2 no caso da memória; 1, 2 e 3, no caso do disco rígido). O usuário escolherá as opções pelo teclado.

 

Eu tinha começado a fazer assim: utilizando um bocado de switch-case, mas daí percebi que ia ficar imenso porque são muitas opções (18 preços finais possiveis: olhem o fluxograma que anexei abaixo).

 

 

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

/* Constantes */
#define P_I5 500
#define P_I7 750
#define P_I9 1200
#define RAM_8GB 200
#define RAM_16 300
#define DD_256GB 200
#define DD_512GB 300
#define DD_1T 500

int main()
{
    int op1, orçamento, preço_total;
    printf ("***bem-vindo/a***\n\n");
    printf ("Venha fazer o orçamento do seu novo computador\n\n");
    do {
        printf ("Qual processador quer?\n");
        printf ("1. i5 (500 reais)\n2. i7 (750 reais)\n3. i9 (1200 reais)\n");
        scanf("%d", &op1);
        
        switch (op1){
            
            case 1:{
                int op2;
                orçamento = P_I5;
                printf ("Orçamento no momento: ", orçamento);
                do{
                    printf ("Qual memoria RAM quer?\n");
                    printf ("1. 8 GB (200 reais)\n2. 16 GB (300 reais)\n");
                    scanf ("%d", &op2);
                    
                    switch (op2){
                        case 1:
                            int op3;
                            orçamento = P_15 + RAM_8GB;
                            printf ("Orçamento no momento: ", orçamento);
                            do{
                                printf ("Qual disco rigido quer?\n");
                                printf ("1. 256 GB (200 reais)\n2. 512 GB (300 reais)\n3. 1 TB (500 reais)");
                                scanf ("%d", &op3);
                                .
                                .
                                .
                            }
                            
                    }
                }while (op1 != 1 && op1 != 2);
            }
        
        }
        
        
    }while (op1 != 1 && op1 != 2 && op1!=3);

    return 0;
}

 

Eu só posso utilizar estruturas de controle neste programa: if-else, do-while, for, switch-case. Nada de funções. Mas tô tendo muita dificuldade em achar uma maneira de fazer isso. Alguém pode me ajudar? Ficaria muito grato!

WhatsApp Image 2020-10-23 at 20.45.50.jpeg

  • Curtir 2
Postado

@Luis Vilo

17 horas atrás, Luis Vilo disse:

Eu só posso utilizar estruturas de controle neste programa: if-else, do-while, for, switch-case. Nada de funções.

Ora... scanf() e printf() não são funções?? Sempre achei chato esse fato dos professores limitarem os alunos a não poderem usar tal coisa. É legal mostrar como uma função x funciona, mas proibir de usar, pra mim não faz muito sentido.

Justo na primeira vez que eu tive um professor que me deixou usar tudo que eu quisesse, eu consegui aprender bem mais do que quando eu era limitado a não poder usar x funções :)

 

17 horas atrás, Luis Vilo disse:

18 preços finais possíveis: olhem o fluxograma que anexei abaixo

Parece mais uma árvore de possibilidades do que um fluxograma. Acho interessante fazer esse tipo de coisa para já saber quais são as possibilidades.

 

Vamos ao programa:

 

Acho melhor não usar acentuação quando se está declarando variáveis, e 'ç' também não é bom usar, veja lá que você usou o 'ç' em duas variáveis.

 

O preço final é apenas a soma das peças? Então peça ao usuário que diga qual peça ele quer, use um switch/case para avaliar a opção inserida e some tudo no final...

 

Teste isso:

#include <stdio.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL, "Portuguese");
    int op1, op2, op3, total;
    
    printf ("***bem-vindo/a***\n\n");
    printf ("Venha fazer o orçamento do seu novo computador\n\n");
    
    printf ("Qual processador quer?\n");
    printf ("1. i5 (500 reais)\n2. i7 (750 reais)\n3. i9 (1200 reais)");
    retorno1:
    printf("\nDigite a opção: ");
    scanf("%d", &op1);
    switch(op1){
        case 1:
            op1 = 500;
            break;
        case 2:
            op1 = 750;
            break;
        case 3:
            op1 = 1200;
            break;
        default:
            printf("\nOpção inválida!");
            goto retorno1;
    }
    
    printf ("\nQual memoria RAM quer?\n");
    printf ("1. 8 GB (200 reais)\n2. 16 GB (300 reais)");
    retorno2:
    printf("\nDigite a opção: ");
    scanf ("%d", &op2);
    switch(op2){
        case 1:
            op2 = 200;
            break;
        case 2:
            op2 = 300;
            break;
        default:
            printf("\nOpção inválida!");
            goto retorno2;
    }
    
    printf ("\nQual disco rigido quer?\n");
    printf ("1. 256 GB (200 reais)\n2. 512 GB (300 reais)\n3. 1 TB (500 reais)");
    retorno3:
    printf("\nDigite a opção: ");
    scanf ("%d", &op3);
    switch(op3){
        case 1:
            op3 = 200;
            break;
        case 2:
            op3 = 300;
            break;
        case 3:
            op3 = 500;
            break;
        default:
            printf("\nOpção inválida!");
            goto retorno3;
    }
    
    total = op1 + op2 + op3;
    
    printf("\n\nO preço final é: R$%d,00", total);

    return 0;
}
  • Curtir 1
  • Amei 1
Postado
53 minutos atrás, Lucca Rodrigues disse:

@Luis Vilo

Ora... scanf() e printf() não são funções?? Sempre achei chato esse fato dos professores limitarem os alunos a não poderem usar tal coisa. É legal mostrar como uma função x funciona, mas proibir de usar, pra mim não faz muito sentido.

Justo na primeira vez que eu tive um professor que me deixou usar tudo que eu quisesse, eu consegui aprender bem mais do que quando eu era limitado a não poder usar x funções :)

 

Parece mais uma árvore de possibilidades do que um fluxograma. Acho interessante fazer esse tipo de coisa para já saber quais são as possibilidades.

 

Vamos ao programa:

 

Acho melhor não usar acentuação quando se está declarando variáveis, e 'ç' também não é bom usar, veja lá que você usou o 'ç' em duas variáveis.

 

O preço final é apenas a soma das peças? Então peça ao usuário que diga qual peça ele quer, use um switch/case para avaliar a opção inserida e some tudo no final...

 

Teste isso:

#include <stdio.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL, "Portuguese");
    int op1, op2, op3, total;
    
    printf ("***bem-vindo/a***\n\n");
    printf ("Venha fazer o orçamento do seu novo computador\n\n");
    
    printf ("Qual processador quer?\n");
    printf ("1. i5 (500 reais)\n2. i7 (750 reais)\n3. i9 (1200 reais)");
    retorno1:
    printf("\nDigite a opção: ");
    scanf("%d", &op1);
    switch(op1){
        case 1:
            op1 = 500;
            break;
        case 2:
            op1 = 750;
            break;
        case 3:
            op1 = 1200;
            break;
        default:
            printf("\nOpção inválida!");
            goto retorno1;
    }
    
    printf ("\nQual memoria RAM quer?\n");
    printf ("1. 8 GB (200 reais)\n2. 16 GB (300 reais)");
    retorno2:
    printf("\nDigite a opção: ");
    scanf ("%d", &op2);
    switch(op2){
        case 1:
            op2 = 200;
            break;
        case 2:
            op2 = 300;
            break;
        default:
            printf("\nOpção inválida!");
            goto retorno2;
    }
    
    printf ("\nQual disco rigido quer?\n");
    printf ("1. 256 GB (200 reais)\n2. 512 GB (300 reais)\n3. 1 TB (500 reais)");
    retorno3:
    printf("\nDigite a opção: ");
    scanf ("%d", &op3);
    switch(op3){
        case 1:
            op3 = 200;
            break;
        case 2:
            op3 = 300;
            break;
        case 3:
            op3 = 500;
            break;
        default:
            printf("\nOpção inválida!");
            goto retorno3;
    }
    
    total = op1 + op2 + op3;
    
    printf("\n\nO preço final é: R$%d,00", total);

    return 0;
}

a final fiz um programa bastante parecido com o que você apresentou aqui. muito obrigado pela cooperação.

  • Curtir 1
Postado

Outra forma seria pedir o tipo componente primeiro e a capacidade depois,

 

#include <stdio.h>

int main(){
    int total = 0, i, v;

    while(1){
        printf("\n(1) PROCESSADOR\n(2) MEMORIA\n(3) DISCO\n: ");
        scanf("%d",&i);

        if(!(i>=1 && i<=3)){break;}

        switch(i){
            case 1:
                printf("\n1) i5\n2) i7\n3) i9\n: "); break;
            case 2:
                printf("\n1) 8G\n2) 16G\n: "); break;
            case 3:
                printf("\n1) 256M\n2) 512M\n3) 1T\n: "); break;
        }
        scanf("%d", &v);
        if(i == 1 && v == 1){v = 500;}
        if(i == 1 && v == 2){v = 750;}
        if(i == 1 && v == 3){v = 1200;}
        if(i == 2 && v == 1){v = 200;}
        if(i == 2 && v == 2){v = 300;}
        if(i == 3 && v == 1){v = 200;}
        if(i == 3 && v == 2){v = 300;}
        if(i == 3 && v == 3){v = 500;}
        total += v;
  }  
  printf("TOTAL = %d\n", total);
  return 0;
}

 

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!