Programme cpp (C++) débutant
Résolu/Fermé
LelLex
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
-
1 nov. 2010 à 03:42
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 20 mai 2011 à 11:14
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 20 mai 2011 à 11:14
A voir également:
- Programme cpp (C++) débutant
- Programme demarrage windows 10 - Guide
- Logiciel de programmation pour débutant - Guide
- Désinstaller programme windows 10 - Guide
- Dev cpp - Télécharger - Langages
- Forcer la fermeture d'un programme - Guide
5 réponses
doctorpower
Messages postés
359
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
4 décembre 2011
68
1 nov. 2010 à 04:53
1 nov. 2010 à 04:53
salut, je ne prog pas en c++ mais sur le principe je peux t'aider.
Pour faire tourner ton programme en boucle il suffit de faire une boucle while, par exemple:
while(x=0)
{
...ton programme...
}
et a la fin de ton programme tu demande a l utilisateur s'il veut arreter le programme, et tu change x=1
dsl si jai mal compris ta question
Pour faire tourner ton programme en boucle il suffit de faire une boucle while, par exemple:
while(x=0)
{
...ton programme...
}
et a la fin de ton programme tu demande a l utilisateur s'il veut arreter le programme, et tu change x=1
dsl si jai mal compris ta question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
Modifié par fiddy le 1/11/2010 à 14:04
Modifié par fiddy le 1/11/2010 à 14:04
Bonjour,
Tu compares un char avec une chaîne de caractère. Ca ne risque pas de marcher.
Pour que ta variable q soit un tableau, il faut mettre : char q[50]; /*tu pourras mettre une phrase de 49 caractères*/
scanf("%c", &q)
Pour une chaîne de caractères, il faut mettre "%s". Mais tu ne pourras pas mettre d'espaces. Bien sûr si tu veux vraiment utiliser scanf, c'est possible mais un peu compliqué quand on débute.
Donc, utilise plutôt fgets : fgets(q, sizeof q, stdin);
Attention, dans ta variable q, il y aura le code de la touche entrée.
Pour strcmp, il faudra donc mettre : if (strcmp(q,"Question 1 ?\n")==0)
Etc.
Par contre, toute ta façon de faire ressemble plus à du C qu'à du C++. Pourquoi ne pas utiliser les string ? Ca se ferait en deux coups de cuillères à pot.
Cdlt,
Tu compares un char avec une chaîne de caractère. Ca ne risque pas de marcher.
Pour que ta variable q soit un tableau, il faut mettre : char q[50]; /*tu pourras mettre une phrase de 49 caractères*/
scanf("%c", &q)
Pour une chaîne de caractères, il faut mettre "%s". Mais tu ne pourras pas mettre d'espaces. Bien sûr si tu veux vraiment utiliser scanf, c'est possible mais un peu compliqué quand on débute.
Donc, utilise plutôt fgets : fgets(q, sizeof q, stdin);
Attention, dans ta variable q, il y aura le code de la touche entrée.
Pour strcmp, il faudra donc mettre : if (strcmp(q,"Question 1 ?\n")==0)
Etc.
Par contre, toute ta façon de faire ressemble plus à du C qu'à du C++. Pourquoi ne pas utiliser les string ? Ca se ferait en deux coups de cuillères à pot.
Cdlt,
LelLex
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
112
Modifié par LelLex le 1/11/2010 à 13:22
Modifié par LelLex le 1/11/2010 à 13:22
Merci @fiddy ; quand tu parles de strings, tu veux dire quoi ?
Ah d'accord, du C, autant pour moi. Je changerais donc mes librairies.
Donc, avec votre aide, je pense faire ces modifications :
Ai-je bien fait mes modifications ?
Cordialement, merci d'avance.
Ah d'accord, du C, autant pour moi. Je changerais donc mes librairies.
Donc, avec votre aide, je pense faire ces modifications :
#include "stdio.h" #include "stdlib.h" #include "string.h" int main(int argc, char *argv[]) { // On initialise la variable question char question[100] = "Pas de question"; scanf("%s", question); // Ne prend pas en compte les espaces, c'est bien ça ?! /* *** OU *** */ fgets(question, sizeof question, stdin); // Prend en compte les espaces, c'est bien ça ?! if(strcmp(question, "Question 1 ?\") == 0) { printf("Réponse 1.\n"); } else if(strcmp(question, "Question 2 ?\") == 0) { printf("Réponse 2.\n"); } return 0; }
Ai-je bien fait mes modifications ?
Cordialement, merci d'avance.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
1 nov. 2010 à 14:04
1 nov. 2010 à 14:04
quand tu parles de strings, tu veux dire quoi ?
A la place des tableaux de char, tu peux mettre : string question;
Toute l'allocation est gérée automatiquement, mais c'est du domaine du C++ avec l'apparition notable des classes.
#include "stdio.h" => #include <stdio.h>
La remarque s'applique pour stdlib.h et string.h
scanf("%s", question); // Ne prend pas en compte les espaces, c'est bien ça ?!
Exactement. Si t'écris : "je m'appelle LeILex", question vaudra "je".
fgets(question, sizeof question, stdin); // Prend en compte les espaces, c'est bien ça ?!
Oui. Ici question aurait valu : "je m'appelle LeILex\n". Il ne faut pas oublier que le code ascii de la touche entrée est également stockée.
if(strcmp(question, "Question 1 ?\") == 0)
Il faut mettre f(strcmp(question, "Question 1 ?\n") == 0)
'\n' représente la touche entrée.
Cdlt,
A la place des tableaux de char, tu peux mettre : string question;
Toute l'allocation est gérée automatiquement, mais c'est du domaine du C++ avec l'apparition notable des classes.
#include "stdio.h" => #include <stdio.h>
La remarque s'applique pour stdlib.h et string.h
scanf("%s", question); // Ne prend pas en compte les espaces, c'est bien ça ?!
Exactement. Si t'écris : "je m'appelle LeILex", question vaudra "je".
fgets(question, sizeof question, stdin); // Prend en compte les espaces, c'est bien ça ?!
Oui. Ici question aurait valu : "je m'appelle LeILex\n". Il ne faut pas oublier que le code ascii de la touche entrée est également stockée.
if(strcmp(question, "Question 1 ?\") == 0)
Il faut mettre f(strcmp(question, "Question 1 ?\n") == 0)
'\n' représente la touche entrée.
Cdlt,
LelLex
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
112
Modifié par LelLex le 1/11/2010 à 14:40
Modifié par LelLex le 1/11/2010 à 14:40
Merci beaucoup @fiddy.
Donc maintenant, on à ça :
J'vais essayer de le compiler ça, car j'utilisais g++ dans le Terminal sous Ubuntu, mais la je vais devoir essayer gcc !?
Cordialement.
Donc maintenant, on à ça :
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { // On initialise la variable question char question[100] = "Pas de question"; // On récupère l'entrée clavier fgets(question, sizeof question, stdin); if(strcmp(question, "Question 1 ?\n") == 0) { printf("Réponse 1.\n"); } else if(strcmp(question, "Question 2 ?\n") == 0) { printf("Réponse 2.\n"); } return 0; }
J'vais essayer de le compiler ça, car j'utilisais g++ dans le Terminal sous Ubuntu, mais la je vais devoir essayer gcc !?
Cordialement.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
1 nov. 2010 à 14:41
1 nov. 2010 à 14:41
Oui utilise gcc puisque c'est du C.
Sinon le code est bon.
Sinon le code est bon.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
LelLex
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
112
1 nov. 2010 à 15:06
1 nov. 2010 à 15:06
Okay, merci beaucoup, bon je vais faire ça. Maintenant, faut que je t'intègre le fait que les questions puissant se répéter en faisant une boucle...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
1 nov. 2010 à 15:10
1 nov. 2010 à 15:10
Une simple boucle for avec un tableau des questions, un tableau de réponse, ça sera tip top ;-))).
Ensuite, cela permettra une évolution facile du programme. Par exemple, lire les questions / réponses dans un fichier.
Bonne recherche.
Ensuite, cela permettra une évolution facile du programme. Par exemple, lire les questions / réponses dans un fichier.
Bonne recherche.
LelLex
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
112
1 nov. 2010 à 16:48
1 nov. 2010 à 16:48
Comment je pourrais faire ça ? Donne moi une piste @fiddy . :) Merci d'avance!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
Modifié par fiddy le 1/11/2010 à 17:29
Modifié par fiddy le 1/11/2010 à 17:29
C'était déjà une piste que j'ai donnée ^^.
Sinon en gros :
char *question[10]={"Question 1", "Question 2", ...};
char *reponse[10]={"Reponse 1\n", "Reponse 2\n", ...};
Ainsi un simple :
i
Cdlt,
Sinon en gros :
char *question[10]={"Question 1", "Question 2", ...};
char *reponse[10]={"Reponse 1\n", "Reponse 2\n", ...};
Ainsi un simple :
i
nt i; for(i=0;i<10,i++) { puts(question[i]); if (strcmp(...) etc. }
Cdlt,
LelLex
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
112
1 nov. 2010 à 17:32
1 nov. 2010 à 17:32
D'accord, merci...
1 nov. 2010 à 11:04
Plutôt while(x==0)
20 mai 2011 à 02:57
20 mai 2011 à 11:14
C'est while(x==0). En C, l'opérateur de comparaison est le double opérateur égal (==).
Si tu fais, while(x=0) {ins; ...}, cela fera : x=0; while(0) {ins; ...}. Autrement dit, cela fera juste x=0...