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

  FORUM HardWare.fr
  Programmation
  C

  [c]boucle avec 3 tentatives

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c]boucle avec 3 tentatives

n°1226335
infodebuta​nt
Posté le 19-10-2005 à 15:47:07  profilanswer
 

Salut  :hello: 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.  

mood
Publicité
Posté le 19-10-2005 à 15:47:07  profilanswer
 

n°1226351
flo850
moi je
Posté le 19-10-2005 à 15:58:14  profilanswer
 

Code :
  1. nbEssai = 0 ;
  2. do{
  3. nbEssai++;
  4. }while( codeFaux(code) && nbEssai < 3 )


avec codeFaux une fonction qui renvoi 1 si le code est faux 0 sinon


---------------

n°1226356
infodebuta​nt
Posté le 19-10-2005 à 16:00:59  profilanswer
 

merci je vais essayer ca :jap:  

n°1226371
infodebuta​nt
Posté le 19-10-2005 à 16:18:16  profilanswer
 

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.  

n°1226409
Elmoricq
Modérateur
Posté le 19-10-2005 à 16:58:21  profilanswer
 

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.

n°1226414
Emmanuel D​elahaye
C is a sharp tool
Posté le 19-10-2005 à 17:04:46  profilanswer
 

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 :

  • Comment apprendre l'algorithmique si on ne connais pas de langage pour vérifier ?
  • Comment apprendre un langage si on a pas des bases d'algorithmique ?


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 ?
 
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1226460
MEI
|DarthPingoo(tm)|
Posté le 19-10-2005 à 18:01:32  profilanswer
 

infodebutant a écrit :

Salut  :hello: 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.


Message édité par MEI le 19-10-2005 à 18:02:13

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1227262
infodebuta​nt
Posté le 20-10-2005 à 16:45:59  profilanswer
 

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 :jap:  en tout cas merci pour votre aide  

n°1227263
infodebuta​nt
Posté le 20-10-2005 à 16:47:49  profilanswer
 

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);

n°1227334
moi23372
Posté le 20-10-2005 à 17:43:44  profilanswer
 

infodebutant a écrit :

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);


 
 
Tu ne serais pas à l'inpres toi? :D
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 :
  1. double compte1, compte2;
  2. short tentative = 0;
  3. do
  4. {
  5.    system ("cls" );
  6.    printf("Bonjour\\n" );
  7.    printf("Veuillez entrer les 10 premiers chiffres de votre compte bancaire\\n" );
  8.    scanf("%lf",&compte1);
  9.    printf("Veuillez entrer les 2 derniers chiffres de votre compte bancaire\\n" );
  10.    scanf("%lf",&compte2);
  11.    tentative++;
  12. } while (tentative < 3 && (compte1%97) != compte2);


 
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.

Message cité 1 fois
Message édité par moi23372 le 20-10-2005 à 17:52:42
mood
Publicité
Posté le 20-10-2005 à 17:43:44  profilanswer
 

n°1227339
Elmoricq
Modérateur
Posté le 20-10-2005 à 17:49:45  profilanswer
 

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


 
[:le poney de mr pink]
long, pas double.
 
Et dans ce cas aussi faut changer le pattern dans le scanf() (%ld).

Message cité 1 fois
Message édité par Elmoricq le 20-10-2005 à 17:50:17
n°1227341
MEI
|DarthPingoo(tm)|
Posté le 20-10-2005 à 17:52:06  profilanswer
 

J'allais le dire.
Mais int ca va plus loin que 65535 normallement. A moins que mon compilo me les changes tout seul :??:


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1227344
moi23372
Posté le 20-10-2005 à 17:54:45  profilanswer
 

Elmoricq a écrit :

[:le poney de mr pink]
long, pas double.
 
Et dans ce cas aussi faut changer le pattern dans le scanf() (%ld).


 
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)

n°1227349
MEI
|DarthPingoo(tm)|
Posté le 20-10-2005 à 17:57:10  profilanswer
 

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.


Message édité par MEI le 20-10-2005 à 17:57:38

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1227352
moi23372
Posté le 20-10-2005 à 17:59:54  profilanswer
 

c'est pour ça qu'un double fait l'affaire ;-) suffit de le caster en int alors...

Code :
  1. double compte1, compte2;
  2. short tentative = 0;
  3. do
  4. {
  5. system ("cls" );
  6. printf("Bonjour\n" );
  7. printf("Veuillez entrer les 10 premiers chiffres de votre compte bancaire\n" );
  8. scanf("%lf",&compte1);
  9. printf("Veuillez entrer les 2 derniers chiffres de votre compte bancaire\n" );
  10. scanf("%lf",&compte2);
  11. tentative++;
  12. } while (tentative < 3 && (int)(compte1%97) != compte2);

Message cité 3 fois
Message édité par moi23372 le 20-10-2005 à 18:01:31
n°1227387
infodebuta​nt
Posté le 20-10-2005 à 18:56:43  profilanswer
 

moi23372 a écrit :

c'est pour ça qu'un double fait l'affaire ;-) suffit de le caster en int alors...

Code :
  1. double compte1, compte2;
  2. short tentative = 0;
  3. do
  4. {
  5. system ("cls" );
  6. printf("Bonjour\n" );
  7. printf("Veuillez entrer les 10 premiers chiffres de votre compte bancaire\n" );
  8. scanf("%lf",&compte1);
  9. printf("Veuillez entrer les 2 derniers chiffres de votre compte bancaire\n" );
  10. scanf("%lf",&compte2);
  11. tentative++;
  12. Si je suis bien a l'inpres  :D  et merci pour la solution.
  13. } while (tentative < 3 && (int)(compte1%97) != compte2);



n°1227389
infodebuta​nt
Posté le 20-10-2005 à 18:59:13  profilanswer
 

moi23372 a écrit :

c'est pour ça qu'un double fait l'affaire ;-) suffit de le caster en int alors...

Code :
  1. double compte1, compte2;
  2. short tentative = 0;
  3. do
  4. {
  5. system ("cls" );
  6. printf("Bonjour\n" );
  7. printf("Veuillez entrer les 10 premiers chiffres de votre compte bancaire\n" );
  8. scanf("%lf",&compte1);
  9. printf("Veuillez entrer les 2 derniers chiffres de votre compte bancaire\n" );
  10. scanf("%lf",&compte2);
  11. tentative++;
  12. } while (tentative < 3 && (int)(compte1%97) != compte2);



 
 
Si je suis bien a l'inpres  :D  et merci pour la solution.

n°1227512
moi23372
Posté le 20-10-2005 à 21:24:00  profilanswer
 

infodebutant a écrit :

Si je suis bien a l'inpres  :D  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é.

n°1227697
Sve@r
Posté le 21-10-2005 à 09:10:23  profilanswer
 

moi23372 a écrit :

c'est pour ça qu'un double fait l'affaire ;-) suffit de le caster en int alors...

Code :
  1. double compte1, compte2;
  2. short tentative = 0;
  3. do
  4. {
  5. system ("cls" );
  6. printf("Bonjour\n" );
  7. printf("Veuillez entrer les 10 premiers chiffres de votre compte bancaire\n" );
  8. scanf("%lf",&compte1);
  9. printf("Veuillez entrer les 2 derniers chiffres de votre compte bancaire\n" );
  10. scanf("%lf",&compte2);
  11. tentative++;
  12. } while (tentative < 3 && (int)(compte1%97) != compte2);



 
 
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)" !!!

n°1227710
Emmanuel D​elahaye
C is a sharp tool
Posté le 21-10-2005 à 09:38:42  profilanswer
 

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


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1227712
Elmoricq
Modérateur
Posté le 21-10-2005 à 09:39:16  profilanswer
 

Sve@r a écrit :

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)" !!!


 
 
Ouais mais si on met dans un double parce que dans un long ça rentre pas (à plus forte raison dans un int  [:pingouino] ), alors utiliser un cast c'est un peu réintroduire le problème qu'on a tenté de contourner.
 
 [:elmoricq]

n°1227772
Sve@r
Posté le 21-10-2005 à 10:15:39  profilanswer
 

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  [:pingouino] ), alors utiliser un cast c'est un peu réintroduire le problème qu'on a tenté de contourner.
 
 [:elmoricq]


 
Evidemment... c'est un peu idiot mon idée  :lol:  :lol:  

n°1228175
++fab
victime du syndrome IH
Posté le 21-10-2005 à 16:05:44  profilanswer
 

est-il déshonorant d'utiliser un long long c99 ?

n°1228180
Emmanuel D​elahaye
C is a sharp tool
Posté le 21-10-2005 à 16:11:06  profilanswer
 

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


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1228244
++fab
victime du syndrome IH
Posté le 21-10-2005 à 17:03:00  profilanswer
 

des implémentations buggés ?  ... ou des pièges ?

n°1228406
Emmanuel D​elahaye
C is a sharp tool
Posté le 21-10-2005 à 20:02:57  profilanswer
 

++fab a écrit :

des implémentations buggés ?  ... ou des pièges ?


Il y a un problème avec ce code :  


#include <stdio.h>
 
#define MAX 9223372036854775807LL
 
int main (void)
{
   printf ("C99: MAX = %lld\n", MAX);
   printf ("MS : MAX = %I64d\n", MAX);
   
   return 0;
}


Je viens de tester ça avec Code::Blocks (Mingw) et ça donne


C99: MAX = -1
MS : MAX = 9223372036854775807


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


Message édité par Emmanuel Delahaye le 22-10-2005 à 11:07:30

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1228488
moi23372
Posté le 21-10-2005 à 22:04:06  profilanswer
 

Sve@r a écrit :

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)" !!!


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

n°1228641
el muchach​o
Comfortably Numb
Posté le 22-10-2005 à 10:38:05  profilanswer
 

++fab a écrit :

des implémentations buggés ?  ... ou des pièges ?


Donc un pb d'implémentation d'après ED.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
mood
Publicité
Posté le   profilanswer
 


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

  [c]boucle avec 3 tentatives

 

Sujets relatifs
Boucle for et list::iterator(résolu) Boucle For each sur textbox dans userform
Script qui tourne en boucle online et nickel en local... ???Une boucle pertiniente...
boucle Do until....loop en VBAboucle récursive pour arboresceprob nce
[ PHP ] pb recup de donnes dans boucle[VB] Extraire un vecteur à partir d'une matrice sans boucle
boucle if avec condition en VBS !prb de double boucle
Plus de sujets relatifs à : [c]boucle avec 3 tentatives


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