[C] Need help pour un exo...

Need help pour un exo... [C] - C - Programmation

Marsh Posté le 11-09-2004 à 15:27:16    

Bonjour à vous amis programmeurs.
 
Voilà mon problème : J'ai un exo à faire en C (en fait plusieurs exo mais je ne vais en poser qu'un à la fois ça sera déjà pas mal) et le truc c que mon prof est incapable de transmettre ses connaissances. Il a l'air doué dans ce qu'il fait mais ce n'est en aucun cas un pédagogue. Je sollicite donc votre aide pour résoudre cet exercice. Je sais je devrais me débrouiller seul mais là où je suis je n'est pas trouvé de bouquin pour apprendre le C. Je me suis donc débrouillé pour qu'on m'en envoie un mais je ne l'aurai que la semaine prochaine. Donc voilà l'exo :  
 

Citation :

Ecrire un programme qui calcule le total des crédits et le total des débits qu’une entreprise doit régler.
Pour ce faire, le programme lira au clavier une série de montants (entiers), arrêt avec un montant = 0.
Si le montant est négatif, il s’agit d’un débit et le programme ajoutera 1 au nombre de clients débiteurs et additionnera le montant total des débits.
Si le montant est positif, il s’agit d’un crédit et le programme ajoutera 1 au nombre de clients créditeurs et additionnera le montant total des crédits.
En plus, il calculera le nombre minimum de coupures nécessaires pour rembourser le crédit. Les coupures dispo sont : 100, 50, 20, 5.
 
A la fin, le programme affichera :
- Le nombre de clients débiteurs
- Le montant total des débits
- Le nombre de clients créditeurs
- Le montant total des crédits
- Le nombre total de chaque coupure pour le remboursement des crédits et le reste.


 
Merci d'avance.

Reply

Marsh Posté le 11-09-2004 à 15:27:16   

Reply

Marsh Posté le 11-09-2004 à 16:16:30    

Brad Pitt a écrit :

Bonjour à vous amis programmeurs.
 
Voilà mon problème : J'ai un exo à faire en C (en fait plusieurs exo mais je ne vais en poser qu'un à la fois ça sera déjà pas mal) et le truc c que mon prof est incapable de transmettre ses connaissances. Il a l'air doué dans ce qu'il fait mais ce n'est en aucun cas un pédagogue. Je sollicite donc votre aide pour résoudre cet exercice. Je sais je devrais me débrouiller seul mais là où je suis je n'est pas trouvé de bouquin pour apprendre le C. Je me suis donc débrouillé pour qu'on m'en envoie un mais je ne l'aurai que la semaine prochaine. Donc voilà l'exo :  
 

Citation :

Ecrire un programme qui calcule le total des crédits et le total des débits qu’une entreprise doit régler.
Pour ce faire, le programme lira au clavier une série de montants (entiers), arrêt avec un montant = 0.
Si le montant est négatif, il s’agit d’un débit et le programme ajoutera 1 au nombre de clients débiteurs et additionnera le montant total des débits.
Si le montant est positif, il s’agit d’un crédit et le programme ajoutera 1 au nombre de clients créditeurs et additionnera le montant total des crédits.
En plus, il calculera le nombre minimum de coupures nécessaires pour rembourser le crédit. Les coupures dispo sont : 100, 50, 20, 5.
 
A la fin, le programme affichera :
- Le nombre de clients débiteurs
- Le montant total des débits
- Le nombre de clients créditeurs
- Le montant total des crédits
- Le nombre total de chaque coupure pour le remboursement des crédits et le reste.


 
Merci d'avance.


 
Le net suffit amplement pour apprendre le C, surtout pour un exercice aussi dérisoire que celui-là.
 
Même moi qui ne fais plus de C (et qui en ai très peu fait) depuis 10 ans au moins, j'en serais capable... Quelque soit le langage d'ailleurs, un peu de logique suffit.
 
Tu sais assigner des valeurs à une variable ?
Tu sais faire un calcul entre une ou plusieurs variables ?
Tu sais afficher quelque chose ?
Tu sais effectuer une saisie au clavier ?
 
Bon, ben donc tu peux faire l'exo.  :o


---------------
Expert en expertises
Reply

Marsh Posté le 11-09-2004 à 16:31:44    

Mouais...
 
J'ai fait un peu de prog structurée et tout ce que tu dis là je sais le faire (du moins je crois) mais ce qui me pose vraiment des problèmes avec le C c'est la syntaxe... Parce que le prof n'a jamais jugée utile de nous enseigner les vraies bases du langage. Au premier cours il a tout de suite enchainé les lignes de commandes comme si on était des pros de la programmation sans nous dire ce que c'était qu'un "printf" un "scanf" ou tout autre commande de base...
Et de ce fait j'ai vraiment du mal avec la syntaxe.
 
Donc à la limite si on pouvait me filer ne serait-ce que les 5-10 premières lignes du prog, je pense que ça m'aiguillerai pour la suite...
 
Thx

Reply

Marsh Posté le 11-09-2004 à 16:37:42    

Brad Pitt a écrit :

Mouais...
 
J'ai fait un peu de prog structurée et tout ce que tu dis là je sais le faire (du moins je crois) mais ce qui me pose vraiment des problèmes avec le C c'est la syntaxe... Parce que le prof n'a jamais jugée utile de nous enseigner les vraies bases du langage. Au premier cours il a tout de suite enchainé les lignes de commandes comme si on était des pros de la programmation sans nous dire ce que c'était qu'un "printf" un "scanf" ou tout autre commande de base...
Et de ce fait j'ai vraiment du mal avec la syntaxe.
 
Donc à la limite si on pouvait me filer ne serait-ce que les 5-10 premières lignes du prog, je pense que ça m'aiguillerai pour la suite...
 
Thx


 
Eh ho... Les bases du langage, n'importe quel site sur google te les donnera hein. En plus, ya une FAQ ici-même.


---------------
Expert en expertises
Reply

Marsh Posté le 11-09-2004 à 16:41:37    

oh le beau hors-charte !
 
balance ton programme sinon ça va bien se passer

Reply

Marsh Posté le 11-09-2004 à 18:48:34    

Citation :

En plus, il calculera le nombre minimum de coupures nécessaires pour rembourser le crédit. Les coupures dispo sont : 100, 50, 20, 5.


Si il y a pas des coupures de 1, t'est pas dans la m... pour rembourses un credit de 99 [:chacal_one333]
 
Noter que cette question est vicieuse, de toute facon, car il va falloir calculer ce nb minimal de coupures, par client crediteur, et les sommer, et surtout pas faire le calcul sur le credit total...
A+,


Message édité par gilou le 11-09-2004 à 18:50:37

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 11-09-2004 à 21:13:26    

Brad Pitt a écrit :

Mouais...
 
J'ai fait un peu de prog structurée et tout ce que tu dis là je sais le faire (du moins je crois) mais ce qui me pose vraiment des problèmes avec le C c'est la syntaxe... Parce que le prof n'a jamais jugée utile de nous enseigner les vraies bases du langage. Au premier cours il a tout de suite enchainé les lignes de commandes comme si on était des pros de la programmation sans nous dire ce que c'était qu'un "printf" un "scanf" ou tout autre commande de base...
Et de ce fait j'ai vraiment du mal avec la syntaxe.
 
Donc à la limite si on pouvait me filer ne serait-ce que les 5-10 premières lignes du prog, je pense que ça m'aiguillerai pour la suite...
 
Thx


 
Le problème c'est que la majorité d'entre nous serait largement capable de te faire un super-truc évolutif, élégant et tout, mais
1) on risque d'utiliser des notions que ton prof t'a pas encore enseigné
2) le jour où tu seras en contrôle, tu seras seul
Et dans ces deux cas, tu te feras éclater. Alors je vais te filer le schéma de base et ensuite tu te débrouilles tout seul pour le reste
 

Code :
  1. #include <stdio.h>
  2. main()
  3. {
  4. int montant;
  5. // Déclare ici tes autres variables dont tu as besoin
  6. while(1)
  7. {
  8.  printf("Entrez le montant :" );
  9.  fflush(stdout);
  10.  scanf("%d", &montant);
  11.  fgetc(stdin);
  12.  if (montant == 0)
  13.   break;
  14.  if (montant < 0)
  15.  {
  16.   // A toi de gérer le cas du montant débiteur
  17.  }
  18.  else
  19.  {
  20.   // Ici, le montant est créditeur
  21.   // Il faut ici calculer le nombre de coupures
  22.   // de 100, 50, 20, 10, 5 et 1 euros
  23.   // nécessaires pour gérer ce montant
  24.  }
  25. }
  26. // Ici tu fais tous tes affichages; style :
  27. // Le nb de créditeurs est tant
  28. // Le nb de débiteurs est tant
  29. // etc etc puis c'est fini
  30. }


 
Il n'y a que 3 petits trucs spéciaux
1) je fais une boucle infinie et je la quitte sur un montant à 0. Ce n'est pas très "propre" au sens algorithmique mais cela permet de ne pas décaler les indentations. Sinon, on finit par programmer complètement à droite de la page
2) le "fflush(stdout)" permet d'afficher immédiatement à l'écran l'invite à saisir. Sinon, tu auras un décalage entre l'affichage et la saisie
3) le "fgetc(stdin)" permet d'enlever du clavier le "return" qui finit ta saisie. en effet, quand tu saisis un nombre, tu finis cette saisie par l'appui de la touche "entrée". Le "scanf" récupère le nombre mais laisse dans le clavier ce caractère "entrée". Le "fgetc" est là pour supprimer ce "return" qui gènerait ta saisie suivante.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 11-09-2004 à 21:16:09    

[0D] De la même manière, les demandes de résolutions d'exercices ne seront pas acceptées
 
[*]Du moins, s'il s'agit d'une demande de solution toute faite, sans effort manifeste du côté du demandeur. Cette décision a été prise étant donné le nombre croissant de ce type de demandes lors des périodes de reprise des cours ou d'approche des périodes d'examens.
[*] Merci aux membres du forum de ne pas donner des résolutions d'exercice lorsqu'il est clair que le demandeur n'a rien fait de son côté ;)


merci de votre attention http://www.touslessmileys.com/smileys/Dawa/dawa_030.gif


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 12-09-2004 à 12:13:31    

Okay merci bcp...
 
Pour ce qui est de la charte, j'avais pas vu ce passage, dsl :jap:
 
Encore merci et p-ê @ bientôt  :hello:  (c'est p-ê moi qui donnerait des conseils après mais j'y crois pas trop vu comme je suis doué en prog :d)

Reply

Marsh Posté le 12-09-2004 à 12:45:56    

Brad Pitt a écrit :

Okay merci bcp...
 
Pour ce qui est de la charte, j'avais pas vu ce passage, dsl :jap:

à d'autres :o c'est facile de faire sa petite chatte maintenant que t'as on exo de fait et ton weekend de libre  :o

Reply

Marsh Posté le 12-09-2004 à 12:45:56   

Reply

Marsh Posté le 12-09-2004 à 12:47:01    

Taz a écrit :

à d'autres :o c'est facile de faire sa petite chatte maintenant que t'as on exo de fait et ton weekend de libre  :o


 
 [:totozzz]   [:rofl]

Reply

Marsh Posté le 12-09-2004 à 13:31:44    

Taz a écrit :

à d'autres :o c'est facile de faire sa petite chatte maintenant que t'as on exo de fait et ton weekend de libre  :o

Le week-end est fini et l'exo non  :o  [:psychokwak]

Reply

Marsh Posté le 12-09-2004 à 17:53:18    

[:dawadtc]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 12-09-2004 à 18:12:00    

