Salut, j’ai un problème... Je veux sortir une valeur de depuis les deux for (ex : n = 1 ou n = ... 3) et les echanger mais ça ne marche pas, les variables que j’ai réservées au stockage ne stockent pas bien... Je travaille sur geany et j’apprends C. ```
#include <stdlib.h>
#include <stdio.h>
int boucle (){
int n,x,z;
printf("wich range value for the list ?");
scanf("%d", &x);
for (n = 1; n<=x ;n++){
printf(" n = %d\n", n);
}
printf("wich value z do you wish to put out of the list ?");
scanf("%d", &z);
z = n;
printf("z =%d", z);
return z;
}
int boucle2(){
int a,y,r;
printf("wich value for the list ?");
scanf("%d%d", &y,&r);
for (a = 10; a >=y ; a--){
printf("a = %d\n", a);
}
r = a;
printf("r = %d", r);
return r;
}
void reverse (int *r, int *z){
int boucle();
int boucle2();
int StockageValue;
StockageValue = *r;
*r = *z;
*z = StockageValue;
printf("%d%d", r,z);
}
int main(void){
int a,b;
boucle();
boucle2();
reverse(&a, &b);
printf("a = %d et b = %d", a,b);
return 0;
}
Si on prend rien que ta fonction main : tu déclares deux variables a et b non initialisée,
ensuite tu appelles deux fonctions qui n'ont aucune influence sur la suite de ta fonction main,
ensuite tu échanges les deux variables a et b (toujours non initialisé),
et tu affiches tes deux variables non initialisées.
La fonction d’échange qui fonctionne, mais qui a deux déclaration de fonction dans son bloc, qu'on se demande ce qu'elle viennent faire ici et un affichage bancale qui n'a rien a y faire.
Pour ce qui est des deux autre fonctions, je n'ai pas vraiment compris ce que tu cherche à faire avec. Dans leur boucles for il n'y a que de l'affichage, je ne vois pas ce que tu veux sortir de ces boucles ? Une petite explication s'impose.
mon but est de dresser une liste de valeur incrémentée de 1 grâce à mes boucles for et de choisir un cran de chacune des listes et de les échanger grâce à la fonction reverse les printf sont là pour m'assurer que les valeurs sont les bonnes exemple : z au lieu de prendre la valeur n que je veux lui attribuer s'affiche systématiquement comme valant 11 ce qui cause des soucis
Alors, je dois être fatigué aujourd'hui ... je n'ai rien compris. Donnes un exemple avec des nombres. Sortir une valeur d'un for ou enlever un élément d'un tableau?
Le Tout est souvent plus grand que la somme de ses parties.
je vais essayer d'être plus clair : j'ai dressé deux liste de valeur grâce à deux boucle for bornées par un scanf chacune, l'une s'incrémente de 1 et l'autre se décrémente de 1, donc pour la première boucle le compilateur affichera 1,2,3... jusqu'à n, ce que je veux c'est trouver comment parcourir chacune des boucles de choisir le rang qui me convient pour chacune afin que les valeurs correspondant aux rangs sélectionnés soient échangées grâce à la fonction reverse.
j'ai dressé deux liste de valeur grâce à deux boucle for bornées par un scanf chacune
Pour info les boucle for sont bornées par des accolades { }, scanf sert à faire des saisies utilisateur !
Personnellement, je ne vois aucune liste, c'est pour cela que je te demande : qu'entends tu par liste ?
AdJR1 a écrit:
donc pour la première boucle le compilateur affichera 1,2,3...
Le compilateur affiche les warnings et les erreurs de ton code lors de la compilation !
Au vu de ton code, tu devrais réviser ton cours et reprendre ton problème du départ, parce que là, c'est très mal engagé et on a des difficultés à comprendre ce que tu veux faire. Si c'est un exercice, poste l'intitulé de l'exercice, on comprendra peut-être mieux.
Tu affiches des valeurs incrémentées, par exemple : 1, 2, 3, 4, 5
Tu affiches des valeurs décrémentées, par exemple : 10, 9, 8, 7
Tu demandes à l'utilisateur une valeur de la première liste, exemple : 4
Tu demandes à l'utilisateur une valeur de la seconde liste, exemple : 9
Il faut alors afficher :
1, 2, 3, 9, 5
10, 4, 8, 7
Est-ce que c'est bien ça ?
Si oui :
Tu ne sais pas expliquer un problème. Il faut être précis et donner des exemples.
Il faut mémoriser les valeurs dans un tableau. Par exemple tab1 et tab2. Pour les échanger, il faudra trouver les indices i et j correspondant, et appeler la fonction d'échange avec &(tab1[i]) et &(tab2[j]).
Tu affiches des valeurs incrémentées, par exemple : 1, 2, 3, 4, 5
Tu affiches des valeurs décrémentées, par exemple : 10, 9, 8, 7
Tu demandes à l'utilisateur une valeur de la première liste, exemple : 4
Tu demandes à l'utilisateur une valeur de la seconde liste, exemple : 9
Il faut alors afficher :
1, 2, 3, 9, 5
10, 4, 8, 7
Est-ce que c'est bien ça ?
Si oui :
Tu ne sais pas expliquer un problème. Il faut être précis et donner des exemples.
Il faut mémoriser les valeurs dans un tableau. Par exemple tab1 et tab2. Pour les échanger, il faudra trouver les indices i et j correspondant, et appeler la fonction d'échange avec &(tab1[i]) et &(tab2[j]).
Si tu as deviné juste BRAVO !
Sur les arguments à passer à la fonction d'échange on peut faire plus simple sans les parenthèses, donc : &tab1[i] et &tab2[j].
La raison est que, selon la norme du C, & et [] sont des opérateurs, et que l'opérateur [] a préséance sur l'opérateur &. C'est donc bien l'adresse de l'emplacement où se trouve l'élément i ou j du tableau qui sera renvoyée sans qu'il soit nécessaire d'ajouter des parenthèses.
comment sortir une valeur d'un for pour l'échanger
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.