Partage
  • Partager sur Facebook
  • Partager sur Twitter

tri_par_selection

probleme de retour de valeur

16 novembre 2017 à 9:12:22

bonjour a tous

je suis toujour sur les differentes facons de faire des tri de tableau.

j ai deja bien compris le tri a bulles et aujourd'hui je suis sur le tri par selection . j ai deja retouché un peu le code que je vous envoi qui est en fait le code source de base de cette fonction de tri mais j ai quelques mauvais retour et j ai du mal a comprendre pourquoi !

voici le code :

#include <stdio.h>

void Permut ( int *A, int *B)
{
	int temp ;
	temp = *A;
	*A = *B ;
	*B = temp ;
}

int RangMinTab ( int N, int P , int Tab[] )
{
	int i , resultat=P ;
	for ( i = P + 1 ; i < N ; i++ )
	{
		if ( Tab[i] < Tab[resultat] )
			resultat = i ;
		return resultat ;
	}

	void TriSel ( int N, int Tab[] )
	{
		int i ;
		for( i = 0; i < N−1 ; i++ )
		{
			int min = RangMinTab (N, i , Tab ) ;

			Permut(&Tab[i] , &Tab[min] ) ;

		}
	}
	void ChargerTab ( int *N, int Tab [] )
	{
		int i ;
		printf( "Combien de valeurs: ?  " ) ;
		scanf( "%d" ,N ) ;
		for ( i =0; i < *N ; i++)
		{
			printf( "Valeur %d : " , i +1);
			scanf( "%d " ,&Tab [ i ] ) ;
		}
		printf( " \n" ) ;
	}
	void EditerTab ( int N, int Tab [] )
	{
		int i ;
		for ( i =0; i <N; i ++)
		{
			printf( " Valeur %d = %d \n" , i +1,Tab[i] ) ;
		}
		printf ( " \n" ) ;
	}
	int main( int argc, char** argv )
	{
		int Tab[100] ;
		int nb ;

		ChargerTab(&nb , Tab ) ;
		EditerTab ( nb ,Tab ) ;
		TriSel ( nb , Tab ) ;
		EditerTab ( nb ,Tab ) ;

		return 0;
	}

j ai les erreur suivant


expected ‘;’ before numeric constant    tri_par_selection.c    /tri_par_selection/src    line 23   
expected declaration or statement at end of input    tri_par_selection.c    /tri_par_selection/src    line 63  
make: *** [src/tri_par_selection.o] Erreur 1    tri_par_selection            
stray ‘\210’ in program    tri_par_selection.c    /tri_par_selection/src    line 23   
stray ‘\222’ in program    tri_par_selection.c    /tri_par_selection/src    line 23  
stray ‘\342’ in program    tri_par_selection.c    /tri_par_selection/src    line 23   
‘main’ is normally a non-static function [-Wmain]    tri_par_selection.c    /tri_par_selection/src    line 52   
control reaches end of non-void function [-Wreturn-type]    tri_par_selection.c    /tri_par_selection/src    line 63   
No return, in function returning non-void    tri_par_selection.c    /tri_par_selection/src    line 20    Code Analysis Problem



-
Edité par alexandre@perpi 16 novembre 2017 à 9:14:16

  • Partager sur Facebook
  • Partager sur Twitter
16 novembre 2017 à 10:34:04

Il manque une parenthèse fermante à la fin de la fonction rangMinTab.

L'indentation particulière du code la met en évidence.

-
Edité par zoup 16 novembre 2017 à 10:35:06

  • Partager sur Facebook
  • Partager sur Twitter
16 novembre 2017 à 10:36:57

et des caractères illégaux ...

zoup a écrit:

Il manque une parenthèse fermante à la fin de la fonction rangMinTab.

accolade }

-
Edité par magma 16 novembre 2017 à 10:39:50

  • Partager sur Facebook
  • Partager sur Twitter
16 novembre 2017 à 10:47:36

Bonne utilisation des balises de code ;) merci !

stray est une erreur montrant que tu utilises un caractère interdit (non lettre, chiffre et _)

ce qui arrive quand on copie colle sur internet (par exemple ;) ).

// si tu as l'œil tu verras la différence entre :
//−
//-


https://ideone.com/gkEbjy

Code corrigé niveau syntaxe. et tu avais oublier une } à la fin d'une fonction

Ensuite, attention au nom donner à tes fonction, cela rend la lecture légèrement confuse.


EditerTab... n'édite pas, elle affiche.

ChargerTab, ne charge pas, elle édite :D 

On réserve les variable tout en majuscule pour les constante.
Exemple dans le standard : RAND_MAX

Et tu gagnera en lisibilité en mettant des nom de variable plus explicite que N,P,etc...

Pour la fonction pour retourner le minimum...
Attention où tu mets le return.
La fonction ne fait pas ce qu'elle devrait faire.

  • Partager sur Facebook
  • Partager sur Twitter
16 novembre 2017 à 13:15:43

neuneutrinos a écrit:

Et tu gagnera en lisibilité en mettant des nom de variable plus explicite que N,P,etc...

+1 là-dessus, une fonction qui cherche le minimum d'un tableau n'utilise que deux paramètres (pointeur premier élément et taille), je ne comprends pas pourquoi il y en a trois ici, et les noms n'aident pas.

  • Partager sur Facebook
  • Partager sur Twitter
16 novembre 2017 à 15:08:31

merci a tous de votre aide .

Encore un sujet résolu.

mon prochain exercice est un tri par substitution ^^

a très vite la communauté 

  • Partager sur Facebook
  • Partager sur Twitter
16 novembre 2017 à 17:49:22

magma a écrit:

et des caractères illégaux ...

zoup a écrit:

Il manque une parenthèse fermante à la fin de la fonction rangMinTab.

accolade }

-
Edité par magma il y a environ 7 heures

Oui, c'était un lapsus.

Merci d'avoir rectifié.

  • Partager sur Facebook
  • Partager sur Twitter
12 février 2022 à 11:00:48 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


12 février 2022 à 11:11:15

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter