Produit de deux vecteurs à n dimensions

cs_cam_b Messages postés 10 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 23 janvier 2006 - 30 oct. 2005 à 22:31
cs_cam_b Messages postés 10 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 23 janvier 2006 - 3 nov. 2005 à 12:57
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)
A voir également:

6 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
30 oct. 2005 à 23:03
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
0
cs_cam_b Messages postés 10 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 23 janvier 2006
31 oct. 2005 à 12:41
Merci beaucoup!



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



Merci beaucoup....
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 oct. 2005 à 16:21
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
0
cs_cam_b Messages postés 10 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 23 janvier 2006
31 oct. 2005 à 17:04
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vangeurmasker Messages postés 99 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 29 mars 2006
1 nov. 2005 à 19:59
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
0
cs_cam_b Messages postés 10 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 23 janvier 2006
3 nov. 2005 à 12:57
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
0
Rejoignez-nous