begin process at 2008 07 19 16:40:08
1 212 906 membres
228 nouveaux aujourd'hui
14 165 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SYSTÈME DE TRI ET COMPTAGE


Information sur la source

Catégorie :Maths & Algorithmes Classé sous : tri, comptage Niveau : Débutant Date de création : 14/02/2006 Vu : 3 521

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


Description

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

  • /* 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");
  • }
/* 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.
  • signaler à un administrateur
    Commentaire de wxccxw le 14/02/2006 12:42:38

    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

  • signaler à un administrateur
    Commentaire de chris223 le 14/02/2006 13:48:42

    Feliciations

  • signaler à un administrateur
    Commentaire de said78vf le 21/02/2006 16:07:17

    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!

  • signaler à un administrateur
    Commentaire de wizad le 27/02/2006 17:26:36

    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 ^^.

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS