A voir également:
- Problème avec un programme C
- Programme demarrage windows 10 - Guide
- Desinstaller un programme - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Mettre en veille un programme - Guide
6 réponses
Bonjour
Tu as bien avancé...
Dans le dessin du 7, tu utilises la même variable u dans 2 boucles imbriquées. Quand tu sors de ta boucle intérieure u vaut 12 et tu sors immédiatement de ta boucle extérieure.
De toutes manières, je ne comprens rien du tout à la logique ce tes boucles. Pour dessiner un 7 d'une hauteur donnée, après avoir tracé la barre du haut, il te reste à écrire hauteur-1 lignes de 4 espaces + 1 *. Je ne vois pas du tout le rapport avec ton u+hauteur==5. Mais je n'ai peut-être pas tout compris.
Dans le dessin du 0,
D'abord le switch. Il ne faut pas confondre le chiffre 0 et la lettre O
ensuite, ta fonction dessiner0 : tu lui donnes une variable hauteur comme paramètre, mais ta boucle for commence par remplacer hauteur par 0. Tu ne pourras plus jamais faire la hauteur voulue, tu l'as oubliée. Alors tu fait 5 boucles au lieu d'en faire hauteur-2 comme il est demandé.
En fait il faudrait faire for (u=0; u<hauteur-2;u++)
Dernières remarques : enlève les char O,S,Q qui ne servent à rien dans lirechoix
et pour afficher 5 *, tu n'as peut être pas besoin d'une boucle, un printf ("*****\n") devrait suffire.
Tu as bien avancé...
Dans le dessin du 7, tu utilises la même variable u dans 2 boucles imbriquées. Quand tu sors de ta boucle intérieure u vaut 12 et tu sors immédiatement de ta boucle extérieure.
De toutes manières, je ne comprens rien du tout à la logique ce tes boucles. Pour dessiner un 7 d'une hauteur donnée, après avoir tracé la barre du haut, il te reste à écrire hauteur-1 lignes de 4 espaces + 1 *. Je ne vois pas du tout le rapport avec ton u+hauteur==5. Mais je n'ai peut-être pas tout compris.
Dans le dessin du 0,
D'abord le switch. Il ne faut pas confondre le chiffre 0 et la lettre O
ensuite, ta fonction dessiner0 : tu lui donnes une variable hauteur comme paramètre, mais ta boucle for commence par remplacer hauteur par 0. Tu ne pourras plus jamais faire la hauteur voulue, tu l'as oubliée. Alors tu fait 5 boucles au lieu d'en faire hauteur-2 comme il est demandé.
En fait il faudrait faire for (u=0; u<hauteur-2;u++)
Dernières remarques : enlève les char O,S,Q qui ne servent à rien dans lirechoix
et pour afficher 5 *, tu n'as peut être pas besoin d'une boucle, un printf ("*****\n") devrait suffire.
encore une remarque
min=5;
max=11;
do
{
printf(" Entrez la hauteur du chiffre : ");
scanf("%d", &hauteur);
}
while ( hauteur < min && hauteur > max ); <--------- incorrect
4<5 vrai 4>11 faux resultat (vrai && faux) = faux sortie de la boucle avec hauteur=4
le test correct est
while ( hauteur < min || hauteur > max );
J'ai corrigé et testé le prog, à part l'ecriture du 7 qui n'est pas belle si hauteur > 7 le reste est bon.
Si tu ne trouve pas tes erreurs je te le passerai.
Salut
min=5;
max=11;
do
{
printf(" Entrez la hauteur du chiffre : ");
scanf("%d", &hauteur);
}
while ( hauteur < min && hauteur > max ); <--------- incorrect
4<5 vrai 4>11 faux resultat (vrai && faux) = faux sortie de la boucle avec hauteur=4
le test correct est
while ( hauteur < min || hauteur > max );
J'ai corrigé et testé le prog, à part l'ecriture du 7 qui n'est pas belle si hauteur > 7 le reste est bon.
Si tu ne trouve pas tes erreurs je te le passerai.
Salut
Premierement, merci...
J'ai tout corrigé mes erreurs, mais là il reste encore deux bog... ce fameux 7 qui affiche toujours la même grandeur et non celle que l'utilisateur entre
Menu
O : Chiffre 0
S : Chiffre 7
Q : Quitter
Entrez votre choix : S
Entrez la hauteur du chiffre : 6
*****
*
*
*
*
Menu
O : Chiffre 0
S : Chiffre 7
Q : Quitter
Entrez votre choix :
Entrez votre choix :
le deuxieme bug c qu'il m'affiche deux fois entrez votre choix en dernier... ??
/* T.p.2 Numero 2
*/
#include <stdio.h>
#include <ctype.h>
//Fonctions
void afficherMenu ()
{
printf ("Menu");
printf ("\n O : Chiffre 0");
printf ("\n S : Chiffre 7");
printf ("\n Q : Quitter");
}
// Fin afficher menu
// Lire choix
char lirechoix (){
char O,S,Q,choix;
do
{
printf("\nEntrez votre choix : ");
scanf("%c", &choix);
}
while ( choix !='O' && choix !='S' && choix !='Q');
return choix;
}
// Fin lire choix
// Lire hauteur
int lirehauteur() {
int min,max,hauteur;
min=5;
max=11;
do
{
printf(" Entrez la hauteur du chiffre : ");
scanf("%d", &hauteur);
}
while ( hauteur < min || hauteur > max );
return hauteur ;
}
//fin lire hauteur
//Dessiner le chiffre 0
void dessiner0 (int hauteur) {
int i;
for(i=0;i<5;i++)
printf("*");
printf("\n");
for ( i=0; i<hauteur-2; i++) {
printf ("* *");
printf("\n"); }
for(i=0;i<5;i++)
printf("*");
printf("\n");
}
// Fin dessiner le chiffre0
//Dessiner le chiffre7
void dessiner7 (int hauteur){
int u;
for(u=0;u<5;u++)
printf ("*");
printf ("\n");
for (u =1; u<=4; u++)
{
for (hauteur=1; hauteur <=4; hauteur++)
{
if (hauteur+u==5)
printf ("*");
else
printf (" ");
}
printf ("\n");
}
}
// Fin dessiner le chiffre 7
// Faire une pause
void fairepause ()
{
printf ("\n Appuyer sur une touche pour continuer");
getch();
}
// Fin de faire une pause
//fonction principale
void main()
{
char choix; // choix de l'usager
int hauteur; // hauteur de la lettre
do
{
afficherMenu();
choix = lirechoix();
if ( choix != 'Q' )
{
hauteur = lirehauteur();
switch (choix)
{
case 'O' : dessiner0(hauteur); break;
case 'S' : dessiner7(hauteur); break;
}// fin switch
} // fin if
}// fin while
while (choix != 'Q');
fairepause();
} // fin main
J'ai tout corrigé mes erreurs, mais là il reste encore deux bog... ce fameux 7 qui affiche toujours la même grandeur et non celle que l'utilisateur entre
Menu
O : Chiffre 0
S : Chiffre 7
Q : Quitter
Entrez votre choix : S
Entrez la hauteur du chiffre : 6
*****
*
*
*
*
Menu
O : Chiffre 0
S : Chiffre 7
Q : Quitter
Entrez votre choix :
Entrez votre choix :
le deuxieme bug c qu'il m'affiche deux fois entrez votre choix en dernier... ??
/* T.p.2 Numero 2
*/
#include <stdio.h>
#include <ctype.h>
//Fonctions
void afficherMenu ()
{
printf ("Menu");
printf ("\n O : Chiffre 0");
printf ("\n S : Chiffre 7");
printf ("\n Q : Quitter");
}
// Fin afficher menu
// Lire choix
char lirechoix (){
char O,S,Q,choix;
do
{
printf("\nEntrez votre choix : ");
scanf("%c", &choix);
}
while ( choix !='O' && choix !='S' && choix !='Q');
return choix;
}
// Fin lire choix
// Lire hauteur
int lirehauteur() {
int min,max,hauteur;
min=5;
max=11;
do
{
printf(" Entrez la hauteur du chiffre : ");
scanf("%d", &hauteur);
}
while ( hauteur < min || hauteur > max );
return hauteur ;
}
//fin lire hauteur
//Dessiner le chiffre 0
void dessiner0 (int hauteur) {
int i;
for(i=0;i<5;i++)
printf("*");
printf("\n");
for ( i=0; i<hauteur-2; i++) {
printf ("* *");
printf("\n"); }
for(i=0;i<5;i++)
printf("*");
printf("\n");
}
// Fin dessiner le chiffre0
//Dessiner le chiffre7
void dessiner7 (int hauteur){
int u;
for(u=0;u<5;u++)
printf ("*");
printf ("\n");
for (u =1; u<=4; u++)
{
for (hauteur=1; hauteur <=4; hauteur++)
{
if (hauteur+u==5)
printf ("*");
else
printf (" ");
}
printf ("\n");
}
}
// Fin dessiner le chiffre 7
// Faire une pause
void fairepause ()
{
printf ("\n Appuyer sur une touche pour continuer");
getch();
}
// Fin de faire une pause
//fonction principale
void main()
{
char choix; // choix de l'usager
int hauteur; // hauteur de la lettre
do
{
afficherMenu();
choix = lirechoix();
if ( choix != 'Q' )
{
hauteur = lirehauteur();
switch (choix)
{
case 'O' : dessiner0(hauteur); break;
case 'S' : dessiner7(hauteur); break;
}// fin switch
} // fin if
}// fin while
while (choix != 'Q');
fairepause();
} // fin main
BoonDu06
Messages postés
186
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
14 décembre 2010
25
23 mars 2008 à 22:15
23 mars 2008 à 22:15
Bonjour ,
Je ne sais pas si tu l'a encore appris mais pour tout ce qui est menu à ta place j'aurai utilisé les switch
Exemple :
{
long choixMenu;
printf("=== Menu ===\n\n");
printf ("\n O : Chiffre 0");
printf ("\n S : Chiffre 7");
printf ("\n Q : Quitter");
printf("\nQuel est votre choix ? ");
scanf("%ld", &choixMenu);
printf("\n");
switch (choixMenu)
{
case 1:
printf("Vous avez choisi le chiffre 0 !");
break;
case 2:
printf("Vous avez choisi le chiffre 7");
break;
case 3:
printf("Vous avez choisi de quitter);
break;
default:
printf("Vous n'avez pas rentre une commande valide");
break;
}
Voilà voilà : je sais que ce n'est pas le sens de ta question mais j'ai pensé que sa pourrait t'intéresser ...
Merci de me dire ce que tu en pense ;-)
Ps: je n'ai pas de compilo sous la main donc je ne sais pas si je n'ai pas fait de fautes mais à premières vu il a l'air bon :p
Boon'
Je ne sais pas si tu l'a encore appris mais pour tout ce qui est menu à ta place j'aurai utilisé les switch
Exemple :
{
long choixMenu;
printf("=== Menu ===\n\n");
printf ("\n O : Chiffre 0");
printf ("\n S : Chiffre 7");
printf ("\n Q : Quitter");
printf("\nQuel est votre choix ? ");
scanf("%ld", &choixMenu);
printf("\n");
switch (choixMenu)
{
case 1:
printf("Vous avez choisi le chiffre 0 !");
break;
case 2:
printf("Vous avez choisi le chiffre 7");
break;
case 3:
printf("Vous avez choisi de quitter);
break;
default:
printf("Vous n'avez pas rentre une commande valide");
break;
}
Voilà voilà : je sais que ce n'est pas le sens de ta question mais j'ai pensé que sa pourrait t'intéresser ...
Merci de me dire ce que tu en pense ;-)
Ps: je n'ai pas de compilo sous la main donc je ne sais pas si je n'ai pas fait de fautes mais à premières vu il a l'air bon :p
Boon'
Bonjour,
Tu es pratiquement arrivé au bout.
Pour dessiner le chiffre 7 voila comment e me suis pris.
Tu es pratiquement arrivé au bout.
Pour dessiner le chiffre 7 voila comment e me suis pris.
//Dessiner le chiffre7 void dessiner7 (int hauteur){ int u; int h; int d; d=div((hauteur-5), 2)-1; if (d<0) d=0; printf("\n"); printf ("*****\n"); for(u=0;u<d;u++) printf(" *\n"); for (h=1; h<hauteur-d; h++) { for (u=0;u<5;u++){ if (((u+h)==5) || ((h>5) && (u==0))) printf ("*"); else printf (" "); } printf ("\n"); } printf ("\n\n"); } // Fin dessiner le chiffre 7
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
TBC
Messages postés
3
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
24 mars 2008
24 mars 2008 à 02:31
24 mars 2008 à 02:31
bonjour,peux tu m'aider a comprendre turbo c++