offset_0x0ff0 8 déc. 2008 à 23:44 salut, juste une autre solution. compilé sous

offset_0x0ff0 8 déc. 2008 à 23:44 salut, juste une autre solution. compilé sous linux exo du www.siteduzero.fr // une fonction ordonnerTableau qui classe les valeurs d'un tableau dans l'ordre croissant. Ainsi, un tableau qui vaut {15, 81, 22, 13} doit à la fin de la fonction valoir {13, 15, 22, 81} ! #include <stdio.h> void ordonnerTableau(long tableau[], long tailleTableau); int main(int argc, char *argv[]) { long tab[4] = {15,81,22,13}; int i=0; ordonnerTableau(tab,4); for(i=0; i<4; i++) { printf("%ld\n",tab[i]); } return 0; } void ordonnerTableau(long tableau[], long tailleTableau) { long i,t,k=0; for(t = 1; t < tailleTableau; t++) { for(i=0; i < tailleTableau - 1; i++) { if(tableau[i] > tableau[i+1]) { k= tableau[i] - tableau[i+1]; tableau[i] -= k; tableau[i+1] += k; } } } } Ajouter un commentaire dudulle93 - 25 oct. 2010 à 01:14 Salut, désolé de remuer les vieux sujets mais pourrais tu m'expliquer la ligne for(t = 1; t < tailleTableau; t++) stp? car j'ai essayé sans et j'ai vu que les 2 premiers seulement étaient rangé mais j'ai du mal à comprendre... merci :) touf57 - 27 oct. 2010 à 23:33 dudulle93 le for que tu ne comprends pas est une notation élémentaire des boucles for en langage objet. Donc for(int t=1;t<tailleTableau;t++) signifie: pour un index de type entier à partir de 1 tant que l'index t est inférieur à la taille du tableau incrémente t (bien que je préfère la notation ++t) En globale cela veut dire que tu vas boucler de 1 à la taille du tableau -1, et a chaque boucle tu incrémentes ton compteur t. J'espère que c'est plus clair pour toi bouira10 - 18 mai 2011 à 22:34 en ajoute quoi pour change se pregramme a une fonction d'un programme si en veux ajoute une valeur comment en peux garde l'ordre croissant mido - 26 déc. 2011 à 14:17 #include <stdio.h> #include <stdlib.h> void ordonner(int T[],int); int main(int argc, char *argv[]) { int T[5]={7,4,5,3,8},i; ordonner(T,5); for(i=0;i<5;i++) { printf("T[%d]=%d\n",i,T[i]); } system("pause"); return 0; } void ordonner(int T[],int taille) { int i,j,p=0; for(j=0;j<taille;j++) { for(i=0;i<taille;i++) { do { p=T[i]; T[i]=T[i+1]; T[i+1]=p; }while(T[i]>T[i+1]); } } } Ajouter un commentaire Annonces Google Création d'organigramme Logiciel de création automatique d'organigrammes (p.ex. de SAP) fr.ingentis.com/orgmanager RÉPONSE +5 ilyas.dll 18 avril 2009 à 01:42 voila un petit programme de tri croissant dans un tableau unidimensionnel!!..reste a compiler!! #include<stdio.h> #include<stdlib.h> main() { int i,n,c,j; int T[n]; printf("entrer la valeur de n : "); scanf("%d",&n); for (i=1;i<=n;i++) { printf("T[%d]= ",i); scanf("%d",&T[i]); } for (j=1;j<=n;j++) { for (i=1;i<n;i++) { if (T[i]<T[i+1]) { c=T[i]; T[i]=T[i+1]; T[i+1]=c; } } } for (i=1;i<=n;i++) //affichage printf("T[%d]=%d \n",i,T[i]); system("pause"); } Ajouter un commentaire Afficher les 9 commentaires fiddy - 12 déc. 2010 à 18:20 Une convention, c'est quelque chose qu'on a usage de faire bien que non imposé par la norme. Là, ce n'est pas une convention, c'est la norme ISO C89/90 et repris dans C99 qui t'impose : int main (void) ou int main(int argc, char **argv). D'ailleurs, un compilateur standard n'acceptera pas le prototype void main(). Sinon, c'est qu'il n'est pas bon. Après si ça t'amuse, tu peux également modifier un compilateur pour qu'il accepte void debut() (au lieu de int main(void))... mais ça ne sera pas portable, au même titre que main(), void main(), ou encore void main(void). Faire du C standard, c'est faire du code portable, reconnu universellement sur tous les compilateurs C standards et ce, quelque soit l'OS. Après, libre à toi de mal coder... Scoleproj - 12 déc. 2010 à 18:30 Selon toi le compilateur crée par GNU compiler (GCC) est un mauvais compilateur? Ben je me demande alors quel type de compilateur tu utilise O_O. fiddy - 12 déc. 2010 à 19:01 Non, c'est un bon compilateur. Encore faut-il savoir correctement l'utiliser... gcc tout court n'est pas standard. Par contre, il existe plein d'options. Par exemple : gcc -pedantic -ansi (je ne parle pas de la mise en place des warnings, et autres contrôles) permet de s'assurer qu'on fait du code standard. Pour utiliser l'ISO C99, il faut utiliser -std=c99 mais attention gcc n'est pas encore entièrement compatible C99 (http://gcc.gnu.org/c99status.html). Un code qui marche avec gcc tout court n'est pas sûr de passer sur un autre compilateur (même si souvent, cela marche). Alors qu'un code fonctionnant avec les switchs que je t'ai donnés marchera sur n'importe quel autre compilateur standard. Diop - 2 juil. 2011 à 01:27 C'est juste cette solution mais seulement votre deuxieme boucle c'est a dire "for(j=1;j<=n;j++)" ne sert a rien ici.Elle inutile.Merci fiddy - 2 juil. 2011 à 10:49 Diop, Tu réponds à une question qui date de plus de deux ans où on a déjà répondu... Cdlt, Ajouter un commentaire RÉPONSE +4 Nirv 15 oct. 2010 à 10:53 #include <stdio.h> #include <conio.h> #include <stdlib.h> main() { int N,* tab,x,i,nombre,temp; printf("N:"); scanf("%d",&N); srand((unsigned int)time(NULL)); tab=(int *)malloc(N*sizeof(int)); for(i=0;i<N;i++) { nombre = rand()%100 +1; tab[i]=nombre; } printf("Tableau non trier:\n"); for(i=0;i<N;i++) { printf("tab[%d] : %d\n",i,tab[i]); } printf("\n\nTableau trier:\n"); for(x=0;x<N;x++) { for(i=0;i<N;i++) { if((tab[i]) < (tab[i+1])) { temp=tab[i]; tab[i]=tab[i+1]; tab[i+1]=temp; } } } for(i=0;i<N;i++) { printf("tab[%d] : %d\n",i,tab[i]); } getch(); } Ajouter un commentaire fiddy - 15 oct. 2010 à 13:56 Ton code contient des erreurs. if((tab[i]) < (tab[i+1])) Puisque i varie de i à N-1 avec le for, la valeur maximale de i+1 sera N. Et tab[N] est hors du tableau... La fonction main renvoie un int. Donc son prototype est : int main (void) Et il faut mettre return 0; à la fin. Ensuite en amélioration : nombre = rand()%100 +1; Pourquoi passer par une variable nombre ? Ajouter un commentaire RÉPONSE +3 Az 25 oct. 2010 à 14:28 void ordonnerTableau(int tableau[], int tailleTableau){ int i, m, k; for(k = 0; k < tailleTableau; k++) { for(i = 1; i < tailleTableau; i++) { m = tableau[i] - tableau[i - 1]; if(m < 0) { tableau[i] = tableau[i - 1]; tableau[i - 1] = tableau[i] + m; } }} for(i = 0; i < tailleTableau; i++) { printf("%d\n", tableau[i]); } } Ajouter un commentaire RÉPONSE +2 Guki 18 oct. 2004 à 11:44 Salut! #include <stdlib.h> void qsort(void base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); Il n'y a rien à faire et ça fait parti du standard C que demande plus le peuple? NB: Pour choisir l'ordre croissant ou décroissant il suffit de changer la fonction compar. Ajouter un commentaire RÉPONSE +1 anoir 12 déc. 2010 à 13:14 merci Ajouter un commentaire RÉPONSE +1 qwemour 19 oct. 2012 à 01:47 voila un code qui trie un tableau de manière croissant en langage C: --------------------------------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> void trier(int table[],int taille); int main(int argc, char *argv[]) { long tab[6] = {150,-83,112,231,5,12}; int i=0; trier(tab,6); for(i=0; i<6; i++) { printf("%ld\n",tab[i]); } return 0; } void trier(int table[],int taille) { int i,j,min,d=0; for(i=0;i<taille-1;i++) { min=table[i]; for(j=i+1;j<taille;j++) { if(table[j]<min) { min=table[j]; d=j; } } if(table[i]!=min) { table[d]=table[i]; table[i]=min; } } } ------------------------------------------------------------------------------------------------- Ajouter un commentaire RÉPONSE -1 helali 17 oct. 2004 à 18:13 Voilà tout le programme de tri(sous windows) par la methode trimin, reste à la compiler : #include<stdio.h> #include<stdlib.h> main() { int tab[7]="5,89,23,999,2"; int i,j,indmin,q; for(i=0;i<7;i++) { indmin=i; for(j=i+1;j<7;j++) if(tab[j]<tab[i]) indmin=j; q=tab[i]; tab[i]=tab[indmin]; tab[indmin]=q; } system("pause"); return 0; } Bon courage Ajouter un commentaire snifman - 31 oct. 2008 à 13:06 bonjour, helali j'espere ke tou ca se passe bien chez toi,est ce que vous pouvez me dire d'ou je peux trouver des exercices du language c precisement les tableaux comme (tri par insertion,tri normale.... ) avec des pointeur. alors si vous voulez me contacter voila mon adresse E-mail:alaeand1@hotmail.com Merci Ajouter un commentaire RÉPONSE -2 fion 21 août 2008 à 15:51 Bonjour, Réinventer la roue?! C'est sur mais quand c'est pour apprendre, c'est très utile :) donc si quelqu'un a une solution car j'ai le même soucis sauf que moi l'utilisateur doit rentrer 8 valeures entre 0 et 255 et j'ai pensé que créer deux tableaux, un stockant les valeures entrées, et un autre pour afficher les valeures triées. Mais j'ai pas de réelle expérience en algo donc un pti coup de pouce n'est pas de refus Merci d'avance :) Ajouter un commentaire sthael_01 - 22 août 2008 à 00:06 been je vais t'aider si ce forum existe c'est tout de meme pour s'entraider aussi car tout vaut le cout pour apprendre: #include<stdio.h>/* declaration des bibliotheques */ #include<conio.h> var int i,j; /*declaration des variables */ float A[7],temp; void main() { for (i=0;i<7;i++) { printf("A[%d]=",i+1); scanf("%f",&A[i]); } printf("affichage du tableau:\n"); for (i=0;i<7;i++) printf("%.2f\t",A[i]); printf("resultat du tableau trié:\n"); for (i=0;i<6;i++) for (j=i+1;j<7;j++) if (A[i]>=A[ j] { temp=A[i]; A[i]=A[ j]; A[ j ] =temp; } for (i=0;i<7;i++) printf("%.2f\t",A[i]); getch();/*pour retenir l'affichage*/ } j'esper que ton probleme est resolu Ajouter un commentaire RÉPONSE -2 sthael_01 22 août 2008 à 12:53 et les ga jai pas fait attention à la date de toute façon c'est pas grave les solutions sont donc là et peuvent y deumerer Ajouter un commentaire RÉPONSE -2 hhako 13 août 2009 à 14:57 oui je cherche à trie en c basic Ajouter un commentaire RÉPONSE -3 uploads/S4/ offset.pdf

  • 29
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Apv 17, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.2545MB