cs_cam_b
Messages postés10Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention23 janvier 2006
-
30 oct. 2005 à 22:31
cs_cam_b
Messages postés10Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention23 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:
Produit vectoriel 2d
Multiplier deux vecteurs - Meilleures réponses
Produit vectoriel de deux vecteurs de dimension 2 - Meilleures réponses
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 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
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 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
cs_cam_b
Messages postés10Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention23 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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
vangeurmasker
Messages postés99Date d'inscriptionmercredi 12 mai 2004StatutMembreDernière intervention29 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
cs_cam_b
Messages postés10Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention23 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.