Produit de deux vecteurs à n dimensions

Signaler
Messages postés
10
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
23 janvier 2006
-
Messages postés
10
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
23 janvier 2006
-
bonjour,



voici le code que j'ai tapé pour tout d'abord demander à l'utilisateur
les coordonnées des deux vecteurs X et Y et je dois écrire une fonction.

J'ai un problème dans mon code et je ne vois pas comment la résoudre.



#include <stdio.h>

#include<stdlib.h>





void SAISIE_VECT(int Vec[n]);



int main(void){



/*declarations*/

int Vect_X[n];

int Vect_Y[n];

int i,n;



/*saisie du vecteur X*/

printf("Vecteur X : \n\n");

SAISIE_VECT(Vect_X);



/*saisie du vecteur Y*/

printf("Vecteur Y : \n\n");

SAISIE_VECT(Vect_Y);



return EXIT_SUCCESS;

}



/*fonction de saisie d'un vecteur à n dimensions*/

void SAISIE_VECT(int Vec[n]){

int i,j,n;



printf("veuillez saisir la dimension de votre vecteur svp : \n",n);

printf("\n");

scanf("%d",&n);

for(j=0;j<n;j++){

printf("entrez la valeur de l'element d'indice %d :\n",j);

scanf("%d",&i);

Vec[j]=i;

}

}



Voila je ne sais pas si le titre de ma fonction est bon mais c'est
lui qui me pose problème car on m'écrit : 'n was not declared in this
scope ' pour la ligne juste avant ke int main(void)

6 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
void SAISIE_VECT(int Vec[n])

Ce n'est pas un en-tête de fonction valide. On dirait que tu veux passer deux paramètres en un. Si tu veux connaitre n, c'est un deuxième paramètre:
void SAISIE_VECT(int Vec[], int n)

Dans ton main:
int Vect_X[n]; // n n'est pas déclaré!
int Vect_Y[n];
int i,n;

Tu dois déclarer n en premier, et surtout l'initialiser
De plus Vect_X[n] marchera avec gcc mais pas VC++ qui demande une constante pour n
Messages postés
10
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
23 janvier 2006

Merci beaucoup!



Mais par contre, je ne vois à quel endroit je dois initialiser n pour que ça marche ni même comment.



Merci beaucoup....
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Bah au début, tu vois bien que c'est une donnée essentielle pour ton problème, non?
Tu peux par exemple faire int n = 5, ou encore demander une valeur à l'utilisateur, à toi de voir.
Bien entendu, il faut aussi initialiser les vecteurs, sinon tu obtiendra n'importe quoi
Messages postés
10
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
23 janvier 2006

Je suis tout à fait d'accord qu'il faille demander à l'utilisateur de
saisir une valeur pour la dimension. Je l'ai écrit dans la fonction.

En fait je vient de le supprimer de la fonction pour le mettre dans le
programme principal mais il me reste toujours une erreur, ce doit être
une erreur de syntaxte.



#include <stdio.h>

#include<stdlib.h>





void SAISIE_VECT(int Vec[],int n);

void INIT_VECT(int Vect[],int n);

int main(void){



/*declarations*/

int Vect_X;

int Vect_Y;

int i,n;



/*saisie de la dimension des deux vecteurs X et Y*/

printf("veuillez saisir la dimension de votre vecteur svp : \n",n);

printf("\n");

scanf("%d",&n);



/*initialisation des deux vecteurs X et Y*/

INIT_VECT(Vect_X,n);/problème

INIT_VECT(Vect_Y,n);/problème



/*saisie du vecteur X*/

printf("Vecteur X : \n\n");

SAISIE_VECT(Vect_X,n);/ problème au niveau de cette ligne



/*saisie du vecteur Y*/

printf("Vecteur Y : \n\n");

SAISIE_VECT(Vect_Y,n);/même problème



return EXIT_SUCCESS;

}



/*fonction de saisie d'un vecteur à n dimensions*/

void SAISIE_VECT(int Vec[],int n){

int i,j;



for(j=0;j<n;j++){

printf("entrez la valeur de l'element d'indice %d :\n",j);

scanf("%d",&i);

Vec[j]=i;

}

}

void INIT_VECT(int Vect[],int n){

int j;

for (j = 0; j < n; ++j)

Vect[j]= 0;



}



J'ai écrit en vert là où j'avais des problèmes.

Ca doit être au niveau de la syntaxte mais je n'arrive pas à résoudre le problème.

Sinon j'ai écrit une fonction pour initialiser les vecteurs .



Merci beaucoup de votre aide !
Messages postés
99
Date d'inscription
mercredi 12 mai 2004
Statut
Membre
Dernière intervention
29 mars 2006

int Vect_X; //tu déclare un entier
void INIT_VECT(int Vect[],int n);//ta fonction demande un tableau

tu a 2 solutions :
- soit tu déclare un tableau trop grand : int Vect_X[100];
- soit tu utilise de l'allocation dynamque :
int * Vect_X;
/* tu demande a l'utilisateur de rentrer le n */
Vect_X=(int *)malloc(n*sizeof(int));//la tu reserve la place en mémoire pour n entiers
Messages postés
10
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
23 janvier 2006

oki !! merci.
J'ai fait le changement mais par contre il doit y avoir un problème lors de la compilation parce que mon exécution ne marche pas alors qu'on m'a spécifié qui'il n'y avait aucune erreurs.

Sinon j'aurais une autre question : j'ai un programme à écrire sur le digicode : par ex : on a le digicode 2 5 7 0 2 9

et l'utilisateur tape la série 2 2 5 7 0 2 9
il faut vérifier si les chiffres présents dans la série sont ceux du digicode et dans le bon ordre.
J'aimerais donc mettre la série de chiffres dans un tableau pour faire une comparaison entre 2 tableaux mais le problème c'est que je ne sais pas combien de chiffres il peut y avoir dans la série et co:mme à partir de qch tapé par l'utilisateur, je peux le mettre dans un tableau? je ne vois pas comment remplir le tableau avec ce qui a été saisi.

Merci