Votre question

Aide pour Programmation C++

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
6 Octobre 2007 13:13:02

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

Autres pages sur : aide programmation

6 Octobre 2007 15:19:51

salut,
et tu bloques sur quoi?
tu as un bout de code?
6 Octobre 2007 18:23:01

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 !
Contenus similaires
6 Octobre 2007 19:27:02

exactement de la meme facon que b, sauf qu'au lieu d'ajouter, tu effaces!
6 Octobre 2007 19:40:18

donc faut utiliser une boucle while et mettre un compteur initialiser i=0 et donc la valeur est i-- ???
6 Octobre 2007 20:06:19

poste le code de b
6 Octobre 2007 20:16:14

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;
}
7 Octobre 2007 16:08:29

Alors personne peut m'aider ?
7 Octobre 2007 17:05:46

en se basant sur ton programme, tu rajoutes ca après le 1er if
  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 ,
7 Octobre 2007 17:08:11

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 !
7 Octobre 2007 17:23:18

pour les espaces supplémentaires, il suffit de rajouter 2 boucles!
7 Octobre 2007 17:27:29

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
7 Octobre 2007 18:44:06

Help ?
7 Octobre 2007 19:09:48

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
7 Octobre 2007 19:19:44

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!
7 Octobre 2007 19:35:11

j'ai oublié de lui dire d'enlever le || x=' ' du premier if...
7 Octobre 2007 21:45:49

Oui vos conseil sont intéressant mais il m'avance pas trop dsl !
7 Octobre 2007 22:13:29

spike93 a dit :
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!
7 Octobre 2007 22:19:59

oki merci comme meme !
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS