Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1656 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Explication sur 1 mini programme?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Explication sur 1 mini programme?

n°1074110
bastar
Posté le 06-05-2005 à 16:48:45  profilanswer
 

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
mood
Publicité
Posté le 06-05-2005 à 16:48:45  profilanswer
 

n°1074113
skeye
Posté le 06-05-2005 à 16:50:04  profilanswer
 

On ne fait pas tes devoirs.


---------------
Can't buy what I want because it's free -
n°1074116
Elmoricq
Modérateur
Posté le 06-05-2005 à 16:51:17  profilanswer
 

[: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
n°1074138
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-05-2005 à 17:01:30  profilanswer
 

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/
n°1074141
bastar
Posté le 06-05-2005 à 17:03:04  profilanswer
 

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

n°1074150
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-05-2005 à 17:06:56  profilanswer
 

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/
n°1074151
bastar
Posté le 06-05-2005 à 17:07:31  profilanswer
 

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

n°1074167
Elmoricq
Modérateur
Posté le 06-05-2005 à 17:19:58  profilanswer
 

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."

n°1074173
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-05-2005 à 17:21:36  profilanswer
 

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/
n°1074198
bastar
Posté le 06-05-2005 à 17:33:46  profilanswer
 

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
mood
Publicité
Posté le 06-05-2005 à 17:33:46  profilanswer
 

n°1074203
blastman
just me !
Posté le 06-05-2005 à 17:38:14  profilanswer
 

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


---------------
http://www.blastmanu.info
n°1074384
Elmoricq
Modérateur
Posté le 06-05-2005 à 21:27:24  profilanswer
 

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
n°1074499
c0wb0y
:d
Posté le 07-05-2005 à 01:28:09  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Explication sur 1 mini programme?

 

Sujets relatifs
Bug dans programme graphiqueModifier programme, macro?
[PhpWebGallery] Gestion D'image sur 2 nv de Minipetit programme a tester s'il vous plait
Programme en tache de fond comme gaim au autre...Apprter le contenu d'un fichier.txt dans un programme
Generation vba dans fichier Excel a partir d'un programme VBAjouter gratuitement et facilemement un "live update" à vos programme
Config mini jdbc linux Aide pour Programme de génération aléatoire de texte (Noob)
Plus de sujets relatifs à : Explication sur 1 mini programme?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR