Comment mettre les chiffres d'un nombre dans un tableau ?

Comment mettre les chiffres d'un nombre dans un tableau ? - C - Programmation

Marsh Posté le 04-11-2004 à 18:50:58    

Bonjour, je suis débutant en C et j'aimerais savoir comment mettre
les chiffres d'un nombre dans un tableau.
Par exemple :
 
Soit un nombre 123456 (un nombre non float) et donc on obtient un  
tableau :
 
indices  : 0 1 2 3 4 5  
elements : 1 2 3 4 5 6
 
A part la methode qui consisterait a convertir ce int en une string
et indexer chacuns des caracteres dans le tableau en tant que int, y a
t'il un autre moyen plus rapide (et moins prise de tete) ?


Message édité par Chronoklazm le 04-11-2004 à 18:53:59
Reply

Marsh Posté le 04-11-2004 à 18:50:58   

Reply

Marsh Posté le 04-11-2004 à 19:01:46    

ben c'est la meilleure méthode IMHO, sinon il faut extrait chaque chiffre par modulo je pense.
Mais c'est plus facile en convertissant en string, tu auras directement accès au caractère par index.

Reply

Marsh Posté le 04-11-2004 à 19:02:14    

tu fait  ton nombre mod 10 tu met le resultat dans le tableau,  
tu divise le nombre par 10 et tu recommence l'operation  
ensuite tu fait un reverse sur le tableau et voila t'as ton tableau comme tu voulais :D :ange:

Reply

Marsh Posté le 04-11-2004 à 19:07:49    

Merci :)
 
PS: Ca veut dire quoi IMHO ? :)


Message édité par Chronoklazm le 04-11-2004 à 19:12:10
Reply

Marsh Posté le 04-11-2004 à 19:14:56    

In My Humble Opinion ;)

Reply

Marsh Posté le 04-11-2004 à 19:15:23    

in my humble opinion

Reply

Marsh Posté le 04-11-2004 à 19:16:04    

EMHA :o

Reply

Marsh Posté le 04-11-2004 à 19:26:58    

En français c'est AMHA ...  :whistle:

Reply

Marsh Posté le 05-11-2004 à 02:59:50    

Chronoklazm a écrit :

Bonjour, je suis débutant en C et j'aimerais savoir comment mettre
les chiffres d'un nombre dans un tableau.
Par exemple :
 
Soit un nombre 123456 (un nombre non float) et donc on obtient un  
tableau :
 
indices  : 0 1 2 3 4 5  
elements : 1 2 3 4 5 6
 
A part la methode qui consisterait a convertir ce int en une string
et indexer chacuns des caracteres dans le tableau en tant que int, y a
t'il un autre moyen plus rapide (et moins prise de tete) ?


 

Code :
  1. main()
  2. {
  3.   char tab[7];
  4.   sprintf(tab, "%d", 123456);
  5. }


Je ne vois pas trop où est la prise de tête......


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 05-11-2004 à 03:42:34    

Ben oui bien sûr Sve@r, tout le monde sait que '1' == 1  :heink:

Reply

Marsh Posté le 05-11-2004 à 03:42:34   

Reply

Marsh Posté le 06-11-2004 à 00:51:17    

matafan a écrit :

Ben oui bien sûr Sve@r, tout le monde sait que '1' == 1  :heink:


 
C'est sur, on peut pas le deviner. Et l'existence de spintf non plus. :ange:  
 
Sve@or merci à toi :)
 
 


Message édité par Chronoklazm le 06-11-2004 à 00:51:47
Reply

Marsh Posté le 06-11-2004 à 00:56:20    

Euh j'ai comme une gouille sous Ms-Visual C++ 6.O :  
 

Code :
  1. #include <stdio.h>
  2.     int main()
  3.    {
  4.    
  5.  char tab[7];
  6.  sprintf(tab, "%d", 123456);
  7.  return 0;
  8.    }


 
Ca compile pas :( :
 
--------------------Configuration: test - Win32 Debug--------------------
Compiling...
test.c
C:\...\test.c(109) : error C2143: syntax error : missing ';' before 'type'
C:\...\test.c(111) : error C2065: 'tab' : undeclared identifier
C:\...\test.c(111) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'int '
C:\...\test.c(111) : warning C4024: 'sprintf' : different types for formal and actual parameter 1
Error executing test.exe.
 
test.exe - 2 error(s), 2 warning(s)[cpp]


Message édité par Chronoklazm le 06-11-2004 à 01:00:07
Reply

Marsh Posté le 06-11-2004 à 00:58:22    

Non non, ça compile pas.  
Peut-être que si tu donnais la ligne 109 à 111...

Reply

Marsh Posté le 06-11-2004 à 01:02:46    

Mais il n'y a rien a la ligne 109 à 111, je suis pas fou quand meme, je sais qu'il est tard mais je sais faire un copier-coller encore, dieu merci :)

Reply

Marsh Posté le 06-11-2004 à 01:05:57    

J'ai passé de longues nuits d'enlacement torride avec Visual C++, et quand il dit qu'il y a une couille ligne 109, c'est que souvent, la ligne 109 a une couille...
 
Ceci-dit, c'est quoi le type de projet VC++ que tu utilises ?

Reply

Marsh Posté le 06-11-2004 à 01:09:39    

Celui qu'il propose par defaut quand on ouvre un fichier .c et on fait "Build" puis "compile" ...


Message édité par Chronoklazm le 06-11-2004 à 01:26:06
Reply

Marsh Posté le 06-11-2004 à 01:12:16    

Ah là j'ai plus la gouille, il compile et link sans messages d'erreurs mais quand j'execute le fichier il n'y a rien dans la petite fenetre ms-dos a part "Pressez un touche pour continuer" :(

Reply

Marsh Posté le 06-11-2004 à 01:14:29    

Bon je vais migrer vers Cygwin si ca continue !
 
Tu utiliserais quoi comme projet pour faire des trucs comme ca ?
 
Peut-etre j'étais meme pas dans un projet mais juste dans l'edition d'un fichier.


Message édité par Chronoklazm le 06-11-2004 à 01:19:29
Reply

Marsh Posté le 06-11-2004 à 01:34:50    

Bon en fait c'est réglé ! Désolé ... :)
 
Il faut juste que j'ouvre un .cpp et non un projet.

Reply

Marsh Posté le 06-11-2004 à 14:08:09    

matafan a écrit :

Ben oui bien sûr Sve@r, tout le monde sait que '1' == 1  :heink:


 
Mais le caractere 1 n'est pas égal à 1  :heink:  
 
Dans la table ASCII il la valeur decimale 49.
 
Et comment convertir un tableau de char en un tableau de int ? A part faire 10 "if" dans ma boucle.
 

Code :
  1. char tab[7];
  2. int dab[7];
  3. for(int o=0;o<7;o++){
  4.  dab[o]=(int)tab[o];
  5. }


 
Il rend un tableau de int avec les valeures "decimales" des caracteres 1234...
C'est pas ce que je veux.


Message édité par Chronoklazm le 06-11-2004 à 14:21:30
Reply

Marsh Posté le 06-11-2004 à 15:18:57    

dab[o]=tab[o]-'0';

Reply

Marsh Posté le 06-11-2004 à 15:51:24    

Merci

Reply

Marsh Posté le 06-11-2004 à 18:54:23    

Citation :

Mais le caractere 1 n'est pas égal à 1  :heink:


Ma remarque était bien sûr à prendre au second degré.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed