[C] fonction : comment faire?

Fermé
jimmy - 28 févr. 2005 à 20:32
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 2 mars 2005 à 21:05
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;
}
A voir également:

5 réponses

Obeet Messages postés 1766 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 17 novembre 2010 30
28 févr. 2005 à 23:08
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
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
UP !!
0
kelkun peux me donner une indication ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
2 mars 2005 à 21:05
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