Brad Pitt> La première erreur à ne pas commettre : Te lancer tête baissé sur ton clavier, ERREUR !
Tu prends un papier et un crayon.
Tu fais une analyse, qu'est-ce qui rentre, qu'est-ce qui sort, que dois-je faire... (comme en français).
Tu te fais un programme en pseudo-code (langage humainement compréhensible, genre je fais ci, je fais ça, j'additionne... pour faire au plus simple).
Une fois que tu trouves ton pseudo-code fonctionnel et élégant, il ne te reste plus qu'à le transcrire en C.
 
Si le pseudo-code te rebutte, tu peux faire des algorigrammes... Tout ce que tu veux à partir du moment où cela t'aide à mieux cerner le problème.
 
Ton problème pour un débutant doit pouvoir se faire en 2 à 4 heures grand max.
 
Up> Poste-nous ton analyse.


Message édité par christophe_d13 le 12-09-2004 à 18:17:30
Reply

Marsh Posté le 16-09-2004 à 02:19:21    

J'ai fais l'exercice :D (m'a pris 1h... moin si j'avais pas fait d'erreur  :whistle: )
 
Sinon connais pas grand chose en programmation commencé à lire une introduction au c (toujours pas finis d'ailleurs) depuis le tps que je me dis que je devrai apprendre à programmer :D
 
Sinon j'ai rajouté "fflush(stdout);" et "fgetc(stdin);"
à mon code et je vois aucune différence  :heink: (?!)
 

Code :
  1. printf("Entrez un montant: " );
  2. //fflush(stdout);
  3. scanf("%d", &montant);
  4.      //fgetc(stdin);


Message édité par the marshall le 16-09-2004 à 02:19:36
Reply

Marsh Posté le 16-09-2004 à 07:57:09    

the marshall a écrit :

J'ai fais l'exercice :D (m'a pris 1h... moin si j'avais pas fait d'erreur  :whistle: )
 
Sinon connais pas grand chose en programmation commencé à lire une introduction au c (toujours pas finis d'ailleurs) depuis le tps que je me dis que je devrai apprendre à programmer :D
 
Sinon j'ai rajouté "fflush(stdout);" et "fgetc(stdin);"
à mon code et je vois aucune différence  :heink: (?!)
 

Code :
  1. printf("Entrez un montant: " );
  2. //fflush(stdout);
  3. scanf("%d", &montant);
  4.      //fgetc(stdin);




 
Essaye juste de faire, dans une simple boucle, une saisie et un affichage d'un nom et un age...

Code :
  1. main()
  2. {
  3.      char nom[20];
  4.      int age;
  5.      while(1)
  6.      {
  7.           printf("Entrez votre nom :" );
  8.           //fflush(stdout);
  9.           scanf("%s", nom);
  10.           printf("Entrez votre age:" );
  11.           //fflush(stdout);
  12.           scanf("%d", &age);
  13.           //fgetc(stdin);
  14.           printf("Votre nom est <%s> et votre age est <%d>\n", nom, age);
  15.      }
  16. }


 
Tu verras à ta seconde saisie tu auras des affichages à moitié décalés et tu ne pourras plus faire saisir le nom.
Ensuite décommente les fflush et le fgetc et tu verras la différence...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 16-09-2004 à 08:44:01    

scanf("%s", nom);
 
c'est quoi ce bordel :o ?

Reply

Marsh Posté le 16-09-2004 à 22:18:20    

Taz a écrit :

scanf("%s", nom);
 
c'est quoi ce bordel :o ?


 
Je présume que tu veux indiquer ici un risque de dépassement de capacité...
Le but du topic était d'expliquer à un débutant le simple principe de la saisie d'une chaine et d'un nombre. J'ai donc utilisé l'instruction de base que les débutants utilisent souvent pour... débuter.
Je ne vais pas, en plus, l'embrouiller avec des considérations qu'il aura le temps de voir bien plus tard. Je ne veux pas le dégoûter du C !
C'est évident que si je dois faire et distribuer un programme pour un tiers avec saisie de texte, je vais m'arranger pour éviter le dépassement de capacité. Mais pas dans un topic où j'essaye d'être le plus simple possible pour ne détailler que la notion que je veux montrer.
 
Ton problème, Taz, c'est que tu n'arrives pas à te mettre à la place des autres. Tu penses que tout le monde se doit de connaître toutes les règles et tous les dangers du C. Alors tu te ballades, au grès des topics et tu assassines allègrement un code qui n'est pas, à tes yeux, assez pur; sans évaluer le contexte dans lequel le code a été écrit. Et lorsque tu daignes enfin répondre à une question, tu en écris vraiment le minimum en faisant clairement comprendre que tu es déjà bien bon de donner un peu de ton savoir.
Tu es certainement très calé en langage C mais tu n'as vraiment rien d'autre pour toi. Alors arrête tes sermons à la Shaolin car ils n'apportent rien d'intéressant, ni pour toi, ni pour les autres.


Message édité par Sve@r le 16-09-2004 à 22:19:22

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 16-09-2004 à 22:44:57    

:D

Reply

Marsh Posté le 17-09-2004 à 00:25:50    

mon problème, c'est que je comprends c'est quoi l'intérêt pédagogique de donner des exemples buggé et de filer des mauvais habitudes. fgets et tout aussi facil à employer que scanf, que tu le veuilles où nom. quant aux sermons, moi je n'en fais pas. Je ne parle que de programmation, rien d'autre, ça ne m'intéresse pas de savoir si tel ou tel est mégalo ou mytho. Le fait est que tu corriges un débutant en introduisant un autre bug.

Reply

Marsh Posté le 17-09-2004 à 07:55:03    

Ce serait bien d'avoir une nouvelle norme pour le C Taz Compliant [:meganne]

Reply

Marsh Posté le 17-09-2004 à 09:05:01    

Ça s'appelle le C99 je crois [:totozzz]
 
et un peu de bon sens aussi [:aloy]


Message édité par printf le 17-09-2004 à 09:07:47
Reply

Marsh Posté le 17-09-2004 à 09:29:03    

Sve@r a écrit :


Ton problème, Taz, c'est que tu n'arrives pas à te mettre à la place des autres. Tu penses que tout le monde se doit de connaître toutes les règles et tous les dangers du C. Alors tu te ballades, au grès des topics et tu assassines allègrement un code qui n'est pas, à tes yeux, assez pur; sans évaluer le contexte dans lequel le code a été écrit. Et lorsque tu daignes enfin répondre à une question, tu en écris vraiment le minimum en faisant clairement comprendre que tu es déjà bien bon de donner un peu de ton savoir.
Tu es certainement très calé en langage C mais tu n'as vraiment rien d'autre pour toi. Alors arrête tes sermons à la Shaolin car ils n'apportent rien d'intéressant, ni pour toi, ni pour les autres.


 
[:violon]
 
scanf("%s",nom) c mal point. Perso c'ets le premier truc que je detruit dans les TP que je file ...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed