Programme c++ débutant ! [Résolu]

Signaler
Messages postés
37
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
15 mars 2009
-
Messages postés
37
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
15 mars 2009
-
Bonjour, voila j'ai essayé de faire un programme en c++ mais quelques petites choses ne marchent pas !
Voila mes problèmes :
Le programme s'éteint juste après le lancement (et si je met un " system("pause") " ca me met une erreur !
Le programme ne compte pas en secondes comment faire ?

Voici le code source :
<hr />
#include

<stdio.h> 

int

main(){

int compteur=0;printf(

"Vous avez 10 secondes pour crier " Je suis con !!! "\n ");

while(compteur<20){

printf(

"Je compte : %i\n", compteur);compteur++;

}

while(11>compteur>10){

printf(

"Crie le plus fort j'entend pas !");}

while(16>compteur>15){

printf(

"\a OK, cool maintenant tu peux peux aller glandouiller sur MSN !");

}

}
<hr />
Comment faire pour le faire compter en secondes ?
Et aussi pour qu'il ne s'éteigne pas dès l'éxécution ?

Merci !

15 réponses

Messages postés
14937
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 janvier 2021
93
Hello,
Héhé...ça s'est du prog
Alors, pour compter en secondes:
- soit utilisation d'un timer qui t'enverra un "signal" toutes les secondes...mais ptet pas adapter pour un débutant
- soit utilisation de la fonction sleep() en fin de boucle à laquelle tu passes le nombre de milli-secondes à attendre

Malgré cela, à la fin de ta première boucle, compteur vaudra 20 et donc ton prog ne passera jamais dans tes boucles suivantes.
Du coup, je te conseille d'intégrer des 2 dernières boucles dans la 1ère, sous forme de conditions if()

Et pour ton problème de "fin rapide", system("pause")...mais avec l'inclusion du fichier .h qui va avec (windows.h ?? je ne sais plus)

Ai-je été clair? Dans le cas contraire, n'hésites pas à demander des précisions.

Bon courage pour tes 1ers pas en C++!!

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
98
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
24 janvier 2018

Salut

-pour compter en seconde moi j'utilise la fonction sleep( temps en ms), la librairy c'est time.h je crois.

-Pour ne pas qu'il s'éteigne à la fin, aparemment tes sous windows , j'utilise à la fin de mon main ( juste avant le return 0; que tu n'as pas mis alors que tu programmes en c++) un getch(); qui appartient  à la librairie conio.h. Attention , ce n'est pas standart , donc selon ton compilateur il va comprendre ou non.

a+
Messages postés
14937
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 janvier 2021
93
Complément à la réponse de zaibacker: getchar() est standard. Et je conseille d'abandonner conio.h...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
14937
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 janvier 2021
93
Ah bah non, ton parenthésage n'est toujours pas bon...
Tu ne peux pas mettre ta déclaration de compteur entre accolade car ta variable ne sera pas reconnu en dehors de ce bloc

#include <stdio.h>
#include <windows.h>

int main()
{
    printf("Vous avez 10 secondes pour crier " Je suis con !!! "\n ");

    int compteur = 0;
    while(compteur<20)
    {
        printf("\nJe compte : %i\n", compteur);
       
        if(compteur==10)
        {
            printf("Crie le plus fort j'entend pas !");
        }

        if(compteur==15)
        {
            printf("\a OK, cool maintenant tu peux peux aller glandouiller sur MSN !");
        }

        Sleep(1000);
        compteur++;
    }

    getchar();
    return 0;
}

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
37
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
15 mars 2009

J'ai commencé a programmer le c++ y'a pas longtemps et j'ai que 14 ans et en plus c'est le premier language de progrrammation que j'apprend après le HTML donc j'ai un peu de mal ^^ !
Ca donne ca alors ? :
<hr />#include<stdio.h>

#include<time.h>

int main() {

int compteur=0;
printf(

"Vous avez 10 secondes pour crier " Je suis con !!! "\n ");

while(compteur<20) {

printf(

"Je compte : %i\n", compteur); compteur++;

sleep(1000);

}

while(11>compteur>10)
{

printf(

"Crie le plus fort j'entend pas !");

sleep(500);}

while(16>compteur>15)
{

printf(

"\a OK, cool maintenant tu peux peux aller glandouiller sur MSN !");

sleep(500);

}

return 0;

getch();

}

<hr />
C'est bon ca ?

Merci !
Messages postés
14937
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 janvier 2021
93
Eh non...ce n'est pas encore bon:
- regarde mes remarques concernant les boucles
- rien ne sera exécuté après un return: ton getchar() (plutôt que getch() ) doit être fait avant

Je te montres le squelette du programme.

int main()
{
  // Affichage du message d'intro
  [Je te laisse faire]

  // Compte-à-rebours
  int compteur=0;
  while (compteur < 20)
  {
    // Affichage du 1er message au bout de 10 secondes
    if (compteur==10)
    {
      [Je te laisse faire]
    }

   [Je te laisse faire]

    // Attendre 1 seconde;
    sleep(1000);

    compteur++;
  }

  // attendre la saisie d'un caractère avant d'arrêter le programme
  getchar();
  return 0;
}

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
37
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
15 mars 2009

J'ai fait ceci :
<hr />#include

<stdio.h>#include

<time.h> 

 

int

main(){

printf(

"Vous avez 10 secondes pour crier " Je suis con !!! "\n ");

int compteur = 0;

while(compteur<20)printf(

"Je compte : %i\n", compteur);{

if(compteur==10){

printf(

"Crie le plus fort j'entend pas !");}

if(compteur==15)}

printf(

"\a OK, cool maintenant tu peux peux aller glandouiller sur MSN !");sleep(1000);

compteur++;

getchar();

return 0;}

<hr />
Je pense que c'est mal structuré et il y a cette erreur qui m'intrigue  :
1>c:\documents and settings\eric\bureau\1er programme\main.cpp(20) : error C3861: 'sleep' : identificateur introuvable

Merci !
Messages postés
37
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
15 mars 2009

J'ai fait ceci :
<hr />#include

<stdio.h>#include

<time.h> 

 

int

main(){

printf(

"Vous avez 10 secondes pour crier " Je suis con !!! "\n ");

int compteur = 0;

while(compteur<20)printf(

"Je compte : %i\n", compteur);{

if(compteur==10){

printf(

"Crie le plus fort j'entend pas !");}

if(compteur==15)}

printf(

"\a OK, cool maintenant tu peux peux aller glandouiller sur MSN !");sleep(1000);

compteur++;

getchar();

return 0;}

<hr />
Je pense que c'est mal structuré et il y a cette erreur qui m'intrigue  :
1>c:\documents and settings\eric\bureau\1er programme\main.cpp(20) : error C3861: 'sleep' : identificateur introuvable

Merci !
Messages postés
14937
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 janvier 2021
93
Problème de parenthèses, jeune Padawan :
- Après ton while, le printf doit être inclus dans l'accolade
- if (compteur==15) --> il n'y a rien dans ton test
- entre compteur++ et getchar(), il manque l'accolade de fin du while

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
37
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
15 mars 2009

Ca marche toujours pas comme ca :
<hr />#include

<stdio.h>#include

<time.h> 

 

int

main(){

{
 
printf(

"Vous avez 10 secondes pour crier " Je suis con !!! "\n ");

int compteur = 0;}

while(compteur<20){

printf(

"Je compte : %i\n", compteur);}

if(compteur==10){

printf(

"Crie le plus fort j'entend pas !");}

if(compteur==15){

printf(

"\a OK, cool maintenant tu peux peux aller glandouiller sur MSN !");sleep(1000);

compteur++;

}

getchar();

return 0;}

<hr />
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
Bonjour,

Juste pour infos chez mois 20*1sec = 20 secondes donc :

 printf("Vous avez 20 secondes pour crier " Je suis con !!! "\n ");
Messages postés
37
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
15 mars 2009

C'est bon ca marche merci beaucoup !
Messages postés
14937
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 janvier 2021
93
Hey! Bien vu JejeLand!
C'était pour voir si vous suiviez Nan, bon, ok, j'm'a gourré....
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
26
Date d'inscription
dimanche 18 février 2007
Statut
Membre
Dernière intervention
5 avril 2009

original ton prog ^^
si tu as windows tu inclus <Windows.h>
et la fonction est Sleep(); S majuscule
Messages postés
37
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
15 mars 2009

Merci mais c'est bon mon prog marche parfaitement maintenant !