← Desenvolvimento

[Dúvida] Programa simples em C

Lida 3703 vezes

Offline

Zompixau 
Membro
Mensagens 511 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Boa noite,

Estou aqui a tentar fazer um programa simples em C, que converte graus Centigrados em Fahrenheit e vice-versa.

Eu peço para introduzirem um c ou f conforme o que querem converter. O meu problema acho que tem a ver com a colocação das chavetas, ainda nao sei muito bem como funciona. Temos de delimitar as instruções certo?

Agradecia que me dessem um empurram...

Código: [Seleccione]

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

int main() {

char uni;
float grau;
float f;
float c;

printf("converter de centigrados para fahrenheit digite f\n");
printf("converter de fahrenheit para centigrados digite c\n");
scanf("%c", &uni);

f=grau*1.8+32;
c=(grau-32)/1.8;
   
if(uni == f)}
printf("Graus em Fahrenheit\n");
scanf("%f, &grau");

printf("Grau em Centigrados:\n");
printf("%f", c);

if(uni == c)
printf("Graus em Centigrados\n");
scanf("%f, &grau");

printf("Grau em Fahrenheit:\n");
printf("%f", f);

}

exit (0);

}
Offline

andre_mz 
Membro
Mensagens 688 Gostos 0
Feedback +3

Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Código: [Seleccione]
if(uni == f){
printf("Graus em Fahrenheit\n");
scanf("%f, &grau");

printf("Grau em Centigrados:\n");
printf("%f", c);
}
if(uni == c){
printf("Graus em Centigrados\n");
scanf("%f, &grau");

printf("Grau em Fahrenheit:\n");
printf("%f", f);
}

Este é um dos problemas, chavetas completamente erradas.

SE (condição){

Troço de código
}

Faz sentido, hein? :P
Offline

Zompixau 
Membro
Mensagens 511 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Pois, ainda nao entendi bem as chavetas.

Abro as chavetas antes da condição?...
Offline

johndays 
Membro
Mensagens 387 Gostos 1
Feedback +3

Troféus totais: 24
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts

Tenta assim :

Código: (cpp) [Seleccione]
#include <stdio.h>
#include <stdlib.h>

int main() {

char uni;
float grau;
float f;
float c;

printf("converter de centigrados para fahrenheit digite f\n");
printf("converter de fahrenheit para centigrados digite c\n");
scanf("%c", &uni);

f=grau*1.8+32;
c=(grau-32)/1.8;

if(uni == f){
printf("Graus em Fahrenheit\n");
scanf("%f, &grau");

printf("Grau em Centigrados:\n");
printf("%f", c);}

if(uni == c){
printf("Graus em Centigrados\n");
scanf("%f, &grau");

printf("Grau em Fahrenheit:\n");
printf("%f", f);

}

exit (0);

}


No entanto o código não faz muito sentido como está escrito.
Offline

andre_mz 
Membro
Mensagens 688 Gostos 0
Feedback +3

Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

De resto não estou a ver problema. Claro que podias ter feito verificação da ausência de erros. (if scanf == NULL { return}) e alocado a memória com malloc e libertado com free. Mas se estás a aprender preocupa-te com o essencial de início, boa sorte. :)
Offline

andre_mz 
Membro
Mensagens 688 Gostos 0
Feedback +3

Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Pois, ainda nao entendi bem as chavetas.

Abro as chavetas antes da condição?...

Não. Tudo isto vai lá com sentido.

Ora pensa.

SE (condição) {

Acontece isto..

}

Ou talvez percebas melhor assim:

SE (condição)

{

Acontece isto..

}

 ;)
Offline

Nelson de Sousa 
Membro
Mensagens 833 Gostos 0
Feedback +5

Troféus totais: 27
Trófeus: (Ver todos)
Windows User Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

As saudades que tenho de C. Acho que vou pegar em C hoje um bocadinho para relembrar bons velhos tempos. :)

P.S: Aconselho o livro do Luís Damas para iniciantes, para fazer assim programas super simples, vai explicando tudo tin-tin por tin-tin. Claro, muito básico, mas para começar, dá logo uma boa base. ;)
Offline

Zompixau 
Membro
Mensagens 511 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Agora, quando executo o programa e ponho c ou f nao faz nada :S

Quando compilo aparece "warning: too few arguments for format" nesta linha:       scanf("%f, &grau");

O que será?
Offline

andre_mz 
Membro
Mensagens 688 Gostos 0
Feedback +3

Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Não sei se esse livro vale a pena.. nunca tive esse livro e os meus conhecimentos em C não são limitados, digo eu. Mas força, sei de muito boa gente que também aconselha. ;)
Offline

andre_mz 
Membro
Mensagens 688 Gostos 0
Feedback +3

Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

scanf("%f, &grau");

Experimenta assim:

scanf("%f", &grau);

Tens que tomar atenção às aspas. ;)

Nem tinha reparado nisso. :-P
Offline

Zompixau 
Membro
Mensagens 511 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Mas o programa nao está a correr quando ponho c ou f...

Podes experimentar para ver se funciona?
Offline

andre_mz 
Membro
Mensagens 688 Gostos 0
Feedback +3

Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Estou no Windows e estou bastante ocupado. Não me dá jeito agora, desculpa.

Faz

if (uni=='f') ou if (uni=="f\n") ou if (uni=="f\0")

Não estou com muito tempo e não me lembro bem qual das 3 opções é, penso ser a do meio. Testa assim. ;)

Se fazes (uni == f) não faz sentido, já que um é char outro é float.
Offline

Zompixau 
Membro
Mensagens 511 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Já consigo seleccionar c ou f, mas agora nao está a fazer bem a conversão... As equações estão bem indicadas e no sítio certo?

Código: [Seleccione]
#include <stdio.h>
#include <stdlib.h>
 
int main() {
 
char uni;
float grau;
float f;
float c;
 
printf("converter de centigrados para fahrenheit digite f\n");
printf("converter de fahrenheit para centigrados digite c\n");
scanf("%c", &uni);
 
  f=((grau*1.8)+32);
c=((grau-32)/(1.8));
 
if(uni=='f'){
printf("Graus em Fahrenheit\n");
scanf("%f", &grau);
 
printf("Grau em Centigrados:\n");
printf("%f", c);}
 
if(uni=='c'){
printf("Graus em Centigrados\n");
scanf("%f", &grau);
 
printf("Grau em Fahrenheit:\n");
printf("%f", f);


}
 
exit (0);
 
}
Offline

andre_mz 
Membro
Mensagens 688 Gostos 0
Feedback +3

Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Pensa bem.. tu pedes o valor de graus (scanf) depois de fazeres a conta, ou seja, chega lixo à conta. Põe a conta depois de saberes o valor da variável c ou f. ;)
Offline

Zompixau 
Membro
Mensagens 511 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Já tá operacional :D

Gracias, vou tentar fazer outro agora.