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 :

Relancer un programme après sa fin, Comment faire !?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Par défaut Relancer un programme après sa fin, Comment faire !?
    Bonjour ! Alors voila j'ai tapé un programme une sorte de calculatrice plus ou moins simple. J'aimarais bien faire une sorte de "Voulez vous recommencez ?" a la fin pour ne pas avoir a relancer le programme et directement le réutiliser après en avoir fini mais je n'y arrive pas. Notez que je débute en C
    Je vous laisse ici le programme C:
    Merci de votre aide les amis, Cordialement, Warkinge.
    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    #include<stdio.h>
    #include<math.h>
    Resulta()
    {
    printf("\n\nLe resultat de l'opperation est: ");
    }
    int Operations()
    {
    int a,b; char operateur;
    printf("Vous avez choisi le programme qui effectu les opperations suivantes: \n\n1)Addition de deux entier (+)\n2)Soustraction de deux entier (-)\n3)Divition entiere(/)\n4)Multiplication de deux entier (*)\n5)Puissance de deux entier (seulement dans les cas ou b=2 ou 3 ou 4) (^)\n6)Modulo de deux eniters (%%)");
    do {printf("\n\n\nEntrez une expression du genre Nombre1 operateur(+,-,/,*,^,%% selon la liste afficher si-dessu) Nombre2. \n\nOperation: ");
    scanf("%d%c%d",&a,&operateur,&b); }while ((operateur!='+')&&(operateur!='-')&&(operateur!='*')&&(operateur!='/')&&(operateur!='^')&&(operateur!='%'));
    switch(operateur){
      case'+':Resulta(); printf("%d+%d=%d\n\n",a,b,(a+b));
    break;
      case'-':Resulta(); printf("%d-%d=%d\n\n",a,b,(a-b));
    break;
      case'*':Resulta(); printf("%d*%d=%d\n\n",a,b,(a*b));
    break;
      case'/':if (b==0)
        printf("\n\nDivision par zero impossible!\n\n");
              else        {
        Resulta(); printf("%d/%d=%d\n\n",a,b,a/b);
                          }
    break;
      case'^':Resulta(); printf("%d^%d=%.1f", a,b,pow(a,b));
     
    break;
    case '%': if(b!=0){Resulta();printf("%dmod%d=%d\n\n",a,b,a%b);} else {printf("\n\nDivision par zero impossible !\n\n");} break;
      default : break; // Impossible
      }
    }
    int Segondeg()
    {
    float a,b,c,d,r1,r2,x;
    printf("Vous avez choise le programme qui resoud une equation du second degre.\n\n"); //Titre
    printf("Entrez la valeur de a: ", a); scanf("%f", &a);// Variable a
    printf("Entrez la valeur de b: ", b); scanf("%f", &b);// Variable b
    printf("Entrez la valeur de c: ", c); scanf("%f", &c);// Variable c
    d=b*b-(4*a*c); //Affectation de Delta
      if(a==0){//Conditions
        if(b!=0){
           x=-c/b;
           printf("\nUne solution simple: %.2f",x);
                }
         if(c==0) printf("\nInfinite de solutions.");
             else printf("\nPas de solutions possible.");
              }
              else{
                if(d>0){
                    r1 =(b-sqrt(d))/(2*a);
                    r2 =(-b-sqrt(d))/(2*a);
                    printf("\nIl y a deux solutions: x1=%f et x2=%f",-r1,r2);
                       }
                    else{
                         if(d==0){
                                  r1 =(-b)/(2*a);
              printf("\nIl y a une solution: %f",r1);
    }
    else {
    printf("Deux solutions complexes x1=%.2f+i%.2f et x2=%.2f-i%.2f",-1*b/2*a,sqrt(-d)/2*a,-1*b/2*a,sqrt(-d)/2*a); }
    }
    }
    }
    int ExpLnSqrt()
    {
    float a;int n;
    printf("Vous avez choisie le programme qui effectue les operations suivante: \n\n1)Racine caree \n2)Exponentielle \n3)Logarithmique \n4)Valeur absolue \n5)Partie entiere");
    do{printf("\nVeuilliez choisir une operation selon les nombres afficher si-dessou: "); scanf("%d", &n);}while((n!=1)&&(n!=2)&&(n!=3)&&(n!=4)&&(n!=5));
    switch(n){
    case 1: printf("\nVous avez choisi la racine caree d'un nombre.\nVeuillez saisir un nombre positif: "); scanf("%f", &a);
    while(a<0){printf("La racine caree d'un nombre negatif n'existe pas, Veuillez saisir un nombre positif: "); scanf("%f", &a);}
    Resulta(); printf("sqrt(%f)=%f",a,sqrt(a)); break;
    case 2: printf("\nVous avez choisi l'exponentielle d'un nombre.\nVeuillez saisir un nombre: "); scanf("%f", &a);
    Resulta(); printf("Exp(%f)=%f", a,exp(a)); break;
    case 3: printf("\nVous avez choisi le logarithme d'un nombre.\nVeuillez saisir un nombre positif: "); scanf("%f", &a);
    while(a<0){printf("Le logarithme d'un nombre negatif n'existe pas, Veuillez saisir un nombre positif: "); scanf("%f", &a);}
    Resulta(); printf("log(%f)=%f",a,log10(a)); break;
    case 5: printf("\nVous avez choisi la partie entiere d'un nombre.\nVeuillez saisir un nombre "); scanf("%f", &a);
    Resulta(); printf("E(%f)=%.0f",a,floor(a)); break;
    case 4: printf("\nVous avez choisi la valeur aboslue d'un nombre.\nVeuillez saisir un nombre "); scanf("%f", &a);
    Resulta(); printf("|%f|=%f",a,fabs(a)); break;}
    }
    int Trigonom()
    {
    float a;int n;
    printf("Vous avez choisie le programme qui effectue les operations suivante: \n\n1)Cosinus \n2)Sinus \n3)Tangente \n4)Arc cosinus \n5)Arc sinus\n6)Arc tangente");
    do{printf("\nVeuilliez choisir une operation selon les nombres afficher si-dessou: "); scanf("%d", &n);}while((n!=1)&&(n!=2)&&(n!=3)&&(n!=4)&&(n!=5)&&(n!=6));
    switch(n){
    case 1: printf("\nVous avez choisi le cosinus d'un nombre.\nVeuillez saisir un nombre: "); scanf("%f", &a);
    Resulta(); printf("Cos(%f)=%f",a,cos(a)); break;
    case 2: printf("\nVous avez choisi le sinus d'un nombre.\nVeuillez saisir un nombre: "); scanf("%f", &a);
    Resulta(); printf("Sin(%f)=%f", a,sin(a)); break;
    case 3: printf("\nVous avez choisi la tangente d'un nombre.\nVeuillez saisir un nombre: "); scanf("%f", &a);
    Resulta(); printf("Tg(%f)=%f",a,tan(a)); break;
    case 5: printf("\nVous avez choisi l'arc cosinus d'un nombre.\nVeuillez saisir un nombre "); scanf("%f", &a);
    Resulta(); printf("Arccos(%f)=%f",a,acos(a)); break;
    case 4: printf("\nVous avez choisi l'arc sinus d'un nombre.\nVeuillez saisir un nombre "); scanf("%f", &a);
    Resulta(); printf("Arcsinus(%f)=%f",a,asin(a)); break;
    case 6: printf("\nVous avez choisi l'arc tangente d'un nombre.\nVeuillez saisir un nombre "); scanf("%f", &a);
    Resulta(); printf("Atg(%f)=%f",a,atan(a)); break;
    }
    }
    int Premierdeg()
    {
    float a,b;
    printf("Vous avez choisi le programme qui affiche la solution d'une equation du premier deg.");
    printf("\nEntrez la valeur de a: ", a); scanf("%f", &a);// Variable a
    printf("\nEntrez la valeur de b: ", b); scanf("%f", &b);// Variable b
    if (a==0) printf("Pas de solutions");
    else printf("La solution est: %f", -1*b/a);
    }
    main()
    {
        int ch;
    printf("Calculatrice basique capable d'effectuer les opperations suivantes: \n\n1)Operation sur un nombre\n2)Operations sur deux nombres\n3)Operation trigonometrique\n4)Resolution d'une equation du premier deg(Ax+B=0)\n5)Resolution d'une equation du second deg (Ax^2+Bx+C=0)");
    do{printf("\n\nChoisisez un nombre entre 1 et 5 correspendant a votre choix: "); scanf("%d", &ch);}while((ch!=1)&&(ch!=2)&&(ch!=3)&&(ch!=4)&&(ch!=5));
    printf("\n\n");
    switch(ch)
        {
        case 1: ExpLnSqrt(); break;
        case 2: Operations(); break;
        case 3: Trigonom(); break;
        case 4: Premierdeg(); break;
        case 5: Segondeg(); break;
        }
     
    }
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Pour recommencer un traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int run();
     
    int main(int argc, char *argv[]) {
        int keep_running;
        do
            keep_running = run();
        while (keep_running);
        return 0;
    }

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Par défaut
    Alors voila j'aivais fait quel que recherches avant de poster ici, j'avais déja vue se petit code mais je comprend vraiment pas comment l'utiliser. Je suis vraiment débutante en C Je connais les notions de base (Variables, Tableau, Boucles, ...) mais pas plus loin que ca pourrais tu m'aider un peu plus si-te-plait Aussi l'idée c'est rajouté un code qui permet a la fin d'une opération de donner un choix a l'utilisateur si il veut ou non recommencer.

  4. #4
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Je déduis du code posté que tu sais manipuler boucles et fonctions, tu ne devrais pas avoir grande difficulté à en ajouter quelques unes de plus. Qu'est-ce qui te bloque exactement ? Sois explicite.

    N'hésite pas à ajouter sauts de ligne et espacements pour mettre en page et indenter ton code, c'est gratuit !

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Par défaut
    Bien je vais m'expliquer un peu plus.

    Je ne sais pas se que signifie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, char *argv[])
    De se que je sais des fonctions il suffit d'écrire int nom-fonction () {Code} ou nom-fonction() si c'est une fonction avec un seul résultat possible et de l’appeler par nom-fonction.

    Hors la j'ai un code avec des choses que je n'ai jamais vue. J'avais dans l'idée de rajouter une variable Test a main() et a la fin demander si oui ou non le programme doit être relancer. Si Oui était enter alors T=='oui' et le programme recommence sinon le programme se ferme. Le problème c'est que dois-je rajouter après if (T=='oui') pour faire en sorte que le programme se relance depuis le début? puis que pour le fermer c'est simple il suffit de ne rien mettre.

    un truc dans se genre la
    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
     
    main()
    {
        int ch; char Ch2[3];
    printf("Calculatrice basique capable d'effectuer les opperations suivantes: \n\n1)Operation sur un nombre\n2)Operations sur deux nombres\n3)Operation trigonometrique\n4)Resolution d'une equation du premier deg(Ax+B=0)\n5)Resolution d'une equation du second deg (Ax^2+Bx+C=0)");
    do{printf("\n\nChoisisez un nombre entre 1 et 5 correspendant a votre choix: "); scanf("%d", &ch);}while((ch!=1)&&(ch!=2)&&(ch!=3)&&(ch!=4)&&(ch!=5));
    printf("\n\n");
    switch(ch)
        {
        case 1: ExpLnSqrt(); break;
        case 2: Operations(); break;
        case 3: Trigonom(); break;
        case 4: Premierdeg(); break;
        case 5: Segondeg(); break;
        }
    printf("Voulez vous recommencer? "); scanf("%s" ,&Ch2);
    if(Ch2=='oui') "Recommancer"
    }

  6. #6
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    int main(int argc, char *argv[]) est la signature de la fonction principale main telle qu'elle prenne des arguments depuis la ligne de commande. Ce n'est pas ce que je voulais te montrer à travers mon exemple, ce qui est pertinent c'est ce que j'ai mis à l'intérieur de cette fonction.

    Ton problème, c'est de l'algorithmique, pas du C. C'est-à-dire que tu dois déjà déterminer une solution sur une feuille de papier avant de t'attaquer au code.

    « Recommencer » un traitement, c'est exécuter une nouvelle fois la séquence d'instructions qui le compose. Comment fais-tu pour exécuter plusieurs fois une même séquence, d'habitude ?

  7. #7
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 258
    Par défaut
    C'est normal, tu débutes.

    Tu as des cours ici.

    Un bon exercice pour toi sera d'être capable de répondre pourquoi aux affirmations de Matt_houston :

    'oui' ne définit pas une chaîne de caractères ;
    trois octets ne sont pas suffisants pour stocker la chaîne "oui" ;
    l'opérateur == ne peut pas être utilisé pour comparer des chaînes de caractères ;
    et quand à scanf, on l'évites au profil de gets ou fgets par exemple, autre point d’intérêt pour toi.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [E-03] Après un tri comment faire des sous totaux
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/10/2008, 09h17
  2. Réponses: 3
    Dernier message: 14/02/2007, 22h33
  3. Comment faire un dossier de programmation ?
    Par Sylvanas dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 03/07/2006, 11h10
  4. comment faire pour démarrer une tâche apres une autre
    Par dh01 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 04/12/2005, 14h57
  5. Comment faire patienter un programme ?
    Par JlouisI dans le forum Débuter
    Réponses: 4
    Dernier message: 03/03/2003, 11h11

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