Need help pour un exo... [C] - C - Programmation
Marsh Posté le 11-09-2004 à 16:16:30
Brad Pitt a écrit : Bonjour à vous amis programmeurs.
|
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.
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
Marsh Posté le 11-09-2004 à 16:37:42
Brad Pitt a écrit : Mouais... |
Eh ho... Les bases du langage, n'importe quel site sur google te les donnera hein. En plus, ya une FAQ ici-même.
Marsh Posté le 11-09-2004 à 16:41:37
oh le beau hors-charte !
balance ton programme sinon ça va bien se passer
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
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+,
Marsh Posté le 11-09-2004 à 21:13:26
Brad Pitt a écrit : Mouais... |
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 :
|
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.
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 |
merci de votre attention
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
Encore merci et p-ê @ bientôt (c'est p-ê moi qui donnerait des conseils après mais j'y crois pas trop vu comme je suis doué en prog )
Marsh Posté le 12-09-2004 à 12:45:56
Brad Pitt a écrit : Okay merci bcp... |
à d'autres c'est facile de faire sa petite chatte maintenant que t'as on exo de fait et ton weekend de libre
Marsh Posté le 12-09-2004 à 12:47:01
Taz a écrit : à d'autres c'est facile de faire sa petite chatte maintenant que t'as on exo de fait et ton weekend de libre |
Marsh Posté le 12-09-2004 à 13:31:44
Taz a écrit : à d'autres c'est facile de faire sa petite chatte maintenant que t'as on exo de fait et ton weekend de libre |
Le week-end est fini et l'exo non
Marsh Posté le 12-09-2004 à 17:53:18
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.
Marsh Posté le 16-09-2004 à 02:19:21
J'ai fais l'exercice (m'a pris 1h... moin si j'avais pas fait d'erreur )
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
Sinon j'ai rajouté "fflush(stdout);" et "fgetc(stdin);"
à mon code et je vois aucune différence (?!)
Code :
|
Marsh Posté le 16-09-2004 à 07:57:09
the marshall a écrit : J'ai fais l'exercice (m'a pris 1h... moin si j'avais pas fait d'erreur )
|
Essaye juste de faire, dans une simple boucle, une saisie et un affichage d'un nom et un age...
Code :
|
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...
Marsh Posté le 16-09-2004 à 22:18:20
Taz a écrit : scanf("%s", nom); |
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.
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.
Marsh Posté le 17-09-2004 à 07:55:03
Ce serait bien d'avoir une nouvelle norme pour le C Taz Compliant
Marsh Posté le 17-09-2004 à 09:05:01
Ça s'appelle le C99 je crois
et un peu de bon sens aussi
Marsh Posté le 17-09-2004 à 09:29:03
Sve@r a écrit : |
scanf("%s",nom) c mal point. Perso c'ets le premier truc que je detruit dans les TP que je file ...
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 :
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.