Programação em C

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?
 
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);
}
 
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:
Back
Topo