IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

prob avec les tableaux


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Points : 39
    Points
    39
    Par défaut prob avec les tableaux
    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

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Tu ne sais pas creer un tableau ?

  3. #3
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Poster votre code s'il vous plait.
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  4. #4
    Invité
    Invité(e)
    Par défaut
    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 :

    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;
    }
    Sincèrement,
    Thüzhen.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Points : 39
    Points
    39
    Par défaut
    merci bien pour la reponse!! je débute dans ce genre de langage donc j'ai du mal à me situer ...

  6. #6
    Invité
    Invité(e)
    Par défaut
    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.

    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;
    }
    Sincèrement,
    Thüzhen.
    Dernière modification par Invité ; 19/10/2010 à 00h20.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    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.

  8. #8
    Invité
    Invité(e)
    Par défaut
    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.

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    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 :

    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]);
      (...)
    }
    (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)

    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é :

    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;
    }
    Mais pour allouer seulement 3 "int", c'est pas du tout conseillé (ça consomme des ressources inutilement).

Discussions similaires

  1. petit prob avec les tableaux
    Par imorum dans le forum Langage
    Réponses: 7
    Dernier message: 11/11/2008, 19h30
  2. [Débutant] Problèmes avec les tableaux.
    Par Lwq dans le forum C++
    Réponses: 6
    Dernier message: 01/11/2005, 12h54
  3. [vb excel]Aide avec les tableaux
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/09/2005, 12h07
  4. [VB6]Prob avec les requêtes multiples
    Par cammipascal dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 30/03/2004, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo