TOPIC

Presentation error...O que pode ser?

Matteus Gutëmberg asked 4 months ago

#include <stdio.h>

int main() {
    int codigo;
    scanf("%d", &codigo);
    int quantidade;
    scanf("%d", &quantidade);
    double preco;

    if(codigo == 1) {
        preco = 4.00;
        double total = preco * quantidade;
        printf("Total: R$ %.2f ", total);
    }
    else if(codigo == 2) {
        preco = 4.50;
        double total = preco * quantidade;
        printf("Total: R$ %.2f ", total);
    }
    else if(codigo == 3) {
        preco = 5.00;
        double total = preco * quantidade;
        printf("Total: R$ %.2f ", total);
    }
    else if(codigo == 4) {
        preco = 2.00;
        double total = preco * quantidade;
        printf("Total : R$ %.2f ", total);
    }
    else {
        preco = 1.50;
        double total = preco * quantidade;
        printf("Total: R$ %.2f ", total);
    }
    return 0;
}

Remember not post solutions. Your post may be reviewed by our moderators.

  • Aléxis Toigo replied 4 months ago

    Você está mostrando um caracter espaço no final de cada saida, além de não estar dando a quebra de linha. Troque em todos os casos:

    printf("Total : R$ %.2f ", total);

    Por:

    printf("Total : R$ %.2f\n", total);

    Todos os problemas aqui do UOJ necessitam de quebra de linha "\n" em seu finale também estar com a mesma quantidade de espaços, ou outros caracteres, perfeitamente igual as entradas, para a comparação do juiz, caso contrario irá receber Presentation Error.

  • Moacir Junior replied 3 months ago

    Tudo certo, Matteus?

    O comentário do Aléxis Toigo já matou o problema. Mas queria somente sugerir que você não faça uma mensagem a cada if. Você pode montar a mensagem no final, uma vez que você já tem o total na variável total. Pode inclusive trocar os if else por um switch se achar interessante.

    Uma outra dica que acho válido é criar o hábito de inicializar as variáveis quando programando em C/C++. Isto porque nestas linguagens as variáveis são reservadas na memória, mas seus valores dependem do que já estava armazenado lá, ou seja, são inicializadas com "lixo". Todas as variáveis estão recebendo valores em algum momento no fonte, mas mesmo assim eu inicializo as variáveis para não perder o hábito. Em várias outras linguagens não tem esta necessidade.

    Valeu!