passage tableau à tableau avec boucle for

passage tableau à tableau avec boucle for - C - Programmation

Marsh Posté le 06-03-2007 à 16:49:58    

HELLO ALL :hello:  
 
voila j'aurai besoin de votre aide sur un sujet :
 j'ai un tableau de charactère de type:
tab1[10]={pomme}
et je souhaiterai mettre les charactères de ce tableau dans un 2ème :
tab2[10]={}
mais en rajouter chaque characteres entre quote et avec une virgule donc :
tab2[10]={'p','o','m','m','e'}
il faut une boucle for mais aprés 400 ou 500 cheveux arrachés je vien  demander de l'aide
voila si vous avez des idées .
merci d'avance  

Reply

Marsh Posté le 06-03-2007 à 16:49:58   

Reply

Marsh Posté le 06-03-2007 à 16:57:17    

En java ca donnerais un truc du genre :

Code :
  1. char[10] tab1 = "pomme";
  2. char[4 * length(tab1)] tab2;
  3. for (int i = 0 ; i < length(tab1) ; i++) {
  4.    tab2[4 * i] = '''';
  5.    tab2[(4 * i) + 1] = tab1[i];
  6.    tab2[(4 * i) + 2] = '''';
  7.    tab2[(4 * i) + 3] = ',':     
  8. }
 

Mais comme j'ai pas bien compris ce que tu voulais vraiment faire...   :lol:

Message cité 1 fois
Message édité par MEI le 06-03-2007 à 17:34:15

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 06-03-2007 à 17:01:06    

aneurysm a écrit :

il faut une boucle for mais aprés 400 ou 500 cheveux arrachés je vien  demander de l'aide


 
Si tu veux le faire à la main, c'est assez simple.
Montre-nous le code que tu as créé pour voir où tu en es, on t'aidera à partir de là.
 
Surtout que j'imagine que c'est pour un exercice, sinon tu utiliserais strcpy()... non ? :o
 

MEI a écrit :

En java ca donnerais un truc du genre


 
http://images.imagehotel.net/a89ebe3166.png

Reply

Marsh Posté le 06-03-2007 à 17:03:11    

nan carrement pas c'est pour mon projet bts, je dois rajouter les quotes et les virgules pour pouvoir envoyer sur un afficheur LCD. mmm strcpy()?? c'est quoi ca?

Reply

Marsh Posté le 06-03-2007 à 17:04:35    

man strcpy
 
en ligne de commande sur un unixoïde, ou dans google ça marche aussi

Reply

Marsh Posté le 06-03-2007 à 17:07:23    


J'suis pas fan des allocation dynamique, mais ici le pb est plus algorythmique qu'autre chose. :D

 

Suffit de remplacer les tab1.length en length(tab1) et de savoir allouer un tableau de char sans que ça plante... :o


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 06-03-2007 à 17:08:19    

[:prozac]

 


Indice : tu réponds pas à la question. Probablement parce que Java != C.

 

edit : ah ben tiens, c'est p'têt moi qui me trompe, justement parce que ce qu'a écrit aneurysm dans l'énoncé a un sens précis en C [:el g]


Message édité par Elmoricq le 06-03-2007 à 17:10:55
Reply

Marsh Posté le 06-03-2007 à 17:09:02    

d'accord mais apparement ca ne me permet pas de rajouter les quotes ni les virgules..
et c'est pour ca que je dois (a mon avis) utiliser une boucle for ... ou jme plante carrement


Message édité par aneurysm le 06-03-2007 à 17:10:54
Reply

Marsh Posté le 06-03-2007 à 17:12:12    

Bon, je viens de rerererelire le post initial. C'est p'têt MEI qui a raison sur le fond, et non moi, si c'est le cas je te présente mes excuses MEI. Mais c'est pas encore gagné tellement c'est clair. :o

 

Ouais, donc boucle for sur chaque caractère du premier tableau, et ajout dans le second, rien de bien sorcier. Montre-nous où tu en es dans ton code.


Message édité par Elmoricq le 06-03-2007 à 17:12:33
Reply

Marsh Posté le 06-03-2007 à 17:14:24    

Ma boucle fait ce que tu veut en principe :??: Mais le tableau fait 40 apres... donc comme tu restait en [10] j'ai pas trop compris où tu veux en venir.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 06-03-2007 à 17:14:24   

Reply

Marsh Posté le 06-03-2007 à 17:15:27    

???? qu'est ce qui n'est pas clair dans mon 1er post???? j'ai meme illustré au cas ou??

Reply

Marsh Posté le 06-03-2007 à 17:17:15    

Justement, ton illustration est fausse, ça correspond à une initialisation d'un tableau de caractères, caractère par caractère.
 
Mais montre-nous ton code, ça ira mieux. [:klem3i1]

Reply

Marsh Posté le 06-03-2007 à 17:30:28    

voila l'exemple de mon code, avec des problemes quand meme
 
      char tab1[20]="pomme";
     char tab2[40];
 
  for (int i=0;i<20;i++)
    {
       tab2[i]= "'";
        tab2[i+1]= tab1[j];
        tab2[i+2]= "'";
tab2[i+3] = ",":
         i=i+4;
         j++;
      }

Reply

Marsh Posté le 06-03-2007 à 17:33:16    

Bah si tu veut vraiment faire ça (et je me demande pourquoi), mon code fonctionne je pense.
 
avec des length(tab1) (enfin la fonction C qui retourne la taille d'un tableau);
 
j'ai edit mon code.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 06-03-2007 à 17:34:21    

D'où vient la variable j ?

 

De plus, une solution élégante existe avec la fonction sprintf(), qui te permettra de copier dans tab2 chaque lettre de tab1 de manière formatée.

 

exemple pour le premier caractère :

char tab1[20] = "pomme";
char tab2[40] = "";

 

sprintf(tab2, "%s'%c',", tab2, tab1[0]);

 

Je crois que cela devrait t'aider (ce n'est qu'un morceau de ce que tu dois faire pour arriver à tes fins).

 

Bien sûr, on ne traite ici que de l'affectation de caractères d'un tableau vers un autre, on passe complètement sur les aspects de gestion de la mémoire. :o


Message édité par Elmoricq le 06-03-2007 à 17:35:24
Reply

Marsh Posté le 06-03-2007 à 17:36:16    

MEI a écrit :

Bah si tu veut vraiment faire ça (et je me demande pourquoi), mon code fonctionne je pense.
 
avec des length(tab1) (enfin la fonction C qui retourne la taille d'un tableau);
 
j'ai edit mon code.


 
Mouais. Il y a des outils en C, et surtout en Java, qui permettent de traiter le problème de manière bien plus simple que ce que propose ton algorithme.

Reply

Marsh Posté le 08-03-2007 à 10:43:51    

merci, j'ai fait un programme :  
char tab1[5] = "pomme";
 char tab2[40];
     int j=0;
     int i;
     
  for (i=0;i<20;i++)
 
      {  
       tab2[i]= 0X60;
        tab2[i+1]= tab1[j];
        tab2[i+2]= 0X60;
   tab2[i+3] = 0x2C;
         i=i+3;
         j++;
             
      }
           printf("contenu case :%s \n",&tab2);
 
qui m'affiche bien ce que je veux, par contre, il ne s'arrete pas au dernier charactère de tab1 et donc après m'afficher : 'p','o','m','m','e', il m'affiche carrement nympe, j'ai essayé i<length(tab1) mais il ne reconait pas la fonction...?


Message édité par aneurysm le 08-03-2007 à 10:50:07
Reply

Marsh Posté le 08-03-2007 à 10:46:01    

1. toute chaîne de caractère en C doit se terminer par un caractère nul '\0'
http://mapage.noos.fr/emdel/init_c.htm#string

 

2. c'est laid ce que tu as fait. Déjà, 0x60 tu peux mettre '\'' c'est plus parlant. Ensuite, modifier la variable d'itération d'une boucle for, c'est moche. Enfin, j'avais proposé une piste avec sprintf() qui menait à une solution plus simple à mettre en oeuvre, as-tu exploré cette piste ?


Message édité par Elmoricq le 08-03-2007 à 10:48:11
Reply

Marsh Posté le 08-03-2007 à 10:47:32    

Utiliser un debugger ?
 


---------------
Töp of the plöp
Reply

Marsh Posté le 09-03-2007 à 14:47:59    

effectivement je n'ai repensé au charactère nul que grace a mon prof (le programme m'affichait nympe en attendant)
  ensuite pour le 0x60 il me le faut (le beck est assez susceptible a ce niveau la) et meme si c'est laid je suis arrivé a faire marcher le tout. Pour ce qui est de la beautée je verrai ca quand tout marchera je n'ai pas beaucoup de temps pour faire beaucoup de choses.
sur ce je vous remercie pour votre aide  
 :hello:


Message édité par aneurysm le 09-03-2007 à 14:50:12
Reply

Sujets relatifs:

Leave a Replay

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