boucle avec 3 tentatives [c] - C - Programmation
Marsh Posté le 19-10-2005 à 15:58:14
Code :
|
avec codeFaux une fonction qui renvoi 1 si le code est faux 0 sinon
Marsh Posté le 19-10-2005 à 16:18:16
Encore une autre question, je dois faire un bancontact dans lequel l'utilisateur doit rentrer son code bancaire si le code est juste il rentre dedans ou sinon il ne peut pas rentrer et il a doit a trois essais.il doit rentrer son numero de comptes en 2 temps, d'abord il doit taper les 10 premiers chiffres ensuite les 2 derniers.
Marsh Posté le 19-10-2005 à 16:58:21
Hmm. Les boucles, c'est la base de la base.
Va falloir te débrouiller tout seul je pense, sinon tu ne t'en sortiras jamais.
Marsh Posté le 19-10-2005 à 17:04:46
infodebutant a écrit : Encore une autre question, je dois faire un bancontact dans lequel l'utilisateur doit rentrer son code bancaire si le code est juste il rentre dedans ou sinon il ne peut pas rentrer et il a doit a trois essais.il doit rentrer son numero de comptes en 2 temps, d'abord il doit taper les 10 premiers chiffres ensuite les 2 derniers. |
On va peut être pas te filer tout ton projet ligne par ligne...
Un conseil, commence par apprendre à programmer, parce que ce tu demandes, c'est le B.A. BA.
Il existe des livres, des tutoriels en ligne...
Pour le C, des références sur mon site (ma signature). Mais je pense que ton problème se situe au-delà du langage. Visiblememnt, tu n'as jamais fait d'algorithmique...
Il y a toujours un petit problème de poule et d'oeuf en informatique :
En fait il faut faire un peu des deux en commençant par un langage simple (le C est-il un langage simple ? Bonne question !).
1 - C: on abordre les bases sans algo.
2 - ALGO: on aborde les bases sans langage (par exemple : IF)
3 - C : on apprend à coder if() et on implémente un algo simple à base de if()
etc. : IF-ELSE, SWITCH-CASE, REPEAT-UNTIL, WHILE, FOR-NEXT
Il y a un beau site à créer sur ce principe... C'est quand les vacances ?
Marsh Posté le 19-10-2005 à 18:01:32
infodebutant a écrit : Salut tout le monde, voila mon probleme, je voudrais savoir comment on fait une boucle à tentative. Jdois creer un programme bancontact et l'utilisateur doit rentrer son numero de compte et il a droit 3 fois a l'erreur pour rentrer dans le boncontact. |
Bah c'est pas compliquer... Prend un papier et un crayon et reflechis aux étapes qu'il te faudrai pour realiser tout ça.
L'algorythmique est un outil nécéssaire pour s'en sortir en programmation.
Mais en gros le principe de ce genre de boucle c'est que le test de la boucle est du type : "essai < maximum ET code = pasOk"
et que dans la boucle le code est MAJ si nécéssaire.
Marsh Posté le 20-10-2005 à 16:45:59
Lol je fais de l'algorythme et du c,je suis en 1ere annee d'informatique mais je galere u peu pour l'instant je ne suis pas encore habitué avec les boucles en tout cas merci pour votre aide
Marsh Posté le 20-10-2005 à 16:47:49
voila mon programme qi n'est pas encore termine, maintenant il me manque plus qu a mettre les 3 essais
do
{
system("cls" );
printf("Bonjour\n" );
printf("Veuillez entrer les 10 premiers chiffres de votre compte bancaire\n" );
scanf("%d",&compte1);
printf("Veuillez entrer les 2 derniers chiffres de votre compte bancaire\n" );
scanf("%d",&compte2);
while(compte1>97)
{
compte1=compte1-97;
}
}
while(compte1 != compte2);
Marsh Posté le 20-10-2005 à 17:43:44
infodebutant a écrit : voila mon programme qi n'est pas encore termine, maintenant il me manque plus qu a mettre les 3 essais |
Tu ne serais pas à l'inpres toi?
Me semble que j'ai eu le même exercice en première que toi...
n'utilise pas des int mais des double déjà sinon dépassement de capacité, sous Visual Studio 6.0 un int ne fait que 4 bytes.
Code :
|
la relève n'est vraiment pas la ... c'est un jeu d'enfant ce genre de truc, comment ça sera en deuxième ou en troisième.
Marsh Posté le 20-10-2005 à 17:49:45
moi23372 a écrit : n'utilise pas des int mais des double déjà sinon dépassement de capacité, sous Visual Studio 6.0 ça va jusque 65535 (4 bytes). |
long, pas double.
Et dans ce cas aussi faut changer le pattern dans le scanf() (%ld).
Marsh Posté le 20-10-2005 à 17:52:06
J'allais le dire.
Mais int ca va plus loin que 65535 normallement. A moins que mon compilo me les changes tout seul
Marsh Posté le 20-10-2005 à 17:54:45
Elmoricq a écrit : |
Visual Studio 6
short => 2 bytes
int => 4 bytes
long => 4 bytes
double => 8 bytes (si je ne me trompe pas pour le double)
malheureusement sous visual studio 6, un int équivaut (d'après ce que mes profs me disait à l'époque) à un long. Ce qui n'est bien entendu pas le cas sous d'autre compilateur (sous unix)
Marsh Posté le 20-10-2005 à 17:57:10
short : 2 bytes
int : 4 bytes
long : 4 bytes
float : 4 bytes
double : 8 bytes
long double : 8 bytes
pour avoir du 8 bytes en entier faut du _int64 spécifique à Visual Studio.
Marsh Posté le 20-10-2005 à 17:59:54
c'est pour ça qu'un double fait l'affaire ;-) suffit de le caster en int alors...
Code :
|
Marsh Posté le 20-10-2005 à 18:56:43
moi23372 a écrit : c'est pour ça qu'un double fait l'affaire ;-) suffit de le caster en int alors...
|
Marsh Posté le 20-10-2005 à 18:59:13
moi23372 a écrit : c'est pour ça qu'un double fait l'affaire ;-) suffit de le caster en int alors...
|
Si je suis bien a l'inpres et merci pour la solution.
Marsh Posté le 20-10-2005 à 21:24:00
infodebutant a écrit : Si je suis bien a l'inpres et merci pour la solution. |
Me semblait bien, ils n'ont pas changé les exercices depuis deux ans (et oui je suis en troisième). En tout cas tu as intéret à t'y mettre. Car sinon tu vas vite être dépassé en C. Et c'est très important de bien réussir sa première, sinon c'est suicidaire pour la deuxième, et je ne te parle même pas de la troisième ou est on est carrement plus que débordé.
Marsh Posté le 21-10-2005 à 09:10:23
moi23372 a écrit : c'est pour ça qu'un double fait l'affaire ;-) suffit de le caster en int alors...
|
On n'a pas le droit de faire du modulo sur un double (ça n'a pas de sens)
Il faut commencer par caster "compte1" en int avant de lui appliquer le modulo
=> remplacer "(int)(compte1%97)" par "((int)compte1%97)" !!!
Marsh Posté le 21-10-2005 à 09:38:42
Sve@r a écrit : On n'a pas le droit de faire du modulo sur un double (ça n'a pas de sens) |
Si, mais il faut utiliser fmod()...
Marsh Posté le 21-10-2005 à 09:39:16
Sve@r a écrit : On n'a pas le droit de faire du modulo sur un double (ça n'a pas de sens) |
Ouais mais si on met dans un double parce que dans un long ça rentre pas (à plus forte raison dans un int ), alors utiliser un cast c'est un peu réintroduire le problème qu'on a tenté de contourner.
Marsh Posté le 21-10-2005 à 10:15:39
Elmoricq a écrit : Ouais mais si on met dans un double parce que dans un long ça rentre pas (à plus forte raison dans un int ), alors utiliser un cast c'est un peu réintroduire le problème qu'on a tenté de contourner. |
Evidemment... c'est un peu idiot mon idée
Marsh Posté le 21-10-2005 à 16:05:44
ReplyMarsh Posté le 21-10-2005 à 16:11:06
++fab a écrit : est-il déshonorant d'utiliser un long long c99 ? |
Non, mais selon l'implémentation, il y a quelques pièges.
Marsh Posté le 21-10-2005 à 17:03:00
ReplyMarsh Posté le 21-10-2005 à 20:02:57
++fab a écrit : des implémentations buggés ? ... ou des pièges ? |
Il y a un problème avec ce code :
|
Je viens de tester ça avec Code::Blocks (Mingw) et ça donne
|
Ce qui montre que Mingw utilise la DLL msvcrt.dll (MicroSoft Visual C Run-Time) livrée avec Windows XP, qui n'est pas C99, pour implémenter sa bibliothèque standard.
Prudence...
Marsh Posté le 21-10-2005 à 22:04:06
Sve@r a écrit : On n'a pas le droit de faire du modulo sur un double (ça n'a pas de sens) |
ha bon, pourtant ça marche, c'est un copié collé de mon logiciel de première année compilé et testé... En tt cas sous visual Studio ça marche...
Marsh Posté le 22-10-2005 à 10:38:05
++fab a écrit : des implémentations buggés ? ... ou des pièges ? |
Donc un pb d'implémentation d'après ED.
Marsh Posté le 19-10-2005 à 15:47:07
Salut tout le monde, voila mon probleme, je voudrais savoir comment on fait une boucle à tentative. Jdois creer un programme bancontact et l'utilisateur doit rentrer son numero de compte et il a droit 3 fois a l'erreur pour rentrer dans le boncontact.