while (RL_FIN_TRAIT_TRI!=1) { RL_FIN_TRAIT_TRI=1; for (i=0;i<15;i++) { if (tab[i]==tab[i+1]) { for(j=i+1;j<nb_tab;j++) { tab[j] = tab[j+1]; } RL_FIN_TRAIT_TRI = 0; compteur_doublon = compteur_doublon +1; printf("\ndoublon : %d\n",compteur_doublon); } else { } } }
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question// tri à bulle #define TRUE 1 #define FALSE 0 void tri_a_bulle (int*t, int n) { int j = 0 ; int tmp = 0 ; int en_desordre = 1 ; while (en_desordre) { en_desordre = FALSE ; for(j =0; j < n-1; j++) { if(t[j] > t[j+1]) { tmp = t[j+1] ; t[j+1] = t[j] ; t[j] = tmp ; en_desordre = TRUE ; } } } }
int main () { // déclarations int i, j ; // compteur de boucle int numcase ; // variable qui contient l'indice minimum int sauv ; // variable de permutation int n ; // dimension tableau int vec[5] ; // tableau qui contient 5 éléments // début printf(" Entrez la dimension du tableau : ") ; scanf("%d", &n) ; for (i = 0; i < n; i++) { printf(" Entrez l'\x82l\x82ment num\x82ro %d : ", i+1) ; scanf("%d", &vec[i]) ; } for (i = 0; i < n-1; i++) { numcase = i ; // -- recherche du plus petit élément de i à n -- for (j = i+1; j < n; j++) { if (vec[j] < vec[numcase]) { numcase = j ; } } // échange des 2 cases sauv = vec[numcase] ; vec[numcase] = vec[i] ; vec[i] = sauv ; } // affichage du résultat for (i = 0; i < n; i++) { printf(" Le r\x82sultat du tri est : %d\n ", vec[i]) ; } return 0 ; }
quel type au moins ?
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
(n-1 : désigne le dernière élément du tableau
n-2 : désigne l'avant dernier élément du tableau
...
...
2 : désigne le deuxième élément du tableau
1 : désigne le premiere élément du tableau)
afficher la liste des adresses IP :
i, j : entier // compteur de boucle
min : entier // variable qui contient l'indice minimum
temp : entier // variable de permutation
n : entier // dimension du tableau
char* tableau[500] = {ip1, ip2,..., ip500}
debut
afficher "entrez la dimension du tableau :"
saisir n
pour i allant de 0 a n
afficher "entrez l'element numero %d :" + i+1
saisir tableau[i]
i++
fin pour
pour i allant de 0 a n-1
min = i
// recherche du plus petit élément de i a n
pour j allant de i+1 a j < n
si tableau[j] < tableau[min]
min = j
j++
fin si
fin pour
// échange de 2 cases
temp = tableau[min]
tableau[min] = tableau[i]
tableau[i] = temp
i++
fin pour
// non-affichage des doublons
pour i allant de 0 a n
si n-1 == n-2 alors
afficher "l'adresse" + n-1
fin si
i++
fin pour
// affichage du résultat
pour i allant de 0 a i < n
afficher "%d" + tableau[i]
i++
fin pour
fin
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
int eliminedoublon (int tab[], int n) { int i, j ; for(i = 1; i < n; i++) // i va balayer sur tout le tableau sauf le 1er élément qui reste à sa place { for(j = 0; j < n; j++) // j va balayer les éléments déjà remplis pour comparaison avec un élément pointé par i { if(tab[j] == tab[i]) break ; // Il s'agit d'un doublon } if (j == taille) // Vrai s'il ne s'agit pas d'un doublon { tab[taille++] = tab[i] ; } } return (taille); // Taille utile du tableau, il faut bien en informer l'appelant } (taille correspond à n)
#include <stdio.h> #include <string.h> typedef struct { char ip[32]; int duree; } Connexion; void echange(Connexion* a, Connexion* b) { Connexion tmp = *a; *a = *b; *b = tmp; } /*! ** La "vraie" fonction est "strcmp", mais comme ** il n'est pas indiqué si elle est autorisée pour ** l'exercice, en voici une version "maison". ** ** Elle retourne: ** 1: s1 est plus grand que s2 ** 0: s1 est identique à s2 ** -1: s1 est plus petit que s2 */ int compare(const char* s1, const char* s2) { /* Tant qu'on est pas arrivé à la fin de s1 ou s2 */ while (*s1 && *s2) { /* s1 est plus grand que s2, inutile de parcourir le reste de la chaîne */ if (*s1 > *s2) return 1; /* s1 est plus petit que s2, inutile de parcourir le reste de la chaîne */ if (*s1 < *s2) return -1; /* Les caractères sont identiques, on "avance" s1 et s2 pour comparer le prochain caractère */ ++s1; ++s2; } /* s1 plus court que s2 */ if (!*s1 && *s2) return -1; /* s1 plus long que s2 */ if (*s1 && !*s2) return 1; /* s1 et s2 ont la même taille et le même contenu, donc sont indentiques */ return 0; } void tri_a_bulle(Connexion tab[64], int nb_connexion) { int en_desordre = 1; int i = 0; int j = 0; for (i = 0; (i < nb_connexion) && en_desordre; ++i) { en_desordre = 0; for (j = 1; j < nb_connexion - i; ++j) { if (compare(tab[j - 1].ip, tab[j].ip) == 1) { echange(&tab[j], &tab[j - 1]); en_desordre = 1; } } } } void creer_connexions_pour_debug(Connexion tab[64], int* nb_connexion) { strcpy(tab[0].ip, "192.168.0.1"); tab[0].duree = 360; ++*nb_connexion; strcpy(tab[1].ip, "10.7.1.36"); tab[1].duree = 600; ++*nb_connexion; strcpy(tab[2].ip, "84.46.25.146"); tab[2].duree = 500; ++*nb_connexion; strcpy(tab[3].ip, "192.168.0.1"); tab[3].duree = 180; ++*nb_connexion; strcpy(tab[4].ip, "10.7.1.36"); tab[4].duree = 20; ++*nb_connexion; strcpy(tab[5].ip, "192.168.0.1"); tab[5].duree = 170; ++*nb_connexion; } void afficher_pour_debug(Connexion tab[64], int nb_connexion) { int i = 0; for (i = 0; i < nb_connexion; ++i) printf("tab[%i]: ip=%s, duree=%i\n", i, tab[i].ip, tab[i].duree); } void afficher_duree_totale_connexion(Connexion tab[64], int nb_connexion) { int i = 0; int total = 0; for (i = 0; i < nb_connexion; ++i) total += tab[i].duree; printf("Duree totale de connexion: %i\n", total); } void afficher_ips_sans_doublon(Connexion tab[64], int nb_connexion) { int i = 0; printf("Affichage des ips sans doublons:\n"); for (i = 0; i < nb_connexion; ++i) if (i == 0 || compare(tab[i - 1].ip, tab[i].ip) != 0) printf("%s ", tab[i].ip); printf("\n"); } void afficher_liste_ips(Connexion tab[64], int nb_connexion) { tri_a_bulle(tab, nb_connexion); afficher_ips_sans_doublon(tab, nb_connexion); } int main(void) { Connexion tab[64]; int nb_connexion = 0; creer_connexions_pour_debug(tab, &nb_connexion); afficher_pour_debug(tab, nb_connexion); afficher_duree_totale_connexion(tab, nb_connexion); afficher_liste_ips(tab, nb_connexion); return 0; }