• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

SitoMan

Escudos para Euros

5 mensagens neste tópico

Viva!

Resolvi fazer um programa que converte escudos em euros...

/*
   Name: escudos para euros
   Author: SitoMan
   Date: 02-11-08 15:35
   Description: Este programa converte escudos em euros
*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
    float escudos;
    printf("Bem-Vindo ao escudos para euros.\n");
    printf("Este programa converte $(escudos) em €(euros).\n");
    printf("Clica \"i\" para iniciares o programa");
    while (getchar () !='i');
    printf("\nInsere o numero de escudos:");
    scanf("%f",&escudos);
    printf("%f escudos sao %f euros\n",escudos,escudos/200.482);
    system("pause");
  return 0;
}

}

Não me esta a dar bem...

1º - Gostava que me indicassem o que esta MAL feito, e como fazer o BEM feito.

2º - Tive conhecimento que esta não era a melhor maneira de fazer o programa. Depois de me indicarem a forma correcta de executar aquele programa, diziam-me esta outra forma!

Gostava da vossa ajuda,

SitoMan! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, de novo!

O primeiro programa esta resolvido!

Estava a cometer um erro...

Estava a meter %.f em vez de %f...

1º - RESOLVIDO

2º - Aceito propostas melhores como fazer o programa!

Cumpz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Essa coisa de premir 'i' para iniciar o programa não está lá a fazer absolutamente nada, só está a mais.

Tirando isso lês um valor e divide-lo pela taxa de conversão, não estou a ver o que possa estar mal nisso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O stdout normalmente é "line buffered". O C (e o sistema operativo da tua implementação) não garantem que o output do printf() seja realmente impresso sem um '\n' ou sem um fflush().

No teu programa não dá muito jeito meter um '\n' no prompt, portanto, para garantir que o utilizador vê esse prompt faz um fflush() logo a seguir.

/* ... */
printf("\nInsere o numero de escudos: ");
fflush(stdout);
scanf("%f", &escudos);
/* ... */

Sugestão 1: mete o "200.482" como uma constante ou um #define em vez de escreveres o valor directamente no printf().

hehehe -- se alguma vez esse valor mudar é mais fácil alterar :)

/* #includes */
#define TAXA_EURO_ESCUDO 200.482
/* ... */
printf("%f escudos sao %f euros\n", escudos, escudos / TAXA_EURO_ESCUDO);
/* ... */

Sugestão 2: No printf podes formatar o número para imprimir só 2 casas decimais

/* ... */
printf("%f escudos sao %.2f euros\n", escudos, escudos / TAXA_EURO_ESCUDO);
/* ... */

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Gosto de meter aquilo para o people iniciar o programa clicando 'i'.

À próxima faço assim!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora