Système de tri et comptage

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 357 fois - Téléchargée 29 fois

Contenu du snippet

Voici un exercice donné en première année de DUT Mesures Physiques. Il est assez basique mais donne un moyen simple de réaliser un tri. Pour l'algorythme de comptage je suis pas sur qu'il soit vraiment optimal. Mais bon vu que c'est mon premier code C...
Petite précision il à été testé avec le compilateur gcc sous linux (débian).

Source / Exemple :


/* 10 02 2006 Tri et Comptage */ 
/* Auteur : William POTTIER */
#include <stdio.h>

main()
{
	/* Variables générale */
	int k, N, j, kmini, kmaxi;
	double mini, notes[3001];
	/* Variables de comptages */
	int comptage[3001], i;
	double note;
	
	
	/* Acquisition de N */
	printf(" Recherche d'un minimum");
	printf(" Nombre total de notes a saisir ? ");
	scanf("%d",&N);
	
	/* Acquisition des notes */
	printf("Entrez les notes:\n");
	for(k=0;k<N;k++)
	{
		printf("Note %d: ",k+1);
		scanf("%lf", &notes[k]);
	}
	/* On mets une ligne de séparation */
	printf("===========================================\n");
	
	/* Tri */
	for(j=0; j<(N-1); j++)
	{
		mini = notes[j];
		kmini = j;
		
		for(k=j+1; k < N; k++)
		{
			if(mini > notes[k])
			{
				mini = notes[k];
				kmini = k;
			}

		}

		notes[kmini] = notes[j];
		notes[j] = mini;

		
	}

	/* Comptage */
	i=0;
	kmaxi = N-1;
	for(k=notes[0]; k < notes[kmaxi]+1; k++)
	{
		for(j = 0; j < N; j++)
		{
			if(notes[j] == k)
			{
			comptage[i] = comptage[i] + 1;
			}
		}
		i++;
	}
	
	
	/* Affichage des notes triées */
	printf("Note(s) triée(s) :\n");
	note = notes[0];
	for(k = 0; k < (notes[kmaxi] - notes[0] + 1) ; k++)
	{
		printf("%lf (%d)\n", note, comptage[k]);
		note++;
	}	
	
	/* Fin du programe */
	printf("*******************************************\n");
	printf("*** Merci d'avoir utilisé ce programme! ***\n");
	printf("*******************************************\n");
}

Conclusion :


Je suis ouvert à toutes remarques et suggestion pour progresser alors n'hésitez pas.

A voir également

Ajouter un commentaire

Commentaires

wxccxw
Messages postés
759
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011
-
c'est pas mal et bien penser
mais pour des trucs tel que

# printf("*******************************************\n");
# printf("*** Merci d'avoir utilisé ce programme! ***\n");
# printf("*******************************************\n");

tu pourai faire un seul printf :) enfin la je chipote :) je te met 8/10
cs_chris223
Messages postés
11
Date d'inscription
mercredi 14 mai 2003
Statut
Membre
Dernière intervention
18 novembre 2008
-
Feliciations
said78vf
Messages postés
1
Date d'inscription
vendredi 3 février 2006
Statut
Membre
Dernière intervention
21 février 2006
-
ton programme est bien mais pas optimisé comme tu l'a dis par exemple tu déclare un tableau de 3001 notes d'ou un certain gaspillage de mémoire : la solution serait de créer un tableau de taille variable soit en utilisant l'allocation dynamique de mémoire soit les listes chainées et aussi revoir l'algorithme de tri. je posterai le mien ce soir si j'ai le tps. autrement rien à dire : excellente indentation , on relis très bien ce programme, très propre. je te met aussi 8/10 car tu précise que c'est ton premier code en C. Continue comme ça!
cs_wizad
Messages postés
356
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
14 avril 2009
-
pour le tableau je sais pas comment faire mieux : on en est pas encore au tableau de taille variable en cours.
Pour l'algorythme de tri c'est le mieux que j'ai trouvé pendant l'amphi ^^.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.