déclaration variable, chaine de caractère - C++ - Programmation
Marsh Posté le 26-12-2002 à 22:16:54
bon
Code :
|
Marsh Posté le 26-12-2002 à 22:18:31
c'est normal que sous dev-cpp il reconnait pas la declaration string ?
Marsh Posté le 26-12-2002 à 22:29:23
ah non j'avais pas essayé , ca marche faut simplement mettre using namespace std si j'ai bien compris ??
autre chose pourquoi ca marche pas quand je mets les .h ?
merci
Marsh Posté le 26-12-2002 à 22:31:47
par ce que les .h sont les vieilles versions de la bilbiotheque standard qui ne sont gardées que pour la compatiblité.
toute la bibliotheque standard est dans des entetes sans .h et déclarée dans le namespace std. donc, il ne faut jamais oublié le using... voila
Marsh Posté le 26-12-2002 à 22:54:58
merci beaucoup c'est pour moi une grande aide
ça tombe bien j'en ai des tonnes de questions
en fait j'aimerais determiner dans la chaine de caractère, la lettre la plus présente (et le nombre de fois qu'elle est présente), maisje sais pas par où commencer aurais-tu qyekqyes urls à me conseiller sur la manipulation de chaine ?
mon code ressemble à ça par l'instant
#include <iostream.h>
#include <string>
using namespace std;
int main()
{
string chaine;
cin>>chaine;
...
...
}
Marsh Posté le 26-12-2002 à 22:57:05
#include <iostream.h> sans .h s'il te plait
cin >> chaine, ne soit pas avare en esapce ici
ben il te faut mémoriser dans un tableau ou autre chose, l'ensemble des statistic. tu veux la méthode compliquée ou la simple (mais pas forcément)?
Marsh Posté le 26-12-2002 à 23:00:58
non je veux juste que tu m'oriente m'explique ,comment je dois m'y prendre, la démarche à suivre quoi.. (la methode simple pour commencer c mieux non ? )
Marsh Posté le 26-12-2002 à 23:04:15
ben comme sur papier: si on par du principe qu'il y a 26 lettres dans l'alphabet, il faut faire un tableau de 256 cases avec en face un 0. a chaque fois qu'on trouve une lettre on fait +1
on peut parcourir une chaine comme ça
Code :
|
une explication sur les tableaux simples (comme en C?)
Marsh Posté le 26-12-2002 à 23:09:03
ok .. mais j'ai rien compris à ton code.. j'vois que t'utilises les pointeurs ça tombe mal j'y comprends que dalle :-/
j'vais bouquiner un peu sur les tableaux tu pourrais m'expliquer ton code ? me montrer et m'expliquer un code à mon problème ?
grand merci à toi encore
Marsh Posté le 26-12-2002 à 23:12:16
ok
"++i" ya pas de pointeurs dans ça ?
je confonds avec * je crois.. ?
Marsh Posté le 26-12-2002 à 23:14:57
et c'est quoi ce i ?
je commence à etre chiant n'est ce pas ?
Marsh Posté le 26-12-2002 à 23:23:31
très peu, je vais allez bouquiner sur les boucles et tableau de ce pas..
Marsh Posté le 27-12-2002 à 00:03:23
umer a écrit : je commence trop tard ? |
non, au contraire. mais t'aruas peu etre pu ommencer par plus facile
Marsh Posté le 27-12-2002 à 13:30:15
umer a écrit : je trouve que c'est le plus intéréssant |
oui, mais ca fait appel a des notions assez avancées pour debuter.
Marsh Posté le 27-12-2002 à 14:24:40
j'ai un peu avancé.. je comprends mieux là, sauf un truc
cette ligne là "size_t chaine_len=chaine.lenght()"
et d'ailleurs elle pose problème lors de la compilation
le code c'est ça :
#include <iostream>
#include <string>
using namespace std;
int main()
{
string chaine;
cin >> chaine;
char lettres[26];
unsigned i;
size_t chaine_len=chaine.lenght();
for(unsigned i=0;
i < chaine_len;
i++)
chaine[i];
}
et l'erreur de compil : 13 no matching function for call to `basic_string<char,string_char_traits<char>,__default_alloc_template<false,0> >::lenght ()'
sinon j'aimerais comparer ensuite les differents indices et trouver afficher le plus élevé avec la lettre correspondante j'dois faire comment ?
merci
merci
Marsh Posté le 27-12-2002 à 15:46:47
arf c'est pas un peu compliqué et lourd de comparer les 26 indice entre eux ?
Marsh Posté le 27-12-2002 à 17:59:29
Le hic c'est que ton code il fait rien :
chaine[i];
ca fait rien ca !
faut que tu te créés un tableau de fréquences et que tu y stockes les frequences de chaque caracteres.
un truc du genre :
Code :
|
c'est ce que t'as fait avec lettres, sauf que 256 c'est plus sûr et simple (avec 26, faut faire un truc genre chaine[i] - 'A' et si ta lettre est autre chose qu'une majuscule ... aie aie aie)
Tu peux le faire version full stl en utilisant un vector au lieu du tableau classique.
Code :
|
ca s'utilise pareil après, moyennant "#include <vector>".
Apres pour obtenir le max, tu peux le faire simplement (tu parcours de 0 à 255, et tu cherches le max) ou full stl, en traint avec sort de <algorithm>, et là t'as les caracteres triés par ordre d'apparition.
Mais la faut créer un tableau de structures du type (caractere, frequence) car sinon tu sais plus a quel caractere est associée telle frequence.
On peut aussi chipoter pour le 256, et préconiser (UCHAR_MAX + 1) de <climits>
Marsh Posté le 26-12-2002 à 22:06:59
je m'y suis surement mal pris, mais mes recherches ont été infructueues (chui un mega newbie de la mort.Mon problème c'est que je voudrais déclarer une chaine de caractère comme variable (une chaine de caractère en entrée clavier), mais je ne sais pas comment faire ? je n'ai vu sque char qui se réfère aux caractères, mais moi je voudrais la chaine complète.. c possible ??
merci