Prob de modulo ou de code ?

Résolu
cs_NeoZ Messages postés 19 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 24 avril 2008 - 24 oct. 2004 à 10:32
cs_NeoZ Messages postés 19 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 24 avril 2008 - 24 oct. 2004 à 18:08
Salut, je voudrais stocker un nombre dans un tableau, ou tout du moins, stocker chaque chiffre dans une variable, et j'ai fait ce bout de code, mais il y a des problèmes à l'exécution :

#include 
//using namespace std;

int main()
{
int nb=0, tab[]={0};
cout << "Entrez un nombre inferieur a 1000 : " << endl;
cin >> nb;
for(int i=1;i<4;i++)
{
switch(i)
{
case 1 : (tab[1] = nb%10); break; //unités
case 2 : (tab[2] = ((nb%100)-tab[1])/10); break; //décimales
case 3 : (tab[3] = (nb-(nb%100))/100); break; //centimales (euh, ça se dit ça ?? :)
}
}
// Affichage des données du tableau :
for(int j=1;j<4;j++)
{
cout << tab[j] << endl;
}
return 0;
}

9 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
24 oct. 2004 à 13:28
Je divise par 10 a chaque fois, donc le modulo change!
3
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
24 oct. 2004 à 11:04
salut,

il faut déclarer ton tableau correctement.
int tab[3]; pour un tableau de 3 éléments.
ensuite, l'indexation commence à l'indice 0, tu peux donc utiliser tab[0], tab[1], tab[2].
0
cs_NeoZ Messages postés 19 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 24 avril 2008
24 oct. 2004 à 11:23
Euh la, ça me donne ça :

[code]
#include
#include <stdio.h>
//using namespace std;

int main()
{
int nb=0, tab[3]={0};
cout << "Entrez un nombre inferieur a 1000 : " << endl;
cin >> nb;
for(int i=0;i<3;i++)
{
switch(i)
{
case 1 : (tab[0] = nb%10); break; //unités
case 2 : (tab[1] = ((nb%100)-tab[1])/10); break; //décimales
case 3 : (tab[2] = (nb-(nb%100))/100); break; //centimales (euh, ça se dit ça ?? :)
}
}
// Affichage des données du tableau :
for(int j=1;j<4;j++)
{
cout << tab[j] << endl;
}
return 0;
}code]

Mais ça me donne pas encore le bon résultat...
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
24 oct. 2004 à 11:48
[code]
#include
using namespace std;

int main()
{
int nb, tab[3];
cout << "Entrez un nombre inferieur a 1000 : " << endl;
cin >> nb;
for(int i=0;i<3;i++)
{
switch(i)
{
case 1 : (tab[0] = nb%10); break; //unités
case 2 : (tab[1] = ((nb%100)-tab[1])/10); break; //décimales
// tab[0] ou tab[1] ..................^^^^^^ à corriger !
case 3 : (tab[2] = (nb-(nb%100))/100); break; //centimales (euh, ça se dit ça ?? :)
}
}
// Affichage des données du tableau :
for(int j=0;j<3;j++)
{
cout << tab[j] << endl;
}
return 0;
}[\code]
0

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

Posez votre question
cs_NeoZ Messages postés 19 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 24 avril 2008
24 oct. 2004 à 12:12
Comment ça à corriger ? :)
sinon pr le chifrre des unités et des dizaines, ça fonctionne ms pas pr les centaines... :/
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
24 oct. 2004 à 12:16
Pour centimales, je dirais plutot centaines.

[code]
#include
using namespace std;

int main()
{
int nb=0, tab[3];
cout << "Entrez un nombre inferieur a 1000 : " << endl;
cin >> nb;
int i = 2;
while(i > -1)
{
tab[i] = nb % 10;
nb /= 10;
i--;
}
}
[code]
0
cs_NeoZ Messages postés 19 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 24 avril 2008
24 oct. 2004 à 12:59
Ok, merci pr la précision vecchio, mais ton code ne répond pas à ce ke je voulais faire, il prend à chaque fois le modulo 10, dc ce sera à chaque fois le même chiffre... et en plsu lorque je le compile comme ceci, il ne m'affiche que 1, 2 et 3 :
#include 
#include <stdlib.h>
using namespace std;

int main()
{
int nb=0, tab[3];
cout << "Entrez un nombre inferieur a 1000 : " << endl;
cin >> nb;
int i = 2;
while(i > -1)
{
tab[i] = nb % 10;
nb /= 10;
i--;
}
for(int j=0;j<3;j++)
        cout << tab[j] << endl;
        system("pause");
}
0
cs_NeoZ Messages postés 19 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 24 avril 2008
24 oct. 2004 à 13:00
euh plutot 0,1 et 2 dsl.
0
cs_NeoZ Messages postés 19 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 24 avril 2008
24 oct. 2004 à 18:08
... ah oué... :) c'est moi ki avait du mal avec l'affichage. Merci ! =)
0
Rejoignez-nous