IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Pb de retour


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut Pb de retour
    Bonjour
    je commence avec le C (j'ai eu mon 1er cour donc 1h30 d'exploitation pour ma part), j'ai fais un peu d'assembleur et il y a un fonction que j'arrive pas à faire, tous simplement le retour au début de mon programme.

    Avant je fesais (si je me souviens bien):

    DEBUT
    prog
    prog
    prog
    prog
    ret DEBUT

    Mais la pas moyen, une fois que mon programme arrive au bout(je précise que celui-ci marche, en entrant une date il doit me donner le jour que c'était, exercice pour commencer afin de se faire la main), il ne retourne pas au début.
    J'ai cherché, j'ai voulu mettre une boucle avec while mais pas moyen, j'ai juste réussi à faire une boucle qui a fait buggé ma console,lol (donc je ne pense pas avoir bien compris comment cette fonction marchais).
    Merci

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Djay1 Voir le message
    J'ai cherché, j'ai voulu mettre une boucle avec while mais pas moyen, j'ai juste réussi à faire une boucle qui a fait buggé ma console,lol (donc je ne pense pas avoir bien compris comment cette fonction marchais).
    Montre le code qui ne fonctionne pas. En principe pour faire ce que tu veux faire, il faut utiliser do-while

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Montre le code qui ne fonctionne pas. En principe pour faire ce que tu veux faire, il faut utiliser do-while
    Heu, ba en faite après avoir essayer différent moyen d'intégrer un while, j'ai arrêté par peur de foutre en l'air mon programme.
    J'ai chercher sur différent forum et taper dans google 1000 façon différentes "faire un saut dans un programme C" ou autres
    Voici mon programme la remi tel qu'il est sans retour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
       int j,m,a;
       int m1,a1,ns,as,f;
       while (boucle == 1)                          ======> donc j'ai test de le mettre ici
          printf("Veuillez saisir une date.\n\nSelection le jour\n");
          printf("\n");
          scanf("%d",&j);
          printf("\n");
          printf("Veuillez saisir un mois\n");
          printf("\n");
          scanf("%d",&m);
          printf("\n");
          printf("Veuillez saisir une annee\n");
          printf("\n");
          scanf("%d",&a);
          printf("\n");
          if(m>=3)
          {
             m1=m-2;
             a1=a;
          }
          else
          {
             m1=m+10;
             a1=a-1;
          }
          ns=a1/100;
          as=a1%100;
          f=j+as+(as/4)-2*ns+(ns/4)+((26*m1-2)/10);
          f=f%7;
          if (f<0)
          {
             f=f+7;
          }
          if (a<1582)
          {
             if (m<10)
                 if (j<15)
                   f=(f+3)%7;
                else
                   f=f%7;
          }
          printf("votre jour est :\n");
          printf("\n");
          switch (f)
          {
           case 0:printf("dimanche\n");
               break;
           case 1:printf("lundi\n");
               break;
           case 2:printf("mardi\n");
               break;
           case 3:printf("mercredi\n");
               break;
           case 4:printf("jeudi\n");
               break;
           case 5:printf("vendredi\n");
               break;
           case 6:printf("samedi\n");
               break;
          }
             //             =====> j'ai test de mettre les 2 slach mais je c pas pkoi
       return 0;
    }
    Au lieu du return 0 j'ai voulu mettre le while, j'ai essayé de le mettre au départ du programme aussi, enfin voila...j'ai essayé beaucoup de chose sans résultat...

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Djay1 Voir le message
    Heu, ba en faite après avoir essayer différent moyen d'intégrer un while, j'ai arrêté par peur de foutre en l'air mon programme.
    Y'a pas trop de risques... Essaye quelque chose de simple en quelques lignes pour valider le principe...

    J'ai chercher sur différent forum et taper dans google 1000 façon différentes "faire un saut dans un programme C" ou autres
    Le C est un langage basé sur les principes de la programmation structurée. On ne fait dont pas de 'sauts' comme en assembleur ou en BASIC primitif, mais des exécutions conditionnelles...

    Tu ferais bien de relire le chapitre sur les structures de code (décisions, itérations...)

    Voici mon programme la remi tel qu'il est sans retour :
    Il faut définir boucle :
    lui donner une valeur initiale :
    tester si il faut boucler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (boucle)
    {
     ...
    }
    modifier boucle dans le code dans un cas bien précis. Par exemple, si on entre un jour valant 0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
          if (j == 0)
          {
             boucle = 0;
             break;
          }
     
    ...
    C'est difficile ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main ()
    {
       int j, m, a;
       int m1, a1, ns, as, f;
       int boucle = 1;
     
       while (boucle == 1)
       {
          printf
             ("Veuillez saisir une date.\n\nSelectionner le jour (1-31 ou 0 pour quitter)\n");
          printf ("\n");
          scanf ("%d", &j);
     
          if (j == 0)
          {
             boucle = 0;
             break;
          }
     
          printf ("\n");
          printf ("Veuillez saisir un mois\n");
          printf ("\n");
          scanf ("%d", &m);
          printf ("\n");
          printf ("Veuillez saisir une annee\n");
          printf ("\n");
          scanf ("%d", &a);
          printf ("\n");
          if (m >= 3)
          {
             m1 = m - 2;
             a1 = a;
          }
          else
          {
             m1 = m + 10;
             a1 = a - 1;
          }
          ns = a1 / 100;
          as = a1 % 100;
          f = j + as + (as / 4) - 2 * ns + (ns / 4) + ((26 * m1 - 2) / 10);
          f = f % 7;
          if (f < 0)
          {
             f = f + 7;
          }
          if (a < 1582)
          {
             if (m < 10)
                if (j < 15)
                   f = (f + 3) % 7;
                else
                   f = f % 7;
          }
          printf ("votre jour est :\n");
          printf ("\n");
          switch (f)
          {
          case 0:
             printf ("dimanche\n");
             break;
          case 1:
             printf ("lundi\n");
             break;
          case 2:
             printf ("mardi\n");
             break;
          case 3:
             printf ("mercredi\n");
             break;
          case 4:
             printf ("jeudi\n");
             break;
          case 5:
             printf ("vendredi\n");
             break;
          case 6:
             printf ("samedi\n");
             break;
          }
       }
       return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Veuillez saisir une date.
     
    Selectionner le jour (1-31 ou 0 pour quitter)
     
    18
     
    Veuillez saisir un mois
     
    10
     
    Veuillez saisir une annee
     
    1956
     
    votre jour est :
     
    jeudi
    Veuillez saisir une date.
     
    Selectionner le jour (1-31 ou 0 pour quitter)
     
    0
     
    Process returned 0 (0x0)   execution time : 34.343 s
    Press any key to continue.
    Ca semble correct

    http://www.aly-abbara.com/utilitaire...r_semaine.html

    Attention, les saisies avec scanf() sont fragiles... Je recommande fgets() + fclean() (fonction publiée ici plusieurs fois) et la conversion qui va bien...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut
    okok, oui j'ai compris.

    En faite on ne fait pas un retour approprement parler si je comprend bien:

    -On initialise une variable "boucle" à 1
    -On fait un retour sur while si la valeur de cette "boucle" est égal à 1 sinon le programme s'arrète.

    Donc 2 choix :

    -Soit l'utilisateur met le "j" à 0 et dans ce cas la "boucle" sera mit à 0 et donc on quitte puisque la condition "boucle" n'est plus remplit.
    -Soit on rentre les données normalement et le break nous fait retournez à while en début de programme puisque la condition boucle est toujours remplit (boucle=1).

    Donc si je comprend bien, le break vérifie la condition de la boucle.

    J'ai bien tous compris ?
    En tous cas sa marche


    J'essaierai de l'insérer dans d'autres programmes afin de m'assurer que j'arrive à bien utiliser la fonction, et mes livre de C arrive bientôt de toute façon.

    PS : je pense que ton site va beaucoup m'aidez donc merci à toi.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Retour au mode texte par défaut
    Par coca dans le forum x86 16-bits
    Réponses: 6
    Dernier message: 12/12/2002, 17h22
  3. [XP] Retour d'experience
    Par virgile04 dans le forum Méthodes Agiles
    Réponses: 10
    Dernier message: 22/10/2002, 08h25
  4. Retour chariot dans un TMemo ?
    Par Vincent PETIT dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/08/2002, 18h55
  5. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo