Explication sur 1 mini programme?

Explication sur 1 mini programme? - C - Programmation

Marsh Posté le 06-05-2005 à 16:48:45    

Bonjour, je suis 1 bille en langage C, et il me faut expliquer ds les moindres details ce que fait le petit programme suivant:

Code :
  1. #include <stdio.h>
  2. main(){
  3.        int t[3];int i,j;int *adt;
  4.        for(i=0,j=0;i<3;i++) t[i]=j++ +i;
  5.        for(i=0;i<3;i++) printf("%d",t[i]);printf("\n" );
  6.        for(i=0;i<3;i++) printf("%d",*(t+i));
  7.        for(adt=t;adt<t+3;adt++) printf("%d",*adt);printf("\n" );
  8.        for(adt=t+2;adt>=t;adt--) printf("%d",*adt);printf("\n" );
  9.        system("pause" );
  10.        }


la seule chose que je sache , c'est qu'il affiche comme resulatat:
024
024024
420
                                                                                               
                                                                                               
mais je ne sauiras expliquer pourquoi..........
Merci de votre aide
 
 
voila c balizer...


Message édité par bastar le 06-05-2005 à 17:56:38
Reply

Marsh Posté le 06-05-2005 à 16:48:45   

Reply

Marsh Posté le 06-05-2005 à 16:50:04    

On ne fait pas tes devoirs.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-05-2005 à 16:51:17    

[:le poney de mr pink]  
 
C'est quoi ce code immonde ?! Un concours d'illisibilité ?
 
 
EDIT : je viens de voir le system("pause" )...  :lol:


Message édité par Elmoricq le 06-05-2005 à 16:53:25
Reply

Marsh Posté le 06-05-2005 à 17:01:30    

bastar a écrit :

Bonjour, je suis 1 bille en langage C


Si c'est ton choix, on ne peux rien pour toi. Si tu cherches à progreser, lance toi dans les explications du code... Personne ne fera ton travail à ta place.  
 
Pareil avec [ ]ta meuf [ ]ton keum (cocher la bonne case...)


---------------
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 06-05-2005 à 17:03:04    

le truk c ke je pige pas pkoi j'obtient ce resultat, et ossi pourquoi chez moi le resultat s'affiche en sautant les lignes, alors que chez lui chak valeur se voit additioner 1

Reply

Marsh Posté le 06-05-2005 à 17:06:56    

bastar a écrit :

le truk c ke je pige pas pkoi j'obtient ce resultat, et ossi pourquoi chez moi le resultat s'affiche en sautant les lignes, alors que chez lui chak valeur se voit additioner 1


Déjà, commence par présenter le code un peu mieux...


#include <stdio.h>
main ()
{
   int t[3];
   int i, j;
   int *adt;
 
   for (i = 0, j = 0; i < 3; i++)
      t[i] = j++ + i;
 
   for (i = 0; i < 3; i++)
      printf ("%d", t[i]);
   printf ("\n" );
 
   for (i = 0; i < 3; i++)
      printf ("%d", *(t + i));
 
   for (adt = t; adt < t + 3; adt++)
      printf ("%d", *adt);
   printf ("\n" );
 
   for (adt = t + 2; adt >= t; adt--)
      printf ("%d", *adt);
   printf ("\n" );
 
   system ("pause" );
}


ça facilite l'analyse et la reflexion...


---------------
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 06-05-2005 à 17:07:31    

Bon bin c pas graven j'aurais qd mem essayer, Merci qd mem...

Reply

Marsh Posté le 06-05-2005 à 17:19:58    

bastar a écrit :

Bon bin c pas graven j'aurais qd mem essayer, Merci qd mem...


 
Je trouve pas que tu aies essayé, moi. Ou alors pas bien fort.  
 
Enfin comme le dit si bien Emmanuel : "Si c'est ton choix, on ne peux rien pour toi."

Reply

Marsh Posté le 06-05-2005 à 17:21:36    

Elmoricq a écrit :

Je trouve pas que tu aies essayé, moi. Ou alors pas bien fort.


Ben si, il a essayé ... de trouver un couillon pour lui faire son boulot !
 


---------------
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 06-05-2005 à 17:33:46    

Je n'ai pris personne pour 1 couillon, je ne vous pas menti du style les gars ki demande des no-cd pretextant ke mettre le cd ds le lecteur c fatiguant, g tout de suite dit de qoi il en ressortais, mais si m'aider vous gene 1 peu pourriez vous au moins commenter ceci:

Code :
  1. #include <stdio.h>
  2. main(){
  3. /*
  4. déclaration d'un tableau de 3 éléments, de 2 entiers et d'un pointeur sur des entiers.
  5. */
  6.        int t[3];int i,j;int *adt;
  7. /*
  8. on remplit le tableau t->[0 2 4] en post-incrémentant l'entier j (suffit de dérouler la boucle pour bien comprendre )
  9. */
  10.        for(i=0,j=0;i<3;i++) t[i]=j++ +i;
  11. /*
  12. affiche le contenu du tableau
  13. */
  14.        for(i=0;i<3;i++) printf("%d",t[i]);printf("\n" );
  15. /*
  16. même chose mais en utilisant l'arithmétique des pointeurs. Comme t est un pointeur (un nom de tableau est un ptr fixe) sur des int (2|4octets) si on lui ajoute i, il pointe sur la case mémoire située i*(2|4) octets plus loin que celle pointée par t. C'est la case qui contient t[i].
  17. */
  18.        for(i=0;i<3;i++) printf("%d",*(t+i));
  19. /*
  20. encore l'affichage du contenu du tableau mais ici on recopie l'adresse de l'a case mem pointée par t dans un pointeur modifiable adt qu'on peut alors (in|dé)crémenter directement sans passer par l'arithmétique de pointeurs.
  21. rmq: comme précédemment si on incrémente adt de 1, sa véritable valeur est incrémentée de (2|4)octets car c'est l'adresse d'un int.
  22. */
  23.        for(adt=t;adt<t+3;adt++)          printf("%d",*adt);printf("\n" );
  24.        for(adt=t+2;adt>=t;adt--) printf("%d",*adt);printf("\n" );
  25.        system("pause" );
  26.        }


Message édité par bastar le 06-05-2005 à 17:55:27
Reply

Marsh Posté le 06-05-2005 à 17:33:46   

Reply

Marsh Posté le 06-05-2005 à 17:38:14    

met une balise code, j'ai meme pas envi de lire


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 06-05-2005 à 21:27:24    

bastar a écrit :

la seule chose que je sache , c'est qu'il affiche comme resulatat:
024
024024
420


 
 

Citation :

le truk c ke je pige pas pkoi j'obtient ce resultat, et ossi pourquoi chez moi le resultat s'affiche en sautant les lignes, alors que chez lui chak valeur se voit additioner 1


 
Au vu du code et ce que tu décris, y a pas de souci.
Essaie de réfléchir. Je sais que tu peux.
 
Indice : le tableau n'est initialisé que dans la première boucle. Chaque valeur du tableau contient (i+j). Regarde bien ce qui arrive à i et j.


Message édité par Elmoricq le 06-05-2005 à 21:29:56
Reply

Marsh Posté le 07-05-2005 à 01:28:09    

Une feuille, un crayon, et tu déroules l'algo à la main :)

Reply

Sujets relatifs:

Leave a Replay

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