Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1052 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  déclaration variable, chaine de caractère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

déclaration variable, chaine de caractère

n°276207
Umer
Posté le 26-12-2002 à 22:06:59  profilanswer
 

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 :)

mood
Publicité
Posté le 26-12-2002 à 22:06:59  profilanswer
 

n°276212
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 22:11:35  profilanswer
 

en C ou en C++?


---------------
du bon usage de rand [C] / [C++]
n°276213
Umer
Posté le 26-12-2002 à 22:13:08  profilanswer
 

C++ :)

n°276215
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 22:16:54  profilanswer
 

bon
 

Code :
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main()
  5. {
  6.   string chaine;
  7.   cin >> chaine; // lit un mot
  8.   cout << chaine << '\n';
  9.   // cette boucle lit le flux standard ligne par ligne
  10.   // (donc une chaine peut conproter des espaces)
  11.   while(getline(cin, chaine))
  12.   // CTRl-Z pour arretez sous windows
  13.   // CTRl-D sous linux
  14.   {
  15.     cout << chaine << '\n';
  16.   }
  17. }


Message édité par Taz@PPC le 26-12-2002 à 22:17:04

---------------
du bon usage de rand [C] / [C++]
n°276217
Umer
Posté le 26-12-2002 à 22:18:31  profilanswer
 

c'est normal que sous dev-cpp il reconnait pas la declaration string ?  :(  :(  :(

n°276218
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 22:19:18  profilanswer
 

tu essayes le bout de code que je viens de te donner?


---------------
du bon usage de rand [C] / [C++]
n°276220
Umer
Posté le 26-12-2002 à 22:29:23  profilanswer
 

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 :)

n°276222
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 22:31:47  profilanswer
 

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


---------------
du bon usage de rand [C] / [C++]
n°276232
Umer
Posté le 26-12-2002 à 22:42:30  profilanswer
 

merci beaucoup :) :)

n°276233
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 22:43:01  profilanswer
 

pas de problème. n'hesite pas à poser des questions et à soumettre du code


---------------
du bon usage de rand [C] / [C++]
mood
Publicité
Posté le 26-12-2002 à 22:43:01  profilanswer
 

n°276238
Umer
Posté le 26-12-2002 à 22:54:58  profilanswer
 

merci beaucoup c'est pour moi une grande aide :)
ça tombe bien j'en ai des tonnes de questions  :ange:  
 
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;
  ...
  ...
}


Message édité par Umer le 26-12-2002 à 22:56:26
n°276240
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 22:57:05  profilanswer
 

#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)?


---------------
du bon usage de rand [C] / [C++]
n°276243
Umer
Posté le 26-12-2002 à 23:00:58  profilanswer
 

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 ? :) )

n°276247
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 23:04:15  profilanswer
 

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 :
  1. size_t chaine_len=chaine.lenght()
  2. for(unsigned i=0; i<chaine_len; ++i)
  3. {
  4.   chaine[i]; // acces au caractère i (de rang i+1
  5. }


 
une explication sur les tableaux simples (comme en C?)


---------------
du bon usage de rand [C] / [C++]
n°276252
Umer
Posté le 26-12-2002 à 23:09:03  profilanswer
 

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  :jap:

n°276254
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 23:10:44  profilanswer
 

j'utilise pas de pointeurs...
 
bouqine un peu oui, familiarise toi avec la notion de tableau au sens informatique, ensuite on verra ce que ca donne en C++


---------------
du bon usage de rand [C] / [C++]
n°276255
Umer
Posté le 26-12-2002 à 23:12:16  profilanswer
 

ok :)
 
"++i" ya pas de pointeurs dans ça ?  
 
je confonds avec * je crois.. ?

n°276257
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 23:13:07  profilanswer
 

c'est la forme condensé de i=i+1


---------------
du bon usage de rand [C] / [C++]
n°276258
Umer
Posté le 26-12-2002 à 23:14:57  profilanswer
 

et c'est quoi ce i ?  
 
je commence à etre chiant n'est ce pas ?  
 :hello:


Message édité par Umer le 26-12-2002 à 23:16:39
n°276260
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 23:20:08  profilanswer
 

tu connais pas les for?


---------------
du bon usage de rand [C] / [C++]
n°276263
Umer
Posté le 26-12-2002 à 23:23:31  profilanswer
 

très peu, je vais allez bouquiner sur les boucles et tableau de ce pas..

n°276264
Umer
Posté le 26-12-2002 à 23:26:14  profilanswer
 

petite note, j'ai commencé le C++/C aujourd'hui  :D

n°276265
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 23:30:29  profilanswer
 

correction: t'as commencé la programmation aujourd'hui


Message édité par Taz@PPC le 26-12-2002 à 23:30:37

---------------
du bon usage de rand [C] / [C++]
n°276272
Umer
Posté le 26-12-2002 à 23:44:12  profilanswer
 

oui, si on compte pas le html :)

n°276273
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 23:46:51  profilanswer
 

c'est plus un langage de description
 
tu as quoi comme formation?


---------------
du bon usage de rand [C] / [C++]
n°276276
Umer
Posté le 26-12-2002 à 23:52:45  profilanswer
 

1S bio

n°276277
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 23:53:38  profilanswer
 

et tu veux faire quoi plus tard?


---------------
du bon usage de rand [C] / [C++]
n°276278
Umer
Posté le 26-12-2002 à 23:55:10  profilanswer
 

à ton avis  ? :D
futur épitéen ça me plairait bien :)

n°276279
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 26-12-2002 à 23:55:26  profilanswer
 

ben la route est longue


---------------
du bon usage de rand [C] / [C++]
n°276280
Umer
Posté le 26-12-2002 à 23:56:53  profilanswer
 

je commence trop tard ?

n°276281
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 27-12-2002 à 00:03:23  profilanswer
 

umer a écrit :

je commence trop tard ?

non, au contraire. mais t'aruas peu etre pu ommencer par plus facile


Message édité par Taz@PPC le 27-12-2002 à 00:03:40

---------------
du bon usage de rand [C] / [C++]
n°276405
Umer
Posté le 27-12-2002 à 13:21:00  profilanswer
 

je trouve que c'est le plus intéréssant :)

n°276413
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 27-12-2002 à 13:30:15  profilanswer
 

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.


---------------
du bon usage de rand [C] / [C++]
n°276431
Umer
Posté le 27-12-2002 à 14:24:40  profilanswer
 

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 :)

n°276447
chrisbk
-
Posté le 27-12-2002 à 15:18:43  profilanswer
 

devrait pas plutot etre length  ?

n°276460
Umer
Posté le 27-12-2002 à 15:33:51  profilanswer
 

oui :) merci

n°276470
Umer
Posté le 27-12-2002 à 15:46:47  profilanswer
 

arf c'est pas un peu compliqué et lourd de comparer les 26 indice entre eux ?

n°276560
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 27-12-2002 à 17:35:58  profilanswer
 

je m'absente la mais je t'en reparle ce soir


---------------
du bon usage de rand [C] / [C++]
n°276573
HelloWorld
Salut tout le monde!
Posté le 27-12-2002 à 17:59:29  profilanswer
 

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 :
  1. unsigned long frequences[256];  // chaque lettre peut apparaitre jusqu'a +4 milliards de fois (=> un long)
  2. // initialiser toutes les valeurs à 0
  3. //puis ton code devient :
  4. for(unsigned i=0;
  5.     i < chaine_len;
  6.     i++)
  7. {
  8.     ++frequences[(unsigned char) chaine[i]];
  9. }


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 :
  1. vector <unsigned long> frequences(256);


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>


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  déclaration variable, chaine de caractère

 

Sujets relatifs
intégration variable...Mettre des espaces dans une chaine de caractère
Concaténer une chaine de caractèreASP : Passer une chaine de caractere en MAJUSCULE ?
probleme de variable[PHP et SQL] passage de variable en parametre
queue de messages : liste chainé 
Plus de sujets relatifs à : déclaration variable, chaine de caractère


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR