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

  FORUM HardWare.fr
  Programmation
  C

  Créer un tableau en C (très simple mais pas pour moi...)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Créer un tableau en C (très simple mais pas pour moi...)

n°1643501
rarerealit​ies
Posté le 15-11-2007 à 16:50:55  profilanswer
 

Bonjour!
je voudrai créer un tableau tout bête, une ligne et 2 colonnes, l'utilisateur doit choisir les valeurs qu'il met dans les cases. Ces valeurs doivent ensuite être affichées.
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int main(int argc, char *argv[])
  5. {
  6.     int tab[2], i;
  7.     tab[i] = 0;
  8.     printf("entrez le 1er nombre" );
  9.     scanf("%d",&tab[0]);
  10.    
  11.     printf("entrez le 2nd nombre" );
  12.     scanf("%d",&tab[1]);
  13.    
  14.      for (i = 0 ; i < 2 ; i++)
  15.     {
  16.      printf("%d", tab[i]);
  17.     }
  18. system("pause" );
  19.     return 0;
  20. }


je comprends pas ou j'ai faux, ou qu'est ce que je dois faire / changer.
merci d'avance. :)


Message édité par rarerealities le 15-11-2007 à 18:03:00
mood
Publicité
Posté le 15-11-2007 à 16:50:55  profilanswer
 

n°1643519
mcyrb
Mieux vaut tard que plus tard
Posté le 15-11-2007 à 17:25:23  profilanswer
 

Tu saisis dans a et b... et tu affiches tab[i]. Comment veux tu que ça affiche les valeurs que t'as saisies ?


Message édité par mcyrb le 15-11-2007 à 17:26:08
n°1643532
rarerealit​ies
Posté le 15-11-2007 à 17:35:27  profilanswer
 

bin que ça s'affiche sur une ligne a la suite, j'affiche bien tab[i] lorsque je fais "printf("%ld", tab[i]);" non?

n°1643536
tpierron
Posté le 15-11-2007 à 17:40:46  profilanswer
 

Certes, mais tu ne saisis pas tes valeurs dans tab[i]. Alors au lieu de saisir dans a et b pourquoi ne pas directement les saisir dans tab[0] et tab[1], genre : scanf("%d",&tab[0]);
 
Edit: les disclaimeurs habituelles : scanf est dangeureux pour votre santéprogramme, à consommer avec modération.


Message édité par tpierron le 15-11-2007 à 17:43:21
n°1643545
rarerealit​ies
Posté le 15-11-2007 à 17:53:57  profilanswer
 

merci j'y suis arrivé, je ne pensais pas qu'on pouvait utiliser cette syntaxe plus simple :) j'ai édité mon 1er post avec la solution.

n°1643556
mcyrb
Mieux vaut tard que plus tard
Posté le 15-11-2007 à 18:07:37  profilanswer
 

Code :
  1. int tab[2], i;
  2. tab[i] = 0;
 

Quelle est la valeur de i ? et quelle est donc cette case de tab que tu mets à 0 ?


Message édité par mcyrb le 15-11-2007 à 18:13:08
n°1643564
rarerealit​ies
Posté le 15-11-2007 à 18:29:14  profilanswer
 

i=0, je le dis dans "for (i = 0 ; i < 2 ; i++)"
et je dois "initialiser mon tableau" non? (ou pas la peine?)

n°1643569
ijk_refere​nce
Posté le 15-11-2007 à 18:45:11  profilanswer
 

A la ligne 7 je vois tab[i] = 0 !!!
 
Alors que tu n'as jamais initialisé AVANT la variable i.
 
il est plus clair d'écrire
 

Code :
  1. int tab[2];
  2. int i = 0;


 
d'ailleur a quoi sert ton tab[i] = 0 ?

n°1643578
rarerealit​ies
Posté le 15-11-2007 à 18:54:10  profilanswer
 

je pensais que je pouvais initialiser le tableau et la variable i d'un coup en ecrivant tab[i] = 0 :D merci du conseil

n°1643586
matafan
Posté le 15-11-2007 à 19:00:52  profilanswer
 

Tu peux toujours écrire tab[i=0] = 0 si ça t'amuse.

mood
Publicité
Posté le 15-11-2007 à 19:00:52  profilanswer
 

n°1643622
ijk_refere​nce
Posté le 15-11-2007 à 20:27:39  profilanswer
 

rarerealities a écrit :

je pensais que je pouvais initialiser le tableau et la variable i d'un coup en ecrivant tab[i] = 0 :D merci du conseil


 
int tab[2];
 
veut dire que tu as initialisé un tableau à deux entiers.
 
ensuite pour initialiser chaque element t'es obligé d'écrire
 
for(int i=0; i<2; ++i) tab[i] = 0;
 
Dans ton cas cette ligne est inutile puisque tu initialises manuellement chaque element avec ton scanf  ;)  
 
Autrement même si par convention toutes nouvelles variables entières sont intialisées à 0, Je te conseille vivement d'écrire explicitement chaque initialisation et de mettre qu'une seule instruction par ligne.
 
Comme tu débutes ceci t'éviteras des problèmes de compressions inutiles.
 
Et à bientôt ... sur l'allocation dynamique  :hello:

n°1643633
rarerealit​ies
Posté le 15-11-2007 à 21:01:23  profilanswer
 

heu c'est pas for(int i=0; i<2; ++i) int tab[i] = 0;  
je ne suis pas sur de bien comprendre la différence avec ce que j'avais fait (tab[i] = 0; au début du code) :??:
 
