Tom's Guide > Forum > Programmation > Aide pour Programmation C++
Aide pour Programmation C++ - Programmation
TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Salut à tous voila j'ai un mini projet à rendre pour mardi et il me reste une question ou je bloque, je voulais avoir de l'aide et non pas des réponses pour résoudre ce prob !!!

Je vous met le programme ci-dessous:

a) écrire un programme qui demande un texte à l'utilisateur (une suite de caractères terminée par le marqueur de fin $), et affiche le texte entré en ayant retiré les caractères invalides.

b) Modifier le programme précédent de telle sorte qu'en plus de retirer les caractère invalide il ajoute un espace derrière chaque caractère de séparation ('.' et ',').
c) Modifier le programme précédent en ajoutant un espace derrière les caractères de séparation que s'il n'y en a pas déja un dans le texte initiale.
d) Modifier le prog précédent en supprimant les espaces précédant chaque caractère de séparation ('.' et ',')

Voila alors moi et mon ami avons fait le a, b c et nous bloquons sur le D quelqu'un a une solution ???

Sachant qu'il faut utiliser un langage c++ assé simple (boucle, conditionnel, for, while, if, i++ etc....)

merci d'avance

------------------------------ Spike
Intel C2D E8200
8800 Gt 512 mo
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

salut,
et tu bloques sur quoi?
tu as un bout de code?

------------------------------ Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Répondre à coca25

oui j'ai tout le début du code la kestion a,b et c et enfait je vois pas comment faire pour faire la d !

------------------------------ Spike
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93

exactement de la meme facon que b, sauf qu'au lieu d'ajouter, tu effaces!

------------------------------ Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Répondre à coca25

donc faut utiliser une boucle while et mettre un compteur initialiser i=0 et donc la valeur est i-- ???

------------------------------ Spike
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93

poste le code de b

------------------------------ Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Répondre à coca25

La ya le code a,b,c

#include <iostream>
using namespace std;
int main()
{
const char STOP='$';
char x;
cout << "Entrer une chaine de caracteres : " << endl;
cin.get(x);
while (x!=STOP)
{
if (x>='a' && x<='z' || x==' ')
{
cout << x;
cin.get(x);
}
else if (x=='.' || x==',')
{
cout << x;
cin.get(x);
if (x!=' ') {
cout << " " << x;
}
else {
cout << x;
}
cin.get(x);
}
else
{
cin >> x;
}
}
return 0;
}

------------------------------ Spike
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93

Alors personne peut m'aider ?

------------------------------ Spike
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93

en se basant sur ton programme, tu rajoutes ca après le 1er if

Code :
  1. else if (x == ' ')
  2. {
  3.   cin.get(x);
  4.   if (x!='.' && x!=',') cout << ' ';
  5. }


par contre, ton programme ne fonctionne pas si le $ vient juste après un . ou une ,

------------------------------ Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Répondre à coca25

a oui et alors comment faire ?

De plus je viens de tester ce que tu as di, sa fonctionne effectivement mais regarde ce que j'obtient quand je le test

Entrer une chaine de caracteres :
abc. abc.abc . abc . abc . abc.
abc. abc. abc . abc . abc . abc.

Il supprime pas les espaces inutiles !


Message édité par spike93 le 07-10-2007 à 17:13:22
------------------------------ Spike
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93

pour les espaces supplémentaires, il suffit de rajouter 2 boucles!

------------------------------ Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Répondre à coca25

des boucles while, mais le soucis c'est que j'ai tellement de boucle que je m'emmêle ls pinceaux, pourrais tu être plus précis concernant le code stp, car mon code c++ devient un peut fouilli, j'ai rajouter ce que tu m'a dit de rajouter et j'obtient cela ==>

#include <iostream>
using namespace std;
int main()
{
const char STOP='$';
char x;
cout << "Entrer une chaine de caracteres : " << endl;
cin.get(x);
while (x!=STOP)
{
if (x>='a' && x<='z' || x==' ')
{
cout << x;
cin.get(x);
}
else if (x == ' ')
{
cin.get(x);
if (x!='.' && x!=',')
cout << ' ';
}
else if (x=='.' || x==',')
{
cout << x;
cin.get(x);
if (x!=' ')
{
cout << " " << x;
}
else
{
cout << x;
}
cin.get(x);
}
else
{
cin >> x;
}
}
return 0;
}

et pour l'instant les seuls probleme rencontré sont le $ qui ne fonctione pas aprés le . et la , et les espaces inutiles qui ne sont pas supprimer avant le le. et la ,

Merci beaucoup

------------------------------ Spike
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93

Help ?

------------------------------ Spike
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93

Citation :


que j'ai tellement de boucle que je m'emmêle ls pinceaux, pourrais tu être plus précis concernant le code stp.



Alors reprends les bases de la programmation: quand tu auras des programmes de 2 ou 3000 lignes, c'est pas 2 ou 3 boucles que tu auras, mais des 10aines !


Citation :


car mon code c++ devient un peut fouilli


Même remarque:
1 petit conseil pour éclairer ton code, fais le pas à pas, et quand tu estime que ton code devient trop fourni, commentes ton source

while (a < 10)
{
if(toto = 1)
{
if(tutu < 10)
{

} //fin tutu < 10
else
{

} //fin else tutu <10
} //fin toto= 1

etc.
} //fin while a<10

Répondre à elendilm

if (x>='a' && x<='z' || x==' ') // EN 1
{
cout << x;
cin.get(x);
}
else if (x == ' ') // EN 2
{
cin.get(x);
if (x!='.' && x!=',')
cout << ' ';
}

Ensuite, perso, je n'aime pas trop les else if else if imbriqués. Ton code est "illisible" ..

if( )
{

}
else
{
if ( )
{

}
else
{
if( )
{

}

}
}


1: D'un coup c'est plus lisible, et surtout PENSES à l'indentation .. c'est vital pour lire un code.
En 1:
si x est entre a et z ou si x= ' '
..
En 2:
sinon si x= ' '

Ta condition 2 ne se vérifie jamais (le else) car on rentre systématiquement en 1!

Répondre à elendilm

j'ai oublié de lui dire d'enlever le || x=' ' du premier if...

------------------------------ Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Répondre à coca25

Oui vos conseil sont intéressant mais il m'avance pas trop dsl !

------------------------------ Spike
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93

spike93 a écrit :

je voulais avoir de l'aide et non pas des réponses pour résoudre ce prob !!!


faudrait savoir :)
la solution que je t'ai proposée fonctionne pour un espace, il suffit de l'améliorer pour plusieurs espaces!


Message édité par coca25 le 07-10-2007 à 22:13:43
------------------------------ Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Répondre à coca25

oki merci comme meme !

------------------------------ Spike
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93
Tom's Guide > Forum > Programmation > Aide pour Programmation C++
Aller à :

Il y a 1491 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens