Length

[Résolu]
Signaler
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
-
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
-
bonjour
question peut etre simple d'un debutant:

je voudrais connaitre le nb de caractere dans une saisie(fenetre windows) donc j'ai fais
 
cout<<"taper le nombres pour calculer son image"<<endl;
 cin>>a;

 if (a.length()<6)
 {
 cout<<"taper un nombre plus grand"<<endl;
}

mais voila ce que me repond le compilateur :

request for member `length' in `a', which is of non-aggregate type `long int'

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"

11 réponses

Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

si c un nombre...
double a;
la condition c'est:
if(a<=999999)...;
NB: ne pas abuser des while(true) c quand meme plutot sale!

JackosKing For EvEr
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

Si tu veux tester un nombre si c'est plus grand que l'autre

int a;
cout<<"taper le nombres pour calculer son image"<<endl;
while(true)
{
cin>>a;

if (a<6)
cout<<"taper un nombre plus grand"<<endl;
else
break;
}

Mais si tu veux connaitre si le nombre de caractère d'une chaine est plus court que l'autre

char a[longueur maximum de caractère];
cout<<"taper le nombres pour calculer son image"<<endl;
while(true)
{
cin>>a;

if (strlen(a)<6)
cout<<"taper un nombre plus long"<<endl;
else
break;
}
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
17
ok merci ct la seconde reponse mais j'ai un probleme je dmande
de faire un calcule mais a est un char donc j'ai essayer de faire un transtypage

 #include 
 #include <fstream>

int main()
{
definni:
char a[10];
cout<<"taper le nombres pour calculer son image"<<endl;
while(true)
{
cin>>a;

if (strlen(a)<6)
cout<<"taper un nombre plus long"<<endl;
else
break;
}

definnicalc:
a =(int)a;

a=a*12;
cout<<"\nimage = "<>z;
}



"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
sheorogath > a mon avis tu devrais plutot faire du c (ce que tu fais mais sans les cout et cin) et surtout acheter un livre de programmation ou au moins lire un cours online

a =(int)a; ??

tu cherche à affecter "a", c'est une grave erreur de programmation et surtout de comprehension, "a" est un tableau et un tableau ne peut etre une l-value par definition

et "(int)a" c'est son adresse, pas le contenu de la chaine de caractere

2 solutions :

int n;
char a[10];

...

sscanf( a, "%d", &n);

ou

n = atoi(a);

prefere atoi qui est plus performant que sscanf
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
Sinon pour avoir la taile de la chaine on peut faire ca:

#include
#include <stdlib.h>
#include <stdio.h>

int main()
{
char a[]="123456789";
int length;
length=sizeof(a);
printf("la taille de la chaine est de %d caracteres\n",length);
system("pause");
}

en sortie on a length=10 vu que le caractere de fin de chaine est compté...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
length doit etre un size_t, et sizeof renvo la taille du tableau
pour avoir la taille de la chaine c'est strlen

typiquement recherche de l'offset du racactere 0 ('\0')

char s[]="okpolkp"
char *p = s;
unsigned n = 0;

while( *p++ ) n++;
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
17
pour apprendre le c : je ne suis pas contre mais le c++ et assez compliquer comme ca et j'ai un boukin c++ mais ca faisait lontemps que je n'y avait pas toucher

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
justement, le c est plus simple à apprendre que le c++, c'est pour ca que je te conseil de commencer par le c
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
djl: c'est quoi un size_t? Ca sert seulement pour y mettre une taille? Parce qu'un entier fonctionne tres bien aussi....
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
oui, c'est un type non signé (generalement un unsigned)
c'est fixé par le standard donc ca pourrais evité certains problemes
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
ok merci!!