en tout cas merki pour les tuyaux

n°1643637
ngkreator
Posté le 15-11-2007 à 21:30:41  profilanswer
 

rarerealities a écrit :

heu c'est pas for(int i=0; i<2; ++i) int tab[i] = 0;  
je ne suis pas sur de bien comprendre la différence avec ce que j'avais fait (tab[i] = 0; au début du code) :??:
 
en tout cas merki pour les tuyaux


Simplifie toi la vie. Il y a seulement 2 étapes:  
 
1) tu crées tes variables  
2) tu leurs donnes une valeur
 
1) tu crées tes variables  
 

Code :
  1. int i; //tu crées la variable i
  2. int tab[2]; //tu crées le tableau tab avec 2 cases


 
2) tu leurs donnes une valeur
 

Code :
  1. scanf("%d",&tab[0]); //tu donnes la valeur saisie par l'utilisateur à la 1ère case
  2. scanf("%d",&tab[1]); //tu donnes la valeur saisie par l'utilisateur à la 2ème case


 
Voilà c'est tout ne te complique pas la vie. Bien sûr il te faut rajouter les printf mais rien de plus. Ensuite une fois que tu as bien compris ça tu peux faire une boucle.
 
La boucle te permettra de donner à i les valeurs 0 et 1:
 

Code :
  1. for(i=0;i<2;i++) scanf("%d",&tab[i]); //i prendra la valeur 0, puis 1


 
En passant scanf est déconseillé, mais pour des débutants comme nous je ne vois pas quel est le problème.
 
Attention: quand tu as écrit:
 

Code :
  1. int i; // tu as crée la variable i
  2. int tab[2]; // tu as crée le tableau tab
  3. tab[i]=0; //tu as donné la valeur 0 à la case numéro i du tableau


 
Or tu n'as pas donné de valeur à i. Dans ce cas tu as donné la valeur 0 à une cas au pif, surement en dehors du tableau (même si tu n'as pas donné de valeur à i il se trouve qu'il en a une, et pas une petite ex: 31456 [:pingouino]
 
Une proposition:
 

Code :
  1. #include <stdio.h>
  2. int main(int argc, char *argv[])
  3. {
  4.     int i,tab[2];
  5.    
  6.    for (i = 0 ; i < 2 ; i++)
  7.    {
  8.        printf("\nEntrez le nombre n°%d: ",i);
  9.        scanf("%d",&tab[i]);
  10.    }
  11.  
  12.    for (i = 0 ; i < 2 ; i++)
  13.    {
  14.        printf("\nNombre n°%d: %d",i,tab[i]);
  15.    }
  16.     return 0;
  17. }

Message cité 1 fois
Message édité par ngkreator le 15-11-2007 à 21:40:47
n°1643816
Elmoricq
Modérateur
Posté le 16-11-2007 à 10:57:24  profilanswer
 

ngkreator a écrit :

En passant scanf est déconseillé, mais pour des débutants comme nous je ne vois pas quel est le problème.


 
Fais un programme de dix lignes qui lit un entier avec scanf, puis exécute-le, et lorsque le programme le demande, entre "oui-oui et sa voiture rouge et jaune".
 
Enjoy. [:dawa]
 
Utiliser fgets() c'est plus facile que d'utiliser scanf(), et ensuite ça permet d'étudier les conversions (strtol, strtod, etc), bien plus propre et au passage bien plus formateur, donc mieux pour un débutant. [:klem3i1]

n°1643884
ngkreator
Posté le 16-11-2007 à 12:06:40  profilanswer
 

Elmoricq a écrit :


 
Fais un programme de dix lignes qui lit un entier avec scanf, puis exécute-le, et lorsque le programme le demande, entre "oui-oui et sa voiture rouge et jaune".
 
Enjoy. [:dawa]
 
Utiliser fgets() c'est plus facile que d'utiliser scanf(), et ensuite ça permet d'étudier les conversions (strtol, strtod, etc), bien plus propre et au passage bien plus formateur, donc mieux pour un débutant. [:klem3i1]


Mais un débutant, qui fait ses premiers programmes, il ne va pas les distribuer. Il sera le seul utilisateur. Il sait ce qu'il doit entrer comme type de valeurs.  
 
Je suis d'accord qu'il faut sécuriser tout ça le plus tôt possible pour prendre de bonnes habitudes, mais pour un 1er au 2nd programme je trouve ça pas indispensable.
 
Bien que en fait c'est vrai que c'est pas plus compliqué, après réflexion. Pourquoi pas. [:petrus75]


Message édité par ngkreator le 16-11-2007 à 12:11:50
n°1643906
rarerealit​ies
Posté le 16-11-2007 à 12:27:46  profilanswer
 

merci a tous d'eclairer ma lanterne :D

n°2209856
reveeveill​e
geek
Posté le 10-11-2013 à 14:36:03  profilanswer
 

merci


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

  Créer un tableau en C (très simple mais pas pour moi...)

 

Sujets relatifs
Besoin d'aide pour un truc tout simple[Résolu] Supprimer une ligne d'un array sans trier ?
Build simple avec Maven, oui mais...Compiler plusieurs variables [simple]
Simple quotes, double quotes, ou pas du tout ?tableau
aide pour créer son site internet !Programme simple avec VB6
[Débutant] Trier un tableauRequête récuperer x enregistrement tableau
Plus de sujets relatifs à : Créer un tableau en C (très simple mais pas pour moi...)


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