me manque kelke lignes!!!!

me manque kelke lignes!!!! - C - Programmation

Marsh Posté le 02-02-2005 à 19:50:27    

Salut, alors j'essai en vais nde faire un petit probléme de programmation, mais ca merde à un endroit, mais je n'arrive pas du tout a trouver la solution a mon erreur (en fait les valeur semble étre décaler de un pour lesadditions, si kelk'un pouvais m'aider un ti peu....ca serais trés cool  :p  
voilà l'ennocé : faire un programme qui prend 2 matrice entrée et qui affiche le résulatat de l'addition des deux matrices.
et g fais :  
 

Code :
  1. int Tab [3][3];
  2. int Tab1 [3][3];
  3. int i=0;
  4. int j=0;
  5. int k=0;
  6. int l=0;
  7. int S;
  8. void main (){
  9.     while (i<3){
  10.         while (j<3){
  11.             printf ("entrez les valeurs du premier tableau [%d][%d]",i ,j);
  12.             scanf ("%d ",& Tab[i][j]);
  13.             j=j+1;
  14.             }
  15.         i=i+1;
  16.         j=0;
  17.     }
  18.     while (k<3){
  19.         while (l<3){
  20.             printf ("entrez les valeurs du deuxiéme tableau [%d][%d]",k,l);
  21.             scanf ("%d ",& Tab1[k][l]);
  22.             l=l+1;
  23.             }
  24.             k=k+1;
  25.             l=0;
  26.         }
  27.         k=0;
  28.         i=0;
  29.         j=0;
  30.         l=0;
  31.                 while (k<3){
  32.                     while(l<3){
  33.                         S=Tab[i][j]+Tab1[k][l];
  34.                         printf ("les sommes des deux matrices tab[%d][%d] et tab1[%d][%d]sont : %d \n ",i ,j, k, l,S);
  35.                         l=l+1;
  36.                         j=j+1;
  37.                     }       
  38.                     k=k+1;
  39.                     i=i+1;
  40.                     l=0;
  41.                     j=0;
  42.                 }       
  43.      
  44.     }


 
voilà j'vous remerci par avance si kelk'un peu m'aider... :sarcastic:


Message édité par whishy le 02-02-2005 à 20:17:49
Reply

Marsh Posté le 02-02-2005 à 19:50:27   

Reply

Marsh Posté le 02-02-2005 à 19:51:26    

utilise des balises code pour mettre en forme plz


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 02-02-2005 à 20:21:14    

T'aider a faire quoi, quel est ton pb?
 
Sinon tu fais un truc inutile:

Citation :

S=Tab[i][j]+Tab1[k][l];


 
Ce que tu additionnes en fait, c'est les membres pour des indices identiques,  
tu peux donc ecrire: S=Tab[k][l]+Tab1[k][l];
 
A+,


Message édité par gilou le 02-02-2005 à 20:24:11

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 02-02-2005 à 20:23:13    

il y a un truc qu'on appelle "for", c'est vachement pratique: ça incrémente automatiquement les index


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-02-2005 à 22:01:15    

Masklinn a écrit :

il y a un truc qu'on appelle "for", c'est vachement pratique: ça incrémente automatiquement les index


Eun non! Pas 'automatiquement'. (C != BASIC)
 
 
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 02-02-2005 à 22:13:22    

Emmanuel Delahaye a écrit :

Eun non! Pas 'automatiquement'. (C != BASIC)


tu pinailles là :(  
 
par rapport à un while, c'est automatique :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-02-2005 à 22:18:52    

whishy a écrit :

Salut, alors j'essai en vais nde faire un petit probléme de programmation, mais ca merde à un endroit, mais je n'arrive pas du tout a trouver la solution a mon erreur (en fait les valeur semble étre décaler de un pour lesadditions, si kelk'un pouvais m'aider un ti peu....ca serais trés cool  :p  
voilà l'ennocé : faire un programme qui prend 2 matrice entrée et qui affiche le résulatat de l'addition des deux matrices.
et g fais :  
<...>
voilà j'vous remerci par avance si kelk'un peu m'aider...


Une façon compliquée d'écrire


#include <stdio.h>
 
int main (void)
{
   int Tab[3][3];
   int Tab1[3][3];
 
   {
      int i;
      for (i = 0; i < 3; i++)
      {
         int j;
         for (j = 0; j < 3; j++)
         {
            printf ("entrez les valeurs du premier tableau [%d][%d] : ", i, j);
            fflush (stdout);
            scanf ("%d", &Tab[i][j]);
         }
      }
   }
 
   {
      int i;
      for (i = 0; i < 3; i++)
      {
         int j;
         for (j = 0; j < 3; j++)
         {
            printf ("entrez les valeurs du deuxieme tableau [%d][%d] : ", i, j);
            fflush (stdout);
            scanf ("%d", &Tab1[i][j]);
         }
      }
   }
 
 
   {
      int i;
      for (i = 0; i < 3; i++)
      {
         int j;
         for (j = 0; j < 3; j++)
         {
            int S = Tab[i][j] + Tab1[i][j];
            printf ("les sommes des deux matrices tab[%d][%d] et tab1[%d][%d]sont : %d \n ", i, j, i, j, S);
         }
      }
   }
 
   system("pause" );
   return 0;
}


Et encore, on doit pouvoir 'factoriser'...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 02-02-2005 à 22:19:07    

Mais c'est quoi une boucle 'for' c'est interpreté comment ? Comme une macro ou bien comme une boucle hardware en ASM ?  
EDIT: Je veux dire apres le parsage du for par exemple il se passe quoi ? ptet je confonds tout ...  :(


Message édité par Chronoklazm le 02-02-2005 à 22:22:49
Reply

Marsh Posté le 02-02-2005 à 22:21:22    

Masklinn a écrit :

tu pinailles là :(  
 
par rapport à un while, c'est automatique :o


Ben non. C'est organisé, bien présenté, structuré, mais pas automatique. En BASIC on met NEXT ou NEXT I et ça fait i++.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 02-02-2005 à 22:21:41    

Emmanuel Delahaye a écrit :

Une façon compliquée d'écrire
Et encore, on doit pouvoir 'factoriser'...


On pourrait déclarer i et j en même temps que les tables déjà :o
 
ce qui permettrait d'enlever les {} du for(i)
 
(au fait, pourquoi pas ++i? [:cupra] )


Message édité par masklinn le 02-02-2005 à 22:24:16

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 02-02-2005 à 22:21:41   

Reply

Marsh Posté le 02-02-2005 à 22:28:54    

Chronoklazm a écrit :

Mais c'est quoi une boucle 'for' c'est interpreté comment ? Comme une macro ou bien comme une boucle hardware en ASM ?  
EDIT: Je veux dire apres le parsage du for par exemple il se passe quoi ? ptet je confonds tout ...  :(


Ben c'est traduit en langage machine comme n'importe quelle autre instruction. Rien de magique.


int i = 0;
while (i < 3)
{
   i++;
}


ca fait le même code que


int i;
for (i = 0; i < 3; i++)
{
   
}


soit un truc dans le genre (pseudo assembleur)


 MOV A, 0
 MOV B, 3
ENCORE:
 INC A
 DEC B
 JZ FIN
 
 
 JMP ENCORE
FIN:


Message édité par Emmanuel Delahaye le 02-02-2005 à 22:34:33

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 02-02-2005 à 22:32:26    

Masklinn a écrit :

On pourrait déclarer i et j en même temps que les tables déjà :o


Euh bof, je préfère limiter la portée. Ca prépare à la mise en fonction...

Citation :


ce qui permettrait d'enlever les {} du for(i)


Bof, personnellement, je mets toujours les {}. C'est plus clair et ça facilite la maintenance et l'évolution.

Citation :

(au fait, pourquoi pas ++i?)


Dans le contexte, pas de différence.
 
Je n'utilise pas le contexte où ça fait une différence. Trop dangereux.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 02-02-2005 à 22:33:47    

Chronoklazm a écrit :

Mais c'est quoi une boucle 'for' c'est interpreté comment ? Comme une macro ou bien comme une boucle hardware en ASM ?  
EDIT: Je veux dire apres le parsage du for par exemple il se passe quoi ? ptet je confonds tout ...  :(


 
exemple de "for (int i=0; i<5; i++)" en asm :

Code :
  1. mov eax,5 // eax = i
  2. loop: (traitement) // le corps de la boucle for
  3.       dec eax // eax = eax-1
  4.       cmp eax,0 // eax = 0 ?
  5.       jnz loop  // si non, alors on boucle
  6.       (après le for)


Message édité par Harkonnen le 02-02-2005 à 22:35:29

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 02-02-2005 à 23:02:02    

Harkonnen a écrit :

exemple de "for (int i=0; i<5; i++)" en asm :

Code :
  1. mov eax,5 // eax = i
  2. loop: (traitement) // le corps de la boucle for
  3.       dec eax // eax = eax-1
  4.       cmp eax,0 // eax = 0 ?
  5.       jnz loop  // si non, alors on boucle
  6.       (après le for)



 
il fallait que tu mettes de l'assembleur hein :D


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 02-02-2005 à 23:19:31    

black_lord a écrit :

il fallait que tu mettes de l'assembleur hein :D


chuis toujours là pour aider les ames perdues dans ces langages d'assistés comme le C et autres Basic évolués :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-02-2005 à 10:53:51    

hohoho, ba euhh merci bien mais ca ma po beaucoup aider, en fait ce que vous m'avez dit à l'air pas mal du tout, le seul hic ce que je n'en suis pas encore a ce niveau là!!!
Pour l'histoire du for, je préfére vraimenet le while, je les bien mieux compris (et je le métrise mieux aussi)!!!
Le probléme c que mon addition différe d'une valeur...a partir de la toute premiére...
Merci encore

Reply

Sujets relatifs:

Leave a Replay

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