Forum Clubic

Problème avec les fonctions

Bonjour,

ce bout de programme n’est pas complet, il demande à l’utilisateur de remplir un tableau puis lui demande de choisir entre tri par selection, tri shell, tri rapide, tri comptage pour trier le tableau(j n’ai pas encore fini sur ce point là) il doit à la fin demander à l’utilisateur s’il veut remplir à nouveau un tableau etc… ou s’il veut quitter (j’ai pas fait ça aussi), il est exécutable parcontre, pour le moment je veut juste utiliser une fonction affiche_tableau qui contient ça

" for (i=0; i<n; i++) 
{ 


printf("%d ",table[i]); 
}" 

et une fonction remplir_tableau qui contient ça 

"do 
{printf("Veuillez entrer la taille du tableau...\n"); 
scanf("%d",&n); 
printf("Taille du tableau: -%i-\n\n",n); 
} 

while (n>=100); 
Sleep(1000); 
for (i=0;i<n;i++) 
{ 
printf("Veuillez entrer l'element %d \n ",i+1); 

scanf("%d",&table[i]);" 


et non pas les mettre directement dans main, j'ai déja essayer mais sans résultat (je ne peut pas encore manipuler les fonctions facilement), comment faire svp je suis novice en c. 
Merci d'avance. 


voila: 
#include <stdio.h> 
#include <stdlib.h> 
#include <windows.h> 
#include <conio.h> 

void tri_selection(int table[],int n) 
{ 

int i,min,j,tmp; 

for (i=0;i<n-1;i++) 
{ 
min=i; 
for(j=i+1;j<n;j++) 
if (table[j]<table[min]) 
min=j; 
if (min!=i) 
{ 
tmp=table[i]; 
table[i]=table[min]; 
table[min]=tmp; 
} 
} 
} 
int main() 
{ 

int table[100],tri,n,i; 

do 
{printf("Veuillez entrer la taille du tableau...\n"); 
scanf("%d",&n); 
printf("Taille du tableau: -%i-\n\n",n); 
} 

while (n>=100); 
Sleep(1000); 
for (i=0;i<n;i++) 
{ 
printf("Veuillez entrer l'element %d \n ",i+1); 

scanf("%d",&table[i]); 

} 

printf("Merci, maintenant etape suivante...\n\n"); 
system("PAUSE"); 
printf("\nVeuillez choisir le type de tri que le programme va effectuer...\n\n"); 
Sleep(1000); 
printf("Le nombre 0 refere au Tri de selection\n\n"); 
Sleep(500); 
printf("Le nombre 1 refere au Tri shell\n\n"); 
Sleep(500); 
printf("Le nombre 2 refere au Tri rapide\n\n"); 
Sleep(500); 
printf("Le nombre 3 au Tri comptage\n\n"); 
tri=getch(); 
switch(tri){ 

case '0': printf("Vous avez choisi le Tri par selection.\n"); 
tri_selection(table,n); 
break; 
case '1':printf("Vous avez choisi le Tri shell.\n\n"); 
break; 
case '2':printf("Vous avez choisi le Tri rapide.\n\n"); 
break; 
case '3':printf("Vous avez choisi le Tri comptage.\n\n"); 
break; 
default:printf("Entrer un nombre entre 0 et 3...\n\n"); 
} 



for (i=0; i<n; i++) 
{ 


printf("%d ",table[i]); 
} 

system("PAUSE"); 
return 0; 
}

Message edité le 25/11/2012 à 19:52

j’ai édité ton post avec la balise code pour plus de lisibilité :jap:

Etant donné que c’est un problème de programmation en C, je me permets de déplacer vers la section appropriée du forum, où tu trouveras vraisemblablement de l’aide :wink:

merci ^^
Edité le 26/11/2012 à 21:49

Bonjour,

N’ayant pas le code complet il serait difficile d’identifier les problèmes, surtout que tu ne dis pas quelles erreurs le compilateur retourne. Néanmoins il y a plusieurs points à vérifier :

  • L’ordre d’utilisation, avant d’appeler une fonction il faut au moins qu’elle soit déclarée avant. La définition peut être fait plus loin/à la fin du code.

comme ceci :

[color=brown]void fonction(void); // Déclaration de la fonction
double fonction2(double var1, double var2); // Déclaration de la fonction
double var_globale; // Déclaration d’une variable globale
[/color]

/* void signifie “vide” ou “nul”, ce n’est pas une type de variable, juste un mot-clé pour dire que l’emplacement est vide.
soit ne retourne rien si placé avant le nom de la fonction, soit ne demande aucun paramètre si placé après dans les parenthèses.
void f(void); Ne retourne rien, donc ne pas mettre de return, ou sinon return; sans valeur
À l’appel il suffit de laisser les parenthèses vides : f();
*/

[color=green]int main(void){
double var_loc; // Déclaration d’une variable locale
fonction(); // Appel

var_globale = 5.2;
var_loc = fonction2(2,1.5); // Appel

return 0;
}[/color]

[color=blue]void fonction(void)
{
// Définition de la fonction
}

double fonction2(double var1, double var2)
{
// Définition de la fonction
return ((var1*var2)/var_globale);
}[/color]

Il en va de même avec les variables, si elle est locale, dans une fonction sinon comme pour une fonction, avant le main par exemple :

int var1; // Déclaration
char var2[10]; // Déclaration

Mais il est préférable de placer toutes les déclarations variables comme fonctions dans le fichier dédié à ça, le header, le fichier d’en-tête du même nom en .h ou .hpp si en C++ (avec .cpp)

Il suffit de rajouter dans les premières ligne dans les commandes du préprocesseur :
#include <monfichierheader.h>
Dans un header on ne peut pas initialiser les variables, simplement les déclarer.
Edité le 28/11/2012 à 08:21