Se connecter / S'enregistrer
Votre question

[C] desssiner une ligne puis un carré puis un triangle.

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
16 Octobre 2005 19:01:46



Salut tout le monde!
Je dois faire un programme en C et j'utilise turbo C++ 1.0

Voici l'énoncé de mon exercice :

Ecrire un programme qui affiche 3 formes géométriques à partir de caractères, une ligne, un carré, un triangle, (une ligne séparera chaque forme) en demandant à l'utilisateur la taille qu'il souhaite.

Il faut définir et utiliser une fonction qui affiche une ligne de N caractères (N entre 1 et 8).
La saisie de la taille devra être valide (redemander un entier tant que la taille donnée n'est pas entre 1 et 8) : définir et utilisé une fonction de saisie valide.

Voici pour le moment le code que j'ai tapé mais qui me pose déja des soucis que je n'arive à résoudre :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. void car(int i);
  5. void lig(int i);
  6.  
  7. void main()
  8. {
  9. int i;
  10. char reslig,rescar,n;
  11.  
  12. clrscr();
  13. printf("entrer la valeur de i");
  14. scanf("%d",&i);
  15. reslig="lig(i)";
  16. printf("%s",reslig);
  17. rescar="car(i)";
  18. printf("%s",rescar);
  19. getch();
  20. }
  21.  
  22. void lig(i)
  23. {
  24. for(i=1; i<=8; i++)
  25. {
  26. printf("g");
  27. }
  28. printf("\n");
  29. getch();
  30. }
  31.  
  32. void car(i)
  33. {
  34. for(i=1; i<=8; i++)
  35. {
  36. printf(lig(i));
  37. }
  38. printf("\n");
  39. getch();
  40. }



Mais cela ne fonctionne pas! En effet, cela ne prend pas en compte le nombre que je donne et la fonction carré n'est pas exécuter! en plus quand je rentre une valeur, le charactère que j'ai pré-enregistrer pour les dessins sont raplacer par d'autres charactères.

Autres pages sur : desssiner ligne carre triangle

a b L Programmation
16 Octobre 2005 19:13:18

- déjà car n'est jamais appelé nulle part.
- C'est pas rescar="car(i)"; mais rescar=car(i); qu'il faut mettre.
- Ensuite toutes tes fonctions sont déclarées avec un retour void qui signifie que ça ne retourne rien:
printf(lig(i)); ne fait rien sur le printf, écrit simplement lig(i);
Si tu ajoutes un type de retour pense à mettre des return dans tes fonctions.
- les paramètres des fonctions ne sont pas typés:
void lig (int i)
16 Octobre 2005 19:32:39

Salut bon j ai pas regarder a fond tout ton code mais déja cette partie la ne peux pas marcher:
  1. printf("entrer la valeur de i");
  2. scanf("%d",&i);
  3. reslig="lig(i)";
  4. printf("%s",reslig);
  5. rescar="car(i)";
  6. printf("%s",rescar);
  7. getch();

tu essaie de mettre dans reslig une chaine de caractére car ta fonction ecrit entre guillemet n est pas interpréter mais transformé en en chaine de caractéres:

si je comprend bien ce que tu a voulu faire c est récuperer un caractère venant de l execution de ta fonction dans c est cas la tu dois ecrire une fonction char pas void car void ne renvoie rien!

bon tu m as l air très mal partie donc un conseil commence a écrire ton programe en algo si tu ne connais rien
ecrit en francais ce que tu veux faire
ex:
program principale

initialisation(variables,ecran,...)
demander a l utilisateur la saisie d un nombre
récuperer le nombre dans la variable I


voila ecrit le déja comme ca post le je te dirais si c est bon et après je t aiderai a le transformer en code. tu n est pas obligé de faire ca mais comme ca tu programmera mieux dans le futur!
Contenus similaires
17 Octobre 2005 07:00:17

Voici l'algo du programme que je dois réaliser.
  1. Procédure : ligne(données N entier)
  2. variable i : entier (pour compter le nombre de répétition)
  3. début
  4. pour i variant de 1 a N par pas de 1 faire
  5. écrire("*")
  6. fin pour
  7. passer à la ligne
  8. fin
  9.  
  10.  
  11. Procédure : carré(données N entier)
  12. variable i : entier (pour compter le nombre de répétition)
  13. début
  14. pour i variant de 1 a N par pas de 1 faire
  15. ligne(N)
  16. fin pour
  17. fin
  18.  
  19. Procédure : triangle(données N entier)
  20. variable i : entier (pour compter le nombre de répétition)
  21. début
  22. pour i variant de 1 a N par pas de 1 faire
  23. ligne(i)
  24. fin pour
  25. fin



Voici le code après quelques modifications
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. void car(int i);
  5. void lig(int i);
  6.  
  7. void main()
  8. {
  9. int i;
  10. clrscr();
  11. printf("entrer la valeur de i");
  12. fflush(stdin);
  13. scanf("%d",&i);
  14. printf("vous avez choisi i=%d\n",i);
  15. lig(i);
  16. car(i);
  17. getchar();
  18. }
  19.  
  20. void lig(int k)
  21. {
  22. for(i=1; i<=8; i++)
  23. {
  24. printf("*");
  25. }
  26. printf("\n");
  27. getch();
  28. }
  29.  
  30. void car(int q)
  31. {
  32. for(q=1; q<=8; q++)
  33. {
  34. lig(q);
  35. }
  36. getch();
  37. }


La fonction lig() ne doit pas être bonne car quelqesoit la veleur de i que je donne, j'obtient toujours 8 charactères d'affiché à l'écran.
17 Octobre 2005 08:12:11

Salut

effectivement dans la fonction ligne ta boucle fort a 8 en condition d arrêt obligatoirement et la valeur transmit a la procédure ne sert a rien.

sinon juste un détail mais tu declare tes procedure en haut avec la variable i et en bas après ca devient k et q evite d utiliser les meme nom de variables dans ton programme principale et dans tes procédures rien de pire pour que tu ais des erreur dans de future programme beaucoup plus conséquents!!


a b L Programmation
17 Octobre 2005 13:19:02

ça compile ça ?
dans lig(), i n'est pas déclaré.
Dans car() ça compile parce que tu utilise le paramètre comme variable temporaire, mais ça ne risque pas de marcher.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS