Aide pour un programme en c++
Résolu
ketty
-
ketty -
ketty -
Bonjour,
J' ai un programme en c++ à faire et je voudrais conjuguer les verbes du 1 er groupe au present à l imparfait et au passe simple de l indicatif . J ai du mal à savoir quels caractères il faut que je mette . Est ce que vous pouvez m aidez svp!
j ai deja commencer un peu mais c' est que le début !! :
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char n[20];
cout << "tapez un verbe de premier groupe : ";
cin >> n;
int i;
i = strlen(n );
if (i<=2 ||n[i-1]!='r' || n[i-2]!='e')
cout << "le verbe n est pas du premier groupe" << endl;
else
{
n[i-2]='\0';
cout << " je " << n << "e" << endl;
cout << " tu " << n << "es" << endl;
cout << " il " << n << "e" << endl;
cout << " nous " << n << "ons" << endl;
cout << " vous " << n << "ez" << endl;
cout << "ils " << n << " ent " << endl;
else
}
{
cout << " je " << n << "ais" << endl;
cout << " tu " << n << "ait" << endl;
cout << " il " << n << "ais" << endl;
cout << " nous " << n << "ions" << endl;
cout << " vous " << n << "iez" << endl;
cout << "ils " << n << " aient " << endl;
else
}
{
cout << " je " << n << "ai" << endl;
cout << " tu " << n << "as" << endl;
cout << " il " << n << "a" << endl;
cout << " nous " << n << "ames" << endl;
cout << " vous " << n << "ates" << endl;
cout << "ils " << n << " èrent " << endl;
else
}
{
if("present de l indicatif")
cout << "tapez comme temps le présent de l'indicatif " << endl;
}
{
if(" imparfait de l indicatif")
cout << " tapez comme temps l' imparfait de l'indicatif" << endl;
}
{
if(" passe simple de l indicatif")
cout << " tapez comme temps le passé simple de l'indicatif " << endl;
}
}
return 0;
}
Dites moi ce qu'il ne va pas merci!!
J' ai un programme en c++ à faire et je voudrais conjuguer les verbes du 1 er groupe au present à l imparfait et au passe simple de l indicatif . J ai du mal à savoir quels caractères il faut que je mette . Est ce que vous pouvez m aidez svp!
j ai deja commencer un peu mais c' est que le début !! :
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char n[20];
cout << "tapez un verbe de premier groupe : ";
cin >> n;
int i;
i = strlen(n );
if (i<=2 ||n[i-1]!='r' || n[i-2]!='e')
cout << "le verbe n est pas du premier groupe" << endl;
else
{
n[i-2]='\0';
cout << " je " << n << "e" << endl;
cout << " tu " << n << "es" << endl;
cout << " il " << n << "e" << endl;
cout << " nous " << n << "ons" << endl;
cout << " vous " << n << "ez" << endl;
cout << "ils " << n << " ent " << endl;
else
}
{
cout << " je " << n << "ais" << endl;
cout << " tu " << n << "ait" << endl;
cout << " il " << n << "ais" << endl;
cout << " nous " << n << "ions" << endl;
cout << " vous " << n << "iez" << endl;
cout << "ils " << n << " aient " << endl;
else
}
{
cout << " je " << n << "ai" << endl;
cout << " tu " << n << "as" << endl;
cout << " il " << n << "a" << endl;
cout << " nous " << n << "ames" << endl;
cout << " vous " << n << "ates" << endl;
cout << "ils " << n << " èrent " << endl;
else
}
{
if("present de l indicatif")
cout << "tapez comme temps le présent de l'indicatif " << endl;
}
{
if(" imparfait de l indicatif")
cout << " tapez comme temps l' imparfait de l'indicatif" << endl;
}
{
if(" passe simple de l indicatif")
cout << " tapez comme temps le passé simple de l'indicatif " << endl;
}
}
return 0;
}
Dites moi ce qu'il ne va pas merci!!
A voir également:
- Aide pour un programme en c++
- Mettre en veille un programme - Guide
- Programme demarrage windows - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Desinstaller un programme - Guide
5 réponses
1) Quelques petites remarques :
- attention au verbe aller comme le souligne alphatratz à juste titre
- les conseils de char snipeur sont justes même si la solution de char * reste tout à fait valable (voir ci dessous l'approche C++ avec std::string). Il a juste fait un petit abus de langage, on peut (et c'est complètement juste et pas ambigu) mettre autre chose qu'un bool dans un if(...) (d'autant plus en C que le type bool n'existe pas. Dans ce cas tout ce qui est différent de 0 ou NULL est considéré comme vrai.
Exemple :
Mais par contre, tes tests ne faisaient pas du tout ce que tu croyais. Concrètement, écrire :
... revient à vérifier si l'adresse de la chaîne "toto" est non nulle, ce qui sera toujours vrai.
2) Tu peux éviter de réecrire std::cout << ... << std::endl; en les chaînant, ce qui en plus est plus efficace.
Exemple :
3) Autre erreur, en C/C++ une chaîne est entre "..." et non entre '...' (les simples quotes servent pour décrire un caractère) :
Exemple :
4) Voici par exemple ce que tu pourrais écrire :
.. ce qui donne :
... et :
Bonne chance
- attention au verbe aller comme le souligne alphatratz à juste titre
- les conseils de char snipeur sont justes même si la solution de char * reste tout à fait valable (voir ci dessous l'approche C++ avec std::string). Il a juste fait un petit abus de langage, on peut (et c'est complètement juste et pas ambigu) mettre autre chose qu'un bool dans un if(...) (d'autant plus en C que le type bool n'existe pas. Dans ce cas tout ce qui est différent de 0 ou NULL est considéré comme vrai.
Exemple :
unsigned num_joueurs; std::cout << "Nombre de joueurs ?" std::cin >> num_joueurs; if(num_joueurs){ std::cout << "Il y a au moins un joueur << std::endl; } else { std::cout << "Il y a 0 joueur << std::endl; }
Mais par contre, tes tests ne faisaient pas du tout ce que tu croyais. Concrètement, écrire :
if("toto")
... revient à vérifier si l'adresse de la chaîne "toto" est non nulle, ce qui sera toujours vrai.
2) Tu peux éviter de réecrire std::cout << ... << std::endl; en les chaînant, ce qui en plus est plus efficace.
Exemple :
std::cout << "tata" << std::endl << "titi" << std::endl << "toti" << std::endl;
3) Autre erreur, en C/C++ une chaîne est entre "..." et non entre '...' (les simples quotes servent pour décrire un caractère) :
Exemple :
char c = 'x'; const char *s = "coucou";
4) Voici par exemple ce que tu pourrais écrire :
#include <vector> #include <map> #include <string> #include <iostream> typedef enum _enum_personnes_t{ SINGULIER_1 = 0, SINGULIER_2, SINGULIER_3, PLURIEL_1, PLURIEL_2, PLURIEL_3, NUM_PERSONNES } enum_personnes_t; typedef enum _enum_temps_t{ INDICATIF_PRESENT = 0, INDICATIF_IMPARFAIT, // ajoute les autres temps ici... NUM_TEMPS } enum_temps_t; typedef std::vector<std::string> personnes_t; typedef std::vector<std::string> temps_t; typedef std::vector<std::vector<std::string> > terminaisons_t; personnes_t get_personnes() { std::vector<std::string> personnes(NUM_PERSONNES); personnes[SINGULIER_1] = "je"; personnes[SINGULIER_2] = "tu"; personnes[SINGULIER_3] = "il, elle, on"; personnes[PLURIEL_1] = "nous"; personnes[PLURIEL_2] = "vous"; personnes[PLURIEL_3] = "ils, elles"; return personnes; } temps_t get_temps() { std::vector<std::string> temps(NUM_TEMPS); temps[INDICATIF_PRESENT] = "Présent de l'indicatif"; temps[INDICATIF_IMPARFAIT] = "Imparfait de l'indicatif"; return temps; } terminaisons_t get_terminaisons() { std::vector<std::vector<std::string> > terminaisons( NUM_TEMPS, std::vector<std::string>(NUM_PERSONNES) ); // Présent de l'indicatif terminaisons[INDICATIF_PRESENT][SINGULIER_1] = "e"; terminaisons[INDICATIF_PRESENT][SINGULIER_2] = "es"; terminaisons[INDICATIF_PRESENT][SINGULIER_3] = "e"; terminaisons[INDICATIF_PRESENT][PLURIEL_1] = "ons"; terminaisons[INDICATIF_PRESENT][PLURIEL_2] = "ez"; terminaisons[INDICATIF_PRESENT][PLURIEL_3] = "ent"; // Imparfait de l'indicatif terminaisons[INDICATIF_IMPARFAIT][SINGULIER_1] = "ais"; terminaisons[INDICATIF_IMPARFAIT][SINGULIER_2] = "ais"; terminaisons[INDICATIF_IMPARFAIT][SINGULIER_3] = "ait"; terminaisons[INDICATIF_IMPARFAIT][PLURIEL_1] = "ions"; terminaisons[INDICATIF_IMPARFAIT][PLURIEL_2] = "iez"; terminaisons[INDICATIF_IMPARFAIT][PLURIEL_3] = "aient"; // etc... return terminaisons; } int main(){ // Initialisation du programme temps_t temps = get_temps(); personnes_t personnes = get_personnes(); terminaisons_t terminaisons = get_terminaisons(); // Saisie du verbe std::string verbe; do { std::cout << "Veuillez saisir un verbe du 1er groupe" << std::endl; std::cin >> verbe; } while(verbe == "aller" || verbe.rfind("er") + 2 != verbe.length()); // Saisie du temps unsigned idx_temps; do { std::cout << "Veuillez saisir un temps" << std::endl; for(std::size_t i = 0 ; i < NUM_TEMPS; ++i) { std::cout << i << ") " << temps[i] << std::endl; } std::cin >> idx_temps; } while(idx_temps >= NUM_TEMPS); std::string base(verbe, 0, verbe.length() - 2); // On conjugue std::cout << temps[idx_temps] << std::endl; for(std::size_t i = 0 ; i < NUM_PERSONNES; ++i) { std::cout << personnes[i] << ' ' << base << terminaisons[idx_temps][i] << std::endl; } return 0; }
.. ce qui donne :
Veuillez saisir un verbe du premier groupe marcher Veuillez saisir un temps 0) Présent de l'indicatif 1) Imparfait de l'indicatif 1 Imparfait de l'indicatif je marchais tu marchais il, elle, on marchait nous marchions vous marchiez ils, elles marchaient
... et :
Veuillez saisir un verbe du premier groupe marcher Veuillez saisir un temps 0) Présent de l'indicatif 1) Imparfait de l'indicatif 0 Présent de l'indicatif je marche tu marches il, elle, on marche nous marchons vous marchez ils, elles marchent
Bonne chance
bonjour,
je vais juste esayer de te mettre sur les bonnes raies..... :)
pour les terminaisons present, passé simple........, crées plutot des tableaux ou tu vas mattre toutes tes terminaison, mais d'abord, crées d'abord une classe, par exemple:
class conjugaison{
public://variables membres
char present[8]={'e','es','e','e','ons','ez','ent','ent'};
char passe-simple[8]...........
..............................................
char qui[8]={'je','tu','il','elle','nous','vous','ils','elles'};
char* verbe; //pou recuperer l'adresse du verbe qu'on souhaite conjuguer
char* temps; //pour recuperer l'adresse du temps auquel on souhaite conjuguer
//fonction membre
public:
void conjuguer(void);
char sans_terminaison(void); //renvoit le verbe sans terminaison (er....)
void lire_verbe_temps(void);
}//fin class
void main (void){
conjugaison A;
//tu dois d'abord acquérir le verbe et le temps en appelant :
A.lire_verbe_temps();
//puis conjugaison
A.conjuguer();
}//fin main
void conjugaison::lire_verbe_temps(void){
cout<<entrer le verbe<<endl;
cin<<this->verbe;
cout<<entrer le temps<<endl;
cin<<this->temps;
}
void conjugaison::conjuguer(void){
for(int i=0;i<8,i++){
cout<<qui[i]<<" "<<sans_terminaison()<<present[i]<<endl;
}
for(int i=0;i<8,i++){
cout<<qui[i]<<" "<<sans_terminaison()<<passer_simple[i]<<endl;
}
//........meme chose pour les autre temps
}//fin
char conjugaison::sans_terminaison(void){
//la tu dois renvoyer le verbe sans terminaison
//excuse moi j'ai pas trop le temps, je dois aller a l'ecole
//si t'as besoin de plus d'aide pour cette partie, n'hesite pas a me le demander...
}
bon courage pour la suite;)
je vais juste esayer de te mettre sur les bonnes raies..... :)
pour les terminaisons present, passé simple........, crées plutot des tableaux ou tu vas mattre toutes tes terminaison, mais d'abord, crées d'abord une classe, par exemple:
class conjugaison{
public://variables membres
char present[8]={'e','es','e','e','ons','ez','ent','ent'};
char passe-simple[8]...........
..............................................
char qui[8]={'je','tu','il','elle','nous','vous','ils','elles'};
char* verbe; //pou recuperer l'adresse du verbe qu'on souhaite conjuguer
char* temps; //pour recuperer l'adresse du temps auquel on souhaite conjuguer
//fonction membre
public:
void conjuguer(void);
char sans_terminaison(void); //renvoit le verbe sans terminaison (er....)
void lire_verbe_temps(void);
}//fin class
void main (void){
conjugaison A;
//tu dois d'abord acquérir le verbe et le temps en appelant :
A.lire_verbe_temps();
//puis conjugaison
A.conjuguer();
}//fin main
void conjugaison::lire_verbe_temps(void){
cout<<entrer le verbe<<endl;
cin<<this->verbe;
cout<<entrer le temps<<endl;
cin<<this->temps;
}
void conjugaison::conjuguer(void){
for(int i=0;i<8,i++){
cout<<qui[i]<<" "<<sans_terminaison()<<present[i]<<endl;
}
for(int i=0;i<8,i++){
cout<<qui[i]<<" "<<sans_terminaison()<<passer_simple[i]<<endl;
}
//........meme chose pour les autre temps
}//fin
char conjugaison::sans_terminaison(void){
//la tu dois renvoyer le verbe sans terminaison
//excuse moi j'ai pas trop le temps, je dois aller a l'ecole
//si t'as besoin de plus d'aide pour cette partie, n'hesite pas a me le demander...
}
bon courage pour la suite;)
d accord avec jenaimarre2fr dans l'ensemble. Juste peut être que comme tu fais du C++ au lieu d'utiliser les char* utilise les std::string, ça évite de se poser des questions de dimension.
Les grosses erreurs dans ton code :
seulement un else par if.
éviter de mettre autre chose que des valeurs booléenne dans les if (là tu mets au final un pointeur, ça n'a pas de sens).
Les grosses erreurs dans ton code :
seulement un else par if.
éviter de mettre autre chose que des valeurs booléenne dans les if (là tu mets au final un pointeur, ça n'a pas de sens).
Désolé de ne pas pouvoir t'aider car je ne connais pas trop le codage, mais je sais que dans la plupart des correcteurs orthographiques amateurs, l'erreur se trouve au verbe ALLER qui n'est pas au premier groupe !!!
Bonne chance
Cordialement
Bonne chance
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question