Boa dia, este exercício é para iniciantes mas que requer uma certa linha de pensamento(tabela ASCII).
Neste exercício pretende-se criar um código em C que:
Lê nº reais sendo caracteres;
Estes números são sempre feitos desta forma : aaa,aa(3 algoritmos na parte inteira e outra na parte 2) ;
Se colocarmos algo diferente de um número o programa deve sair;
têm de ser feito com o auxilio de um ciclo;
De cada vez que o ciclo corre é lemos um carácter;
Por fim, escreve-se o valor do float final, tanto na forma normal como cientifica.
Já tinha visto este exercício feito online algumas vezes, mas como todos que guardavam caracteres em variáveis diferentes, acho que consegui chegar a forma mais eficaz( menos variáveis) de resolver o mesmo. Por isso, decidi partilhar o mesmo:
/* Leitura de caracteres na forma de um float (aaa,aa)*/#include<stdio.h>#include<stdlib.h>/*exit(1)*/int main (){char c;int i;float m=1000, r=0;
printf("Escreva um numero com casas até às centenas e 2 casas decimais: ");for(i=0;i<6;i++){
scanf("%c",&c);if(((c<'0')&&(c>'9'))&&((i!=3)&&(c!=','))){
printf("Não introduziu um numero com as caracteristicas pedidas\n");
exit(1);}if(i!=3){
m=m/10.;
r=((int)(c-'0'))*m+r;/*tabela ASCII*/
printf("\n %.2f \n",r);}}
printf("\n O numero é %.2f ou na forma cientifica %.4E \n",r,r);}/*Linha 17 comentada: Pretendeu-se criar um float(r) à medida que se ia recebendo
cada caracter c. Para isso multiplicamos o número por m( que varia à medida que
deslocamos à direita do número, ou seja , ((int)(c-'0'))*100 dá o algorismo das
centenas. Além disso, como os números são lidos em caracteres então o inteiro a
que corresponde ao nosso caracter é diferente do valor que ele corresponde caso
fosse um inteiro, por exemplo (o caracter 1= 49 inteiro) daí se subtrair o caracter
anterior a este(0).Assim, já passamos a ter o caracter que corresponde ao número
inteiro que pretendemos.O int é para passar esse caracter(c-'0') para o inteiro
correspondente. Por fim, soma-se a r o valor anterior de r. Dando assim,
r=((int)(c-'0'))*m+r.
******************************Assissi**********************************************
Pergunta
Assissi
Boa dia, este exercício é para iniciantes mas que requer uma certa linha de pensamento(tabela ASCII).
Neste exercício pretende-se criar um código em C que:
Já tinha visto este exercício feito online algumas vezes, mas como todos que guardavam caracteres em variáveis diferentes, acho que consegui chegar a forma mais eficaz( menos variáveis) de resolver o mesmo. Por isso, decidi partilhar o mesmo:
Obrigado, espero que tenham gostado
Assissi
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.