je veux créer un tableau et trouV le plus petit elemen et le plus grand en un seul parcour mais j'y arrive pas!!aidez moi svp
je veux créer un tableau et trouV le plus petit elemen et le plus grand en un seul parcour mais j'y arrive pas!!aidez moi svp
Tu ne sais pas creer un tableau ?
Poster votre code s'il vous plait.
Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.
Bonjour,
Donc si j'ai bien compris, vous avez un tableau de données dans duquel vous vouslez ressortir la valeur la plus grande.
Si c'est ça, voici un code en C qui demande a l'utilisateur de rentrer un certains nombre de double, puis qui, en un seul passage, recupère la valeur la plus grande :
Sincèrement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #include <stdio.h> #include <stdlib.h> double biggest_value(double* tableau, int taille); int main(){ double* tableau; int nbr_donnees; printf("De combien de donnees le tableau doit-il etre compose ? "); scanf("%d",&nbr_donnees); tableau = malloc(sizeof(double) * nbr_donnees); for(int i=0;i<nbr_donnees;i++){ printf("Donnee %d : ",i+1); scanf("%lf",&tableau[i]); } printf("La plus grande valeur est : %lf\n\n",biggest_value(tableau, nbr_donnees)); } double biggest_value(double* tableau, int taille){ double actual_number; actual_number = tableau[0]; for(int i=1;i<taille;i++){ if(actual_number < tableau[i]) actual_number = tableau[i]; } return actual_number; }
Thüzhen.
merci bien pour la reponse!! je débute dans ce genre de langage donc j'ai du mal à me situer ...
Suite à ton autre demande par MP, je te poste un nouveau code source, pas très propre mais qui fonctionne.
La demande était donc de ressortir la plus grande valeur, la plus petite valeur, et la moyenne des valeurs d'un tableau d'int.
Petit défaut dans le programme : la moyenne est retournée sous forme d'int.
Sincèrement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 #include <stdio.h> #include <stdlib.h> int* tri(int* tableau,int longueur_tableau); int main(){ int nbr_donnees,*tableau_age = NULL,i; int *resultat; printf("Combien de donnes vont-etres rentrees ? "); scanf("%d",&nbr_donnees); if((tableau_age = malloc(sizeof(int) * nbr_donnees)) == NULL){ printf("Erreur lors de l'allocation de la memoire...\n"); exit(EXIT_FAILURE); } for(i=0;i<nbr_donnees;i++){ printf("Donnee %d : ",i+1); scanf("%d",&tableau_age[i]); } resultat = tri(tableau_age,nbr_donnees); printf("Petit : %d ::: Grand : %d ::: Moyenne : %d\n\n",resultat[1],resultat[0],resultat[2]); free(tableau_age); exit(EXIT_SUCCESS); } int* tri(int* tableau,int longueur_tableau){ int i; int return_tableau[3] = {tableau[0],tableau[0],tableau[0]}; for(i=1;i<longueur_tableau;i++){ if(tableau[i] > return_tableau[0]) return_tableau[0] = tableau[i]; else if(tableau[i] < return_tableau[1]) return_tableau[1] = tableau[i]; return_tableau[2] += tableau[i]; } return_tableau[2] /= longueur_tableau; return return_tableau; }
Thüzhen.
Dernière modification par Invité ; 19/10/2010 à 00h20.
Il ne faut jamais retourner l'adresse d'un objet local à une fonction car il est créé sur la pile. Et une fois qu'on quitte la fonction, son contenu est donc susceptible d'être modifié à tout moment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part return return_tableau;
Bonjour jeroman.
Merci de ta réponse, j'aurais appris quelque chose.
J'en profite pour te poser une question, comment retourner un tableau dans ce cas ? J'envoie un deuxième tableau à la fonction qui le modifie directement ?
Sincèrement,
Thüzhen.
Oui, pour modifier le contenu d'un tableau déclaré ailleurs tu peux envoyer à la fonction appelée l'adresse du premier élément du tableau, comme ceci :
(Si "fonction1" n'est pas censée connaître la taille du tableau, il faudra également lui envoyer sa taille, sinon il y a risque de crash)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void fonction1(int * tableau) { tableau[0] = 0; tableau[1] = 10; tableau[2] = 20; } void fonction2(void) { int tableau[3]; fonction1(tableau); printf("%d %d %d\n", tableau[0], tableau[1], tableau[2]); (...) }
Tu peux aussi allouer dynamiquement de la mémoire via la fonction "malloc" ou ses dérivées ("calloc", etc). Dans ce cas, ta fonction devra renvoyer l'adresse du bloc mémoire alloué :
Mais pour allouer seulement 3 "int", c'est pas du tout conseillé (ça consomme des ressources inutilement).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 int * fonction1(void) { int * tableau; tableau = malloc (3 * sizeof *tableau); if (tableau != NULL) { tableau[0] = 0; tableau[1] = 10; tableau[2] = 20; } return tableau; } void fonction2(void) { int * tableau = NULL; (...) tableau = fonction1(); printf("%d %d %d\n", tableau[0], tableau[1], tableau[2]); (...) free(tableau) , tableau = NULL; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager