Faire une repetition dans un code C
Résolu/Fermé
amanda17
Messages postés
70
Date d'inscription
vendredi 29 octobre 2010
Statut
Membre
Dernière intervention
31 octobre 2010
-
29 oct. 2010 à 22:24
amanda17 Messages postés 70 Date d'inscription vendredi 29 octobre 2010 Statut Membre Dernière intervention 31 octobre 2010 - 30 oct. 2010 à 11:30
amanda17 Messages postés 70 Date d'inscription vendredi 29 octobre 2010 Statut Membre Dernière intervention 31 octobre 2010 - 30 oct. 2010 à 11:30
A voir également:
- Faire une repetition dans un code C
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Comment créer un qr code - Guide
8 réponses
Utilisateur anonyme
Modifié par s6t6n le 30/10/2010 à 11:29
Modifié par s6t6n le 30/10/2010 à 11:29
J'ai tenté de reproduire ton programme, c'est le même que le tiens sauf qu'il demande si il recommance ou non. Je l'ai fait assez vite donc quelques details peuvent être changer bien sur.
#include <stdio.h>
int calcul(nombre1)
{
double resultat = 0;
double resultat1 = 0;
double nombre2 = 3.667;
int nombre3 = 510;
double nombre4 = 0.275;
double resultat0 = 0;
resultat = nombre1 / nombre2 * nombre3;
resultat1 = resultat * nombre4;
resultat0 = resultat + resultat1;
return(resultat0);
}
int main()
{
double nombre1 = 0;
int repet = 1;
printf("Creer par Amanda Copyright 2010\n\n\n");
while(repet==1)
{
// On demande les nombres 1 et 2 à l'utilisateur :
printf("\nEntrez la somme en dirham : ");
scanf("%d", &nombre1);
fflush(stdin);
printf("\n\n\n");
calcul(nombre1);
printf("La somme en CFA est de : %ld\n", calcul());
printf("\n\n\n");
printf("Voulez-vous recommencer ?\n1.Oui\n2.Non\n");
scanf("%d",&repet);
fflush(stdin);
}
return 1;
}
Ne connaissant pas ce que represente CFA je ne peux vérifié si la conversion est bonne, sinon je trouve le même resultat que toi.
#include <stdio.h>
int calcul(nombre1)
{
double resultat = 0;
double resultat1 = 0;
double nombre2 = 3.667;
int nombre3 = 510;
double nombre4 = 0.275;
double resultat0 = 0;
resultat = nombre1 / nombre2 * nombre3;
resultat1 = resultat * nombre4;
resultat0 = resultat + resultat1;
return(resultat0);
}
int main()
{
double nombre1 = 0;
int repet = 1;
printf("Creer par Amanda Copyright 2010\n\n\n");
while(repet==1)
{
// On demande les nombres 1 et 2 à l'utilisateur :
printf("\nEntrez la somme en dirham : ");
scanf("%d", &nombre1);
fflush(stdin);
printf("\n\n\n");
calcul(nombre1);
printf("La somme en CFA est de : %ld\n", calcul());
printf("\n\n\n");
printf("Voulez-vous recommencer ?\n1.Oui\n2.Non\n");
scanf("%d",&repet);
fflush(stdin);
}
return 1;
}
Ne connaissant pas ce que represente CFA je ne peux vérifié si la conversion est bonne, sinon je trouve le même resultat que toi.
oliver3923
Messages postés
971
Date d'inscription
vendredi 14 mai 2010
Statut
Membre
Dernière intervention
15 novembre 2014
143
29 oct. 2010 à 22:32
29 oct. 2010 à 22:32
Alors d'abord un bon conseil (tu verra ca finira par être super utile dans des programmes plus longs) : pour tes variables met pasnombre1, nombre2...
utilise des noms de variables clairs qui te permettent de savoir tout de suite ce que représente ta variable
pour tes variables tu peux les initialiser a la bonne valeur dès le début pas besoin d'initialiser a 0 et de changer leur valeur après
par contre que veut tu dire par faire une répétition?
ps : ca fait longtemps que j'ai pas fais de C mais il me semble qu'il faut un system ("PAUSE") sinon ton programme se ferme tout de suite (mais absolument plus sur et si il faut je suis plus sur que ca s'écrive comme ca^^)
utilise des noms de variables clairs qui te permettent de savoir tout de suite ce que représente ta variable
pour tes variables tu peux les initialiser a la bonne valeur dès le début pas besoin d'initialiser a 0 et de changer leur valeur après
par contre que veut tu dire par faire une répétition?
ps : ca fait longtemps que j'ai pas fais de C mais il me semble qu'il faut un system ("PAUSE") sinon ton programme se ferme tout de suite (mais absolument plus sur et si il faut je suis plus sur que ca s'écrive comme ca^^)
Utilisateur anonyme
Modifié par s6t6n le 29/10/2010 à 22:29
Modifié par s6t6n le 29/10/2010 à 22:29
Pour attendre l'appui d'une touche " getchar() " . En clair sa met le programme en pause et attend un appui
amanda17
Messages postés
70
Date d'inscription
vendredi 29 octobre 2010
Statut
Membre
Dernière intervention
31 octobre 2010
11
29 oct. 2010 à 22:43
29 oct. 2010 à 22:43
Merci beaucoup s6t6n
Bon voila oliver en fait le logiciel est censer faire un calcule c'est a dire souvent quand je voyage je vais dans des magasin et la je peux taper le prix et il le convertie en meme temps avec la taxe et tout mais la il faut a chaque fois
que quand je fais un calcule faut que je ferme et relance le prog alors j'aimerais savoir si il existe une maniere de faire tel que si je mets comme valeur 50 il me met le resultat et ensuite il affiche en bas une nouvelle fois Entrez le nombre en dirham : voila quoi pour ne pas a avoir fermer et ouvrir tout le temps merci beaucoup j'attend vos reponses avec impatiente :)
Bon voila oliver en fait le logiciel est censer faire un calcule c'est a dire souvent quand je voyage je vais dans des magasin et la je peux taper le prix et il le convertie en meme temps avec la taxe et tout mais la il faut a chaque fois
que quand je fais un calcule faut que je ferme et relance le prog alors j'aimerais savoir si il existe une maniere de faire tel que si je mets comme valeur 50 il me met le resultat et ensuite il affiche en bas une nouvelle fois Entrez le nombre en dirham : voila quoi pour ne pas a avoir fermer et ouvrir tout le temps merci beaucoup j'attend vos reponses avec impatiente :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
amanda17
Messages postés
70
Date d'inscription
vendredi 29 octobre 2010
Statut
Membre
Dernière intervention
31 octobre 2010
11
29 oct. 2010 à 22:43
29 oct. 2010 à 22:43
Je sais pas si o lieu de dire repetition je dois dire Boucle ;)
oliver3923
Messages postés
971
Date d'inscription
vendredi 14 mai 2010
Statut
Membre
Dernière intervention
15 novembre 2014
143
29 oct. 2010 à 22:52
29 oct. 2010 à 22:52
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
double resultat = 0, resultat1 = 0, nombre1 = 0, nombre2 = 0, nombre3 = 0, nombre4 = 0, resultat0 = 0;
nombre2 = 3.667;
nombre3 = 510;
nombre4 = 0.275;
resultat0 = 0;
printf("Creer par Amanda Copyright 2010\n\n\n");
// On demande les nombres 1 et 2 à l'utilisateur :
printf("Entrez la somme en dirham : ");
scanf("%d", &nombre1);
printf("\n\n\n");
// On fait le calcul :
ICI J'AIMERAI FAIRE UNE REPETITION MAIS FAUDRAIT QUON APPUIE SUR NIMPORTE QUELLE TOUCHE AVANT !
resultat = nombre1 / nombre2 * nombre3;
resultat1 = resultat * nombre4;
resultat0 = resultat + resultat1;
// Et on affiche l'addition à l'écran :
printf ("La somme en CFA est de : %d\n", resultat0);
printf ("\n\n\n");
return 0;
}
je reprend ton code pour expliquer^^
en gros il te faut juste une boucle qui te permet de relancer le programme autant de fois que tu veux
j'imagine que tu connais les différentes boucles en C (while, for, do...while)
dans ton cas le plus simple est d'utiliser une boucle while qui prend toute la partie calcul de ton programme mais tu l'a place au mauvais endroit sur ton code au dessus : si tu la met la ou tu l'a écrit ta boucle va uniquement refaire le même calcul et t'afficher le résultat
il faut donc mettre le début de ta boucle plus haut pour entrez a nouveau le prix ce qui te permettra de faire 50 calculs différents a la suite
pour utiliser ta boucle il te faut une condition (while (condition))
tu peux évidemment mettre while (1) qui signifie en gros while (vrai) mais tu ne sortira jamais de ta boucle
donc il faut déclarer une nouvelle variable qui te servira uniquement a ta boucle (pour reprendre ce que je t'ai dit sur les variables on va l'appeler "recommencer"^^)
tu aura donc une boucle while (recommencer == 1) (par exemple)
'ton programme'
il y a évidemment deux problèmes :
le premier il faut penser a initialiser ta variable a 1 (ou n'importe quelle autre valeur tant que c'est la même que dans ta boucle)
ensuite tu sera pris dans une boucle infinie (en gros la valeur de ta variable ne change jamais donc tu pourra faire ton calcul 50 fois mais après tu ne pourra pas fermer ton programme proprement)
tu dois donc rajouter une condition a la fin
tu demande si on veut recommencer ou non
si oui tu ne fait rien donc tu sort de la condition et refait un "tour" de ta boucle
si non tu modifie la valeur de ta variable pour qu'elle soit différente de 1 tu sort de ta condition puis de ta boucle et ton programme se ferme normalement
voila tu as tout ce qu'il te faut pour ton programme
(si tu veux un bon site pour apprendre le C va sur le site du zero c'est un très bon site pour débuter)
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
double resultat = 0, resultat1 = 0, nombre1 = 0, nombre2 = 0, nombre3 = 0, nombre4 = 0, resultat0 = 0;
nombre2 = 3.667;
nombre3 = 510;
nombre4 = 0.275;
resultat0 = 0;
printf("Creer par Amanda Copyright 2010\n\n\n");
// On demande les nombres 1 et 2 à l'utilisateur :
printf("Entrez la somme en dirham : ");
scanf("%d", &nombre1);
printf("\n\n\n");
// On fait le calcul :
ICI J'AIMERAI FAIRE UNE REPETITION MAIS FAUDRAIT QUON APPUIE SUR NIMPORTE QUELLE TOUCHE AVANT !
resultat = nombre1 / nombre2 * nombre3;
resultat1 = resultat * nombre4;
resultat0 = resultat + resultat1;
// Et on affiche l'addition à l'écran :
printf ("La somme en CFA est de : %d\n", resultat0);
printf ("\n\n\n");
return 0;
}
je reprend ton code pour expliquer^^
en gros il te faut juste une boucle qui te permet de relancer le programme autant de fois que tu veux
j'imagine que tu connais les différentes boucles en C (while, for, do...while)
dans ton cas le plus simple est d'utiliser une boucle while qui prend toute la partie calcul de ton programme mais tu l'a place au mauvais endroit sur ton code au dessus : si tu la met la ou tu l'a écrit ta boucle va uniquement refaire le même calcul et t'afficher le résultat
il faut donc mettre le début de ta boucle plus haut pour entrez a nouveau le prix ce qui te permettra de faire 50 calculs différents a la suite
pour utiliser ta boucle il te faut une condition (while (condition))
tu peux évidemment mettre while (1) qui signifie en gros while (vrai) mais tu ne sortira jamais de ta boucle
donc il faut déclarer une nouvelle variable qui te servira uniquement a ta boucle (pour reprendre ce que je t'ai dit sur les variables on va l'appeler "recommencer"^^)
tu aura donc une boucle while (recommencer == 1) (par exemple)
'ton programme'
il y a évidemment deux problèmes :
le premier il faut penser a initialiser ta variable a 1 (ou n'importe quelle autre valeur tant que c'est la même que dans ta boucle)
ensuite tu sera pris dans une boucle infinie (en gros la valeur de ta variable ne change jamais donc tu pourra faire ton calcul 50 fois mais après tu ne pourra pas fermer ton programme proprement)
tu dois donc rajouter une condition a la fin
tu demande si on veut recommencer ou non
si oui tu ne fait rien donc tu sort de la condition et refait un "tour" de ta boucle
si non tu modifie la valeur de ta variable pour qu'elle soit différente de 1 tu sort de ta condition puis de ta boucle et ton programme se ferme normalement
voila tu as tout ce qu'il te faut pour ton programme
(si tu veux un bon site pour apprendre le C va sur le site du zero c'est un très bon site pour débuter)
Utilisateur anonyme
Modifié par s6t6n le 29/10/2010 à 23:48
Modifié par s6t6n le 29/10/2010 à 23:48
J'ai une solution toute bete tu met
int main(blabla)
{
int tesvariable;
int repet = 1;
while(repet==1);
{
Programme
printf("Voulez vous recommencer ce programme ?\n1.Oui\n2.Non\n");
scanf("%d",&repet);
fflush(stdin); // efface la valeur enregistrer dans le scanf, c'est plus propre.
return 0;
}; //fin while
}//fin main
Je ne voit pas l'utilité de mettre " int main(int argc, char *argv[]) " " int main()" suffit
int main(blabla)
{
int tesvariable;
int repet = 1;
while(repet==1);
{
Programme
printf("Voulez vous recommencer ce programme ?\n1.Oui\n2.Non\n");
scanf("%d",&repet);
fflush(stdin); // efface la valeur enregistrer dans le scanf, c'est plus propre.
return 0;
}; //fin while
}//fin main
Je ne voit pas l'utilité de mettre " int main(int argc, char *argv[]) " " int main()" suffit
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
29 oct. 2010 à 23:44
29 oct. 2010 à 23:44
Bonjour,
Des petites corrections à ton programme :
scanf("%d",repet);
Attention, tu as oublié de mettre l'esperluette => scanf("%d",&repet);
fflush(stdin); // efface la valeur enregistrer dans le scanf, c'est plus propre.
Non fflush ne peut pas être utilisé sur un flux d'entrée. Il faut le faire manuellement. Un simple getchar() peut faire l'affaire. Ou mieux un getchar dans une boucle while.
}; //fin while
Pas besoin de point virgule.
Je ne voit pas l'utilité de mettre " int main(int argc, char *argv[]) " " int main()" suffit
Effectivement, pas d'utilité. Par contre, on met : int main(void) et non int main() tout court en C. Cela permet de déclarer entièrement la fonction main.
Cdlt,
Des petites corrections à ton programme :
scanf("%d",repet);
Attention, tu as oublié de mettre l'esperluette => scanf("%d",&repet);
fflush(stdin); // efface la valeur enregistrer dans le scanf, c'est plus propre.
Non fflush ne peut pas être utilisé sur un flux d'entrée. Il faut le faire manuellement. Un simple getchar() peut faire l'affaire. Ou mieux un getchar dans une boucle while.
}; //fin while
Pas besoin de point virgule.
Je ne voit pas l'utilité de mettre " int main(int argc, char *argv[]) " " int main()" suffit
Effectivement, pas d'utilité. Par contre, on met : int main(void) et non int main() tout court en C. Cela permet de déclarer entièrement la fonction main.
Cdlt,
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
29 oct. 2010 à 23:58
29 oct. 2010 à 23:58
Ce n'est pas parce que ça marche qu'il faut faire ainsi.
Le C est un langage normé. Et la norme dit qu'il faut mettre : int main (void) ou int main (int argc, int **argv) (ou *argv[]).
void main() est faux car le programme appelant attend une valeur retour (0 pour dire que tout s'est bien déroulé)
.
sa dépend des compilateur
Non ça ne dépend pas des compilateurs. Si le compilateur est conforme alors il devra t'avertir pour le void main() et générer un warning. Si ce n'est pas le cas, peut-être que les options sont mal paramétrées, sinon il vaut mieux en changer et en prendre un standard.
Cdlt,
Le C est un langage normé. Et la norme dit qu'il faut mettre : int main (void) ou int main (int argc, int **argv) (ou *argv[]).
void main() est faux car le programme appelant attend une valeur retour (0 pour dire que tout s'est bien déroulé)
.
sa dépend des compilateur
Non ça ne dépend pas des compilateurs. Si le compilateur est conforme alors il devra t'avertir pour le void main() et générer un warning. Si ce n'est pas le cas, peut-être que les options sont mal paramétrées, sinon il vaut mieux en changer et en prendre un standard.
Cdlt,
amanda17
Messages postés
70
Date d'inscription
vendredi 29 octobre 2010
Statut
Membre
Dernière intervention
31 octobre 2010
11
30 oct. 2010 à 02:19
30 oct. 2010 à 02:19
Merci beaucoup beaucoup à tout surtout à s6t6n ton code c'est exactement ce que je voulais merci beaucoup à tous comme vous le voyez je suis debutante et j'ai appris sur le site du zero mais j'ai pas tout lue, je suis du genre à toujours vouloir essayez quelquechose de nouveau je vous remercie tous !!! <3 <3 <3
30 oct. 2010 à 00:52
30 oct. 2010 à 02:21
30 oct. 2010 à 11:28
30 oct. 2010 à 11:30