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
Intel C2D E8200
8800 Gt 512 mo
salut,
et tu bloques sur quoi?
tu as un bout de code?
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 !
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!
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-- ???
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93
poste le code de b
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;
}
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93
Alors personne peut m'aider ?
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 :
|
par contre, ton programme ne fonctionne pas si le $ vient juste après un . ou une ,
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
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93
pour les espaces supplémentaires, il suffit de rajouter 2 boucles!
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
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93
| Citation :
|
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 :
|
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
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!
j'ai oublié de lui dire d'enlever le || x=' ' du premier if...
Penser à voir les tutos, ca peut aider!
Répondre à coca25
Oui vos conseil sont intéressant mais il m'avance pas trop dsl !
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
Penser à voir les tutos, ca peut aider!
Répondre à coca25
oki merci comme meme !
Intel C2D E8200
8800 Gt 512 mo
Répondre à spike93
Il y a 1491 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
