Lire : 1 32 15 2 3 ...

MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 - 3 déc. 2003 à 12:52
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 - 3 déc. 2003 à 14:17
Comment mettre dans un tableau une saisie telle que :
l'on connais le nombre des nombre mais pas le nombre de chiffre par nombre
et il y a un espace entre chaque nombre?
exemple : je sais qu'il y aura 5 nombre saisie par lutilisateur :
3 32 65 21 2
comment les mettre dans
int nombre[5];
scanf() ? mais comment?? merci beaucoup !!

12 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
3 déc. 2003 à 13:02
Salut,
int nb[5];
scanf("%d %d %d %d %d", nb, nb+1, nb+2, nb+3, nb+4);
Sinon, tu peux aussi coder ta propre fonction.
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
3 déc. 2003 à 13:04
jvoi bien une technique :

char buf[256]="3 32 65 21 2";
int nombre[5];
char *pbuf=buf;

while(*pbuf) pbuf++;

for(int n=5; n>=0; n--)
{
while(*pbuf!=' ') pbuf--;
*pbuf='\0';
nombre[n]=atoi(pbuf+1);
}

Bon, g écrit très vite juste avant de bouffer, donc g ptet fé une erreur, si ca marche pas, je regarderé ca plus précisément apres
Mais doi yavoir une technique plus facile
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
3 déc. 2003 à 13:05
euh... javé pas vu mais ce qu'a écrit aardman est en effet plus simple... dsl
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
3 déc. 2003 à 13:07
Salut,
Oui, je pensais aussi a un truc du genre. Mais pas besoin de partir de la fin, et encore moins de rajouter des zero partout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
3 déc. 2003 à 13:17
Salut Anacr0x,
J'ai donné une methode avec scanf mais je prefere de loin coder ma propre fonction pour ce genre de machin.

A propos de ton code: atoi() s'arrete de lire le nombre jusqu'au 1er caractere rencontré qui n'est pas un chiffre.
char chaine[] = "1234coucou";
int nb = atoi(chaine);
// nb contiendra 1234

Du coup, 1 seul passage en partant du debut sans rajouter de zero suffit.
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
3 déc. 2003 à 13:28
Euh les mecs merci mais ca je sais faire je me suis mal expliké : le nombre 5 n'est connu k'apres ke lutilisateur l'ai tapé :
lutilisateur ecrit 5 puis 32 2 3 4 56 come ilo peut mettre
50 puis 1 2 3 56 etc 50 nombre...
La est la difficulté ^^
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
3 déc. 2003 à 13:31
Oui c vrai, le pire c que je le savais, mais sur le coup j'y ai pas penser...

c con quand ca t'arrive des truc comme ça (trop presser d'aller manger sans doute ;)
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
3 déc. 2003 à 13:34
ou est la difficulté ? tu fait une allocation dynamique pour les variable dans ce cas... pi basta, t'utilise un truc comme ce que g fé (j'imagine mal un scanf avec 50 entrées)
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
3 déc. 2003 à 13:34
Salut,
MoDDiB, des difficultées tu en aura bcp si tu prend pas 5 min pour comprendre un bout de code!
La func d'anacrox fait deja ce que tu demandes. Il suffit de changer la valeur de depart de n.
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
3 déc. 2003 à 13:48
Merci aardman mais comme je le disé je connaissais deja ce que ardman m'avai dis donc si je bloquais deja devant cette difficulté et j'ai bien pris la peine d'y penser.

J'ai enfin trouvé comment faire pour que ca marche :

scanf("%d", &combien);

for(i = 0; i < combien; i++)
scanf("%d", &nombre[i]);

c'est tout con mais faut savoir que 2 scanf a la suite lirons la meme ligne !
C'était simplement ca mon probleme
l'autre probleme et que si tu fais :
printf("%d",nombre)
tu obtiens un nombre abérant
e, effet il faut faire
for(i = 0; i < combien; i++)
printf("%d ",nombre[i]);
Pour voir apparaitre les bons résultats...
T'inquiète pas aardman quand je pose une question c'est pas de la paresse je me casse la tete pendant 1 bonne heure voir plus avant.. mais le probleme c'est que vois des chiffres aberrant pour un truc aussi simple ca decourage vite !
0
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
3 déc. 2003 à 14:08
Ca n'est pas parceque tu ne les comprends pas que les nombres sont aberrants!

Quant tu décalres un tableau genre nombre[], la variable nombre contient l'adresse du premier élément du tableau.
Du coup quand tu faisais printf("%d", nombre) tu affichais l'adresse du tableau.

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
3 déc. 2003 à 14:17
yep thx garlouche j'avais oublié ke j'avais déclaré nombre en tableau ^^
0
Rejoignez-nous