[C] fonction : comment faire?

jimmy -  
kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   -
salut!

j'ai fais ce petit programme qui consiste a saisir des entiers dans un tableau puis a les trier par ordre croissant.
tout fonctionne.

cependant j'aimerais decouper mon main en une fonction lire qui effectue seulement la saisie des entiers puis je reviens dans le main et j'effectue la suite du programme.

voila comment dois je procéder pour cette fonction ?

MERCI pour votre a vous !


/* 1 -trier un tableau par insertion*/
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include<conio.h>

int main ()
{
 int tab[8];

int j=0;
int cle =0;
int i,n;
 while (n>8)
 {
 printf("\nveuillez saisir le nombre d'entier que vous voulez saisir ( maximum 8) :");
 scanf("%d",&n);
 }
  for (i=0;i<=n-1;i++)
  {
   printf("\nsaisir un entier = ");
   scanf("%d",&tab[i]);

  }
    for (i=0; i<=n-1;i++)
     {
     printf("%d ",tab[i]);
     }
      /* trie*/
          printf("\n----------\n");
          while (j<=n)
          {
          for (i=0; i<=n-1;i++)
           {
            if (tab[i]>tab[i+1])
              {
                cle=tab[i+1];
                tab[i+1]=tab[i];
                tab[i]=cle;
              }
           }
           j++;
           }
    printf("\n----------\n");
    for (i=0; i<=n-1;i++)
    {
     printf("%d ", tab[i]);
    }
    printf("\n----------\n");
     system("\nPAUSE\n");
      return 0;
}

5 réponses

  1. Obeet Messages postés 4051 Date d'inscription   Statut Membre Dernière intervention   30
     
    Salut,
    L'en- tête de ta fonction doit avoir un truc du genre:

    int[] Enter_Values(int nbr)
    {
    //là tu remets ton code de lecture, avec nbr à la place de 8 et tu renvois ce que tu as appelé tab.
    }


    et dans ton main tu remplaces la partie écriture de ton tableau par
    int tab[8]= Enter_Values(8);
    0
  2. jimmy
     
    merci pour ta reponse!

    le probleme c'est que le > n < qui correspond au nombre d'entiers entrés dans le tableau , je dois l'utilisé dans la fonction suivante.

    j'ai donc déclarer cette partie dans le main:
    while (n>8)
     {
     printf("\nveuillez saisir le nombre d'entier que vous voulez saisir ( maximum 8) :");
     scanf("%d",&n);
     }


    ensuite j'ai tester ce que tu ma conseiller:

    int tab[8] = ma_fonction_lire( )
    sauf que maintenant entre parenthese j'ai plus besoin de metre 8 mais j'ai besoin de la valeur de < n> .
    j'ai tester sa:

    int tab[8]= ma_fonction_lire(n);

    mais cela ne fonctionne pas.

    comment dois je procéder ?
    0
  3. jimmy
     
    kelkun peux me donner une indication ?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Salut,

    Je connais pas bien le C, mais apparemment tu peux déclarer ton i en tant que variable globale dans ta fonction.

    extern int i;

    Puis faire pareil si tu en as besoin dans ta fonction suivante....
    Comme ça tu auras toujours affaire à la même variable...

    Mais si tu as besoin de ta valeur de i (local dans ta fonction) conservée à chaque appel de ta fonction (toujours la même fonction), il suffit de déclarer i en static dans ta fonction.

    static int i;

    Comme ça tu gardes sa valeur au prochain appel de ta fonction. Ca t'évite de déclarer i dans ton programme principal...
    0