Programme Geler en C

Résolu/Fermé
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 - 18 nov. 2011 à 19:26
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 - 18 nov. 2011 à 22:59
Bonjour,
je veux écrire un programme C permettant de :
*Saisir une température t en Celsius dans la zone identifiée par t ;
*D'afficher la liste des liquides pouvant geler à cette température sachant que :
-L'eau gèle à 0 C
-Le fuel gèle à -5 C
-L'essence super gèle à -23 C
-L'essence ordinaire gèle à -13 C
-L'eau salée gèle à -3 C

EXEMPLE :

Pour t = -23 on aura : les liquides pouvant geler sont : l'eau + le fuel + l'essence super.

Merci.
PS : vous pouvez négliger la partie saisie, c'est facile à faire.

12 réponses

vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
18 nov. 2011 à 19:36
la blague...

tu ne veux pas 100 balles et un mars ?

ccm ne fais pas les devoirs (ya déjà quelque chose entre tes oreilles pour les faire)
0
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 1
Modifié par mafia_boy le 18/11/2011 à 19:43
Oo euh c'est pas un devoir je suis étudiant et en pleine période révision, ccm m'aide toujours dans mes études, j'ai fait un essaye mais ça n'a pas marché comme je le voulais :
"#include <stdio.h>
void main ()
{
int t;
printf ("donner une temperature en degre Celsius : ");
scanf ("%d",&t);
switch (t)
{
case 0 : printf ("l'eau géle a 0 C");break;
case -5 : printf ("le fuel géle a -5 C");break;
case -23 : printf ("l'essence super géle a -23 C");break;
case -13 : printf ("l'essence ordinaire géle a -13 C");break;
case -3 : printf ("l'eau salée géle a -3 C");break;
default : printf ("%d ne correspond pas a un liquide de la liste",t);
}" (ça me donne à la fin qu'un seul liquide comme résultat)
en fait, vordano si tu peux m'aider ça serait gentil de ta part sinn épargne nous tes commentaires inutiles et merci Mr.Le Génie ;)
0
puis je ne voix pas la logique ici
je croix que Pour t = -23 tous les lequides que vous vennez de lister peuvent geler a cette temperature n'est ce pas
0
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 1
18 nov. 2011 à 19:50
oui c'est ça, je veux arriver à ce resultat mais j'ai pas trouvé une solution :/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
18 nov. 2011 à 19:55
là c'est une question convenable mafia_boy ^^

en faite dans ton code tu compare t a une seule valeur, ce qui fait que c'est normal qu'un seul printf ne soit utilisé (si tu met t=-1, ca te dira "-1 ne correspond pas a un liquide de la liste" alors qu'il est sensé te donner la ligne pour l'eau.

en utilisant un if comme ceci:
if(t<=0){
printf("l'eau blabla");
}
if(t<=-3){
printf("l'eau salé ezaeazeazeaz");
}
etc...
le prog écrira un printf pour chacun des if (donc n'utilise pas de else if, sinon ca fera comme ton case)

voilà mon idée, est ce que ca t'es utile ?
0
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 1
18 nov. 2011 à 19:58
Et bien merci vordano, ça c'est un membre de ccm :D je vais de suite appliquer ce que tu m'as dit et je te tiendrais au courant :) merci
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
18 nov. 2011 à 20:02
de rien ça m'as fait plaisir :)
0
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 1
18 nov. 2011 à 20:14
si on fait comme tu m'as dit, t<=0 ... t<=-3 ... etc.... je crois que ce n'est pas logique parceque même si on donne t= -2 ou t = 0 àa sera toujours inférieur à -23 donc .. :/ alors j'ai changé un peu et j'ai un fais un encadrement comme ceci :
"#include <stdio.h>

int main()
{
int t ;
printf("donner une temperature en degres celsus : \n");
scanf("%i", &t);

if (t<=0)
{printf("L'eau gele ");}
if (0<=t<=-3)
{printf("eau et eau salee ");}
if (0<=t<=-5)
{printf("eau et eau salee et fuel ");}
if (0<=t<=-13)
{printf("eau et eau salee et fuel et essence ordinaire");}
if (0<=t<=-23)
{printf("tous les liquides");}

}"

Mais ça me donne tjrs, l'eau gèle :/
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
18 nov. 2011 à 20:35
tien je m'étonne que le compilateur ne t'ai pas jeté pour un problème de syntaxe... (enfin je ne fais pas de C donc je sais pas si 0<=t<=-5 est permis)

avec ma méthode, si on met -23 comme température, ca passera par chacun des 5 if et ca affichera donc les 5 printf.

avec ta méthode:
mise a part ton test booléen qui a une structure bizarre et qui ne marche pas dans les autres languages
les test booléen après ton printf("l'eau gele"); sont faux
tu dis: si( 0 est inférieur a t qui lui même est inférieur a -23) donc là tu dis clairement si (0 est inférieur a -23), donc ca te renvéra toujours false

concernant la structure de ton test booléen (c'est a dire 0<=t<=-5), je pense que ca se comporte comme un seul test, mais dans le cas ou tu dois mettre un int et un string dans ton test, il faudras que tu t'y prenne autrement :P
0
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 1
18 nov. 2011 à 21:59
arf :S merci pour tes conseils, je vais voir autrement ! :)
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
18 nov. 2011 à 22:03
tu peux faire un mix entre ton case et le fait d'utiliser un seul printf qui affiche que l'eau et l'eau salé gel.

après le case tu rajoute le test booléen t<=-23 puis le second prendra t<=-15 etc..., jusqu'a avoir le dernier case t<=0 (et pas faire le contraire et commencer par tester le 0, sinon quelque soit la valeur négative, ce sera le 0 qui sera pris)
0
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 1
18 nov. 2011 à 22:09
ah d'accord bonne idée
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
Modifié par nicocorico le 18/11/2011 à 22:14
Oui, il faut en fait que tu prennes le problème dans l'autre sens, et avec des 'else' :

if (t<=-23)
{printf("tous les liquides gèlent ");} else
if (t<=-13)
{printf("eau, eau salée, fuel et essence ordinaire gèlent ");} else
if (t<=-5)
{printf("eau, eau salée et fuel gèlent ");}else
if (t<=-3)
{printf("eau et eau salée gèlent ");}else
if (t<=0)
{printf("L'eau gèle ");} else
{printf("Aucun ne gèle ");}

Le chêne aussi était un gland, avant d'être un chêne
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
18 nov. 2011 à 22:14
oui, soit des if()... else, soit un switch case
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
Modifié par nicocorico le 18/11/2011 à 22:23
Plutôt avec If..else, car le switch n'autoriserais qu'une valeur pour chaque entrée, et ne prendrait pas en compte les intermédiaires comme -9 par exemple, à moins d'ajouter toutes les possibilités intermédiaires sur chaque entrée...
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
18 nov. 2011 à 22:28
oui probablement :/
pour ce que j'ai dis, je me suis basé sur des expériences faites en vba ya quelque temps, mais bon vu que c'est un language très permissif, c'était surement pas correct
0
mafia_boy Messages postés 104 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 30 avril 2013 1
18 nov. 2011 à 22:28
Merci vous deux, ça marche enfin :D
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
18 nov. 2011 à 22:43
tant mieux, et si tu allais résoudre mon problème d'identification d'instance de classe ici:
https://forums.commentcamarche.net/forum/affich-23686779-java-gwt-retrouver-l-instance-d-un-event
j'ai besoin d'aide :(
0