Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1570 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Need help pour un exo...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Need help pour un exo...

n°847729
Brad Pitt
I want to believe
Posté le 11-09-2004 à 15:27:16  profilanswer
 

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.

mood
Publicité
Posté le 11-09-2004 à 15:27:16  profilanswer
 

n°847774
Hermes le ​Messager
Breton Quiétiste
Posté le 11-09-2004 à 16:16:30  profilanswer
 

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
n°847782
Brad Pitt
I want to believe
Posté le 11-09-2004 à 16:31:44  profilanswer
 

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

n°847786
Hermes le ​Messager
Breton Quiétiste
Posté le 11-09-2004 à 16:37:42  profilanswer
 

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
n°847790
Taz
bisounours-codeur
Posté le 11-09-2004 à 16:41:37  profilanswer
 

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

n°847849
gilou
Modérateur
Modzilla
Posté le 11-09-2004 à 18:48:34  profilanswer
 

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é!  --
n°847901
Sve@r
Posté le 11-09-2004 à 21:13:26  profilanswer
 

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.
n°847902
schnapsman​n
Zaford Beeblefect
Posté le 11-09-2004 à 21:16:09  profilanswer
 

[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!"
n°848017
Brad Pitt
I want to believe
Posté le 12-09-2004 à 12:13:31  profilanswer
 

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)

n°848026
Taz
bisounours-codeur
Posté le 12-09-2004 à 12:45:56  profilanswer
 

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

mood
Publicité
Posté le 12-09-2004 à 12:45:56  profilanswer
 

n°848027
Hermes le ​Messager
Breton Quiétiste
Posté le 12-09-2004 à 12:47:01  profilanswer
 

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]

n°848035
Brad Pitt
I want to believe
Posté le 12-09-2004 à 13:31:44  profilanswer
 

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]

n°848133
black_lord
Truth speaks from peacefulness
Posté le 12-09-2004 à 17:53:18  profilanswer
 

[:dawadtc]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°848150
christophe​_d13
L'efficacité à tout prix.
Posté le 12-09-2004 à 18:12:00  profilanswer
 

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
n°851418
the marsha​ll
Posté le 16-09-2004 à 02:19:21  profilanswer
 

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
n°851434
Sve@r
Posté le 16-09-2004 à 07:57:09  profilanswer
 

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.
n°851450
Taz
bisounours-codeur
Posté le 16-09-2004 à 08:44:01  profilanswer
 

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

n°852170
Sve@r
Posté le 16-09-2004 à 22:18:20  profilanswer
 

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.
n°852192
max2048
Begin The Begin
Posté le 16-09-2004 à 22:44:57  profilanswer
 

:D

n°852302
Taz
bisounours-codeur
Posté le 17-09-2004 à 00:25:50  profilanswer
 

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.

n°852355
WhatDe
Posté le 17-09-2004 à 07:55:03  profilanswer
 

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

n°852389
printf
Baston !
Posté le 17-09-2004 à 09:05:01  profilanswer
 

Ç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
n°852398
Joel F
Real men use unique_ptr
Posté le 17-09-2004 à 09:29:03  profilanswer
 

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 ...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Need help pour un exo...

 

Sujets relatifs
help[HELP]Comment faire pour acceder en php a une zone texte input...
[HELP]Dans un formulaire: un select et deux boutonsun bogue que je ne comprend pas SVP HELP
HELPHELP!!!!!!!!Problème Sql Server sous vb.net!!!!!!!!
[HELP] Estimation et conseil sur un projet PHP...regex --> help!
[Servlet] [Tomcat] Erreur non identifiée (help me please)SMS avec TAPI - Stp help me!!!
Plus de sujets relatifs à : [C] Need help pour un exo...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR