Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Rui Ribeiro

Converter euros em dolares

Mensagens Recomendadas

Rui Ribeiro

Boa noite, registei me à menos de uma hora e já estou a pedir ajuda :(

Estava a programar em C, até que me surge o seguinte exercício:

Efectue a apresentação do valor da conversão em euros de um de um valor lido em dólares.

A minha questão é como por o programa a dar-me o valor com virgulas, e não arredondado ficando inteiro. Aqui está o que eu fiz, e o que penso fazer para isto dar certo(apesar de não dar certo xD)

EM INTEIROS:

#include <stdio.h>
#include <stdlib.h>
int a;
int main()
{
    printf("Digite um numero\n");
    scanf("%d",&a);
    a = a * 0.7357;
    printf("%d\n\n",a);
    system("PAUSE");
}    

EM DECIMAIS (pretendido(?correcto?)):

#include <stdio.h>
#include <stdlib.h>
float a;
float main()
{
    printf("Digite um numero\n");
    scanf("%d",&a);
    a = a * 0.7357;
    printf("%d\n\n",a);
    system("PAUSE");
}    

Ajudem me a resolver isto, pff. Desde já, obrigado :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Em primeiro, estás a colocar o valor numa variável inteira. Em segundo, estás a imprimir a variável como valor inteiro. O que pretendes é um float e não um int, e um %f e não um %d.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Ribeiro

ou seja isto?

#include <stdio.h>
#include <stdlib.h>
float a;
int main()
{
    printf("Digite um numero\n");
    scanf("%f",&a);
    a = a * 0.7357;
    printf("%f\n\n",a);
    system("PAUSE");
}    

nao deveria ser float main()?

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

1) le o tutorial de GeSHi

2) evita variaveis globais: para programas com menos de (... contar ...) 12 linhas tornam as coisas mais faceis; para programs com mais de 12 linhas tornam as coisas mais complicadas :(

3) Sem uma razao forte para escolher float, prefere double.

EM DECIMAIS

declaraste a variavel a como float, por isso nao a podes imprimir com "%d". Usa "%f", possivelmente com limites de tamanho e casa decimais: a variavel float a e automaticamente convertida para double

    printf("%7.2f\n\n", a); /* total 7 colunas (ou mais); com 2 casas decimais: ####.## */


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
skiller10

Antes de mais, falta-te o return na função main.

Quanto metes void/int/float/etc. antes do nome da função, neste caso o main, significa que é o valor que a função vai devolver.

Para o main recomendo-te a usares assim:

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

int main()
{
      return 0;
}

Em relação ao problema que colocaste o KTachyon já te respondeu :(

Já agora, quando quiseres colocar código no post, quando está a publicar tens um uma combobox que diz "inserir codigo" :P


"Eu acredito que a vida está constantemente nos testando em nosso nível de confiança, e a vida tem grande recompensa reservada àqueles que demonstram uma confiança sem fim para agir até conseguir. Este nível de resolução pode mover montanhas, mas ele tem de ser constante e consistente. Tão simples quanto isso possa soar, ainda é o denominador comum que separa aqueles que vivem seus sonhos dos que vivem simplesmente.."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

nao deveria ser float main()?

NAO!

a funcao main é especial. Ela tem de ser sempre definida como uma das hipoteses abaixo (os nomes argc e argv podem variar)

int main(void) { /* ... */ }

int main(int argc, char **argv) { /* ... */ }

int main(int argc, char *argv[]) { /* ... */ }


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Antes de mais, falta-te o return na função main.

Eu uso sempre o return 0; (ou outro valor) na funcao main, mas, na realidade, ele nao e necessario desde que foi publicado o ultimo Standard (em 1999). Ao chegar ao "}" final da funcao main sem encontrar um return, a linguagem assume um "return 0;".


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Ribeiro

Obrigado pessoal, so mais uma coisinha. Como e que eu faço para no meu DEV C++ 5, quando abrir uma pagina ela vir ja com isto:

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

int main()
{
      return 0;
}

so encontro como se faz isto para o Dev C++ 4, para o 5 não :s

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Ribeiro

Tens razão :(

A minha prof explicou que era para aceder as bibliotecas. Podem me dizer qual é cada uma?

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
andre_mz

O stdio vês pelo nome que é para funções de entrada e saída tipo printf.

Para o stdlib tens aqui uma lista de funções: http://pt.wikipedia.org/wiki/Stdlib.h

Se fizeres man stdlib ou help stdlib (o mesmo para o stdio) penso que te dará a lista de funções que cada uma contém (acredita que é enorme).

Não sei se o man ou help funciona com bibliotecas padrão, nunca testei por acaso.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Os headers fornecem (entre outras coisas) os prototipos das funcoes definidas na(s) biblioteca(s).

Os prototipos servem para o compilador saber como ligar o codigo-fonte as funcoes pre-compilados existentes nas bibliotecas.

O header <stdio.h> basicamente contem os prototipos para STanDard Input/Output.

O header <stdlib.h> basicamente contem os prototipos para STanDard LIBrary (funcoes padrao).

Para documentacao sobre C, eu gosto do site POSIX. Tem umas definicoes especificas POSIX, mas estao bem assinaladas e sao, portanto, facilmente evitaveis se queres fazer um program cross-platform.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.