1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Programação em C

Discussão em 'Programação' iniciada por mister_tx360, 21 de Outubro de 2012. (Respostas: 3; Visualizações: 797)

  1. mister_tx360

    mister_tx360 Power Member

    Leia números reais muito rigidamente e sempre como caracteres. Os números reais são SEMPRE compostos por três algarismos da parte inteira, por uma vírgula, e por dois algarismos da parte fraccionária.
    c c c , c c
    Se o utilizador colocar algo diferente (por exemplo uma letra) o programa deve sair, mostrando uma mensagem indicando a razão porque acabou. Pode ser útil pensar numa instrução como a mostrada em baixo assumindo que se leu o carácter k2.
    if ((k2>='0') && (k2<='9'))
    Se o utilizador colocar os seis caracteres correctos o programa deve apresentar o número na forma tradicional e na forma científica, usando uma variável float, agradecer ao utilizador e sair.
    MUITO IMPORTANTE
    O programa deve ser feito com um ciclo. Em cada vez que o ciclo corre é lido um carácter (por exemplo o quarto carácter é uma vírgula). Consoante a “vez” do ciclo esse carácter vale algo e vai-se construindo o float final. No final escreve-se o valor.

    Este foi o código que escrevi, mas que não funciona:

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


    main() {


    char c1, c2, c3, c4, c5, c6;


    printf("Introduza um número, da ordem das centenas, e com duas casas decimais: \n");
    scanf("%c", &c1);
    scanf("%c", &c2);
    scanf("%c", &c3);
    scanf("%c", &c4);
    scanf("%c", &c5);
    scanf("%c", &c6);
    while(c1 !=48 && c4 ==58) {/* 58= virgula e 48 = a zero*/


    if(c1>0 && c1<=9)
    printf("O número que inseriu foi %c %c %c %c %c %c \n", c1, c2, c3, c4, c5, c6);
    printf("E em notação científica fica ou %c %c %c %c %c *10^-2\n", c1, c2, c3, c5, c6);

    }


    }

    Desculpem o tamanho do Post. Alguém me pode ajudar?
     
  2. mister_tx360

    mister_tx360 Power Member

  3. Ace-_Ventura

    Ace-_Ventura Power Member

    o que eu vejo mal:
    Código:
    if(c1>0 && c1<=9)
     printf("O número que inseriu foi %c %c %c %c %c %c \n", c1, c2, c3, c4, c5, c6);
     printf("E em notação científica fica ou %c %c %c %c %c *10^-2\n", c1, c2, c3, c5, c6);
    Assumo que tu queiras que só apareçam as 2 frases caso o if seja verdade. Além de que deves querer fazer do '0' e do '9' ou seja
    Código:
    if(c1>'0' && c1<='9')
    {
     printf("O número que inseriu foi %c %c %c %c %c %c \n", c1, c2, c3, c4, c5, c6);
     printf("E em notação científica fica ou %c %c %c %c %c *10^-2\n", c1, c2, c3, c5, c6);
    }
     
  4. dagas46

    dagas46 Power Member

    O ciclo deve ser feito para receber os números e não para imprimi-los. Da maneira como fizeste, ao introduzir um número correcto vai estar sempre a imprimir o mesmo número. O programa não funciona porque o código ASCII do caracter ',' é o 44 e não o 58

    P.S:Atenção ao if dentro do while
     
    Última edição: 21 de Outubro de 2012

Partilhar esta Página