Comment stoker les valeurs d'un vecteur en C?

Résolu/Fermé
Kenshin87 Messages postés 36 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 13 juillet 2015 - 5 janv. 2008 à 10:16
Kenshin87 Messages postés 36 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 13 juillet 2015 - 5 janv. 2008 à 12:11
Bonjour,

Pour commencer, je vous remercie tous de votre attention.
Voila, j'ai commencé la programmation il y a pas très longtemps, et il se trouve que j'ai des soucies.
Deja, voici mon programme :

#include <stdio.h>
#define dim

typedef int vect [dim];

int main (void)
{ int i,j,k;

printf ("saisir la dimension du vecteur\t",i);
scanf ("%d",&i);

printf ("saisir les elements du vecteur");
for (k=0;k<=i;k++)
{printf ("\nA [%d] = ",k);
scanf ("%d",&j);
}
printf ("voici votre vecteur!\n");
for (k=0;k<=i;k++)
printf ("\tA [%d] = %d\n",k,j);


system ("pause");
return 0;
}

Au fait, après la saisie de la dimension d'un vecteur et de ses éléments, je voudrais qu'il afficher les valeurs de chaque élément saisie mais il se trouve qu'il affche que tous le vecteur est égale à la dernière saisie de l'élément.
Par exemple :
vecteur dim 3 ; A[k]=j ; on saisie les valeurs de j ( 2 puis 5 et 6) je voudrais qu'il affiche:
A[1] = 2
A[2] = 5
A[3] = 6
mais il affiche que tous les A[k]=6 (6 est la derniere saisie de j);
Donc je dois utiliser un vecteur pour stoker la valeur mais je n'arrive pas.
Si quelqu'un sait comment le faire aider moi s'il vous plais!!!
Je vous serais très reconnaissant!

En tout cas,je vous remercie de votre attention.

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 janv. 2008 à 11:14
Salut,

tu ne stocke rien du tout, ce que tu fait c'est d'afficher la valeur saisie
c'est normal que la dernier valeur est affiché puisque c'est exactement ça que tu demande

essaie comme ça
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
        int *vect;
        int i,k;

        printf ("saisir la dimension du vecteur\t",i);
        scanf ("%d",&i);

        if (NULL == (vect =  (int *) malloc (i * sizeof(int))))
                return -1;

        printf ("saisir les elements du vecteur");
        for (k=0;k<i;k++){
                printf ("\nA [%d] = ",k);
                scanf ("%d",&vect[k]); /* ici je stocke */
        }
        printf ("voici votre vecteur!\n");
        for (k=0;k<i;k++)
                printf ("\tA [%d] = %d\n",k,vect[k]);


        system ("pause");
        return 0;
}
0
Kenshin87 Messages postés 36 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 13 juillet 2015
5 janv. 2008 à 12:04
Oh!!!
Je te remercie infiniment Lami20j!

ça marche mais etant donné que je n'ai vraiment pas d'experience sur la programmation,Je viens de commencer, c'est compliqué les syntax (NULL == (vect = (int *) malloc (i * sizeof(int)))), je comprends pas bien,
je me demande comment vous faites pour connaitre tous ça.lol

En tout cas merci pour ton aide!
0
Kenshin87 Messages postés 36 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 13 juillet 2015
5 janv. 2008 à 12:11
Solution donnée par lami20j:

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
int *vect;
int i,k;

printf ("saisir la dimension du vecteur\t",i);
scanf ("%d",&i);

if (NULL == (vect = (int *) malloc (i * sizeof(int))))
return -1;

printf ("saisir les elements du vecteur");
for (k=0;k<i;k++){
printf ("\nA [%d] = ",k);
scanf ("%d",&vect[k]); /* ici je stocke */
}
printf ("voici votre vecteur!\n");
for (k=0;k<i;k++)
printf ("\tA [%d] = %d\n",k,vect[k]);


system ("pause");
return 0;
}
0