Problem de trier un tableau en langage c
Fermé
soumia91
Messages postés
6
Date d'inscription
jeudi 2 avril 2009
Statut
Membre
Dernière intervention
5 mars 2011
-
2 avril 2009 à 21:54
asrion Messages postés 4 Date d'inscription samedi 21 juin 2014 Statut Membre Dernière intervention 6 novembre 2015 - 6 nov. 2015 à 21:29
asrion Messages postés 4 Date d'inscription samedi 21 juin 2014 Statut Membre Dernière intervention 6 novembre 2015 - 6 nov. 2015 à 21:29
A voir également:
- Trier un tableau en c
- Trier tableau excel - Guide
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
6 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
2 avril 2009 à 21:57
2 avril 2009 à 21:57
Salut,
Donne le code que t'as fait pour qu'on puisse t'aider ;-)).
Cdlt
Donne le code que t'as fait pour qu'on puisse t'aider ;-)).
Cdlt
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
2 avril 2009 à 22:26
2 avril 2009 à 22:26
Ben ton exercice donne la méthode pourtant. C'est quoi que tu ne comprends pas ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
soumia91
2 avril 2009 à 22:50
2 avril 2009 à 22:50
donner le programme correspondant a cet exercice
Ce que tu demandes est hors-charte ;-)).
Dis-nous ce que tu ne comprends pas ou fais le début de programme, sinon on ne peut pas aider.
Ce que tu demandes est hors-charte ;-)).
Dis-nous ce que tu ne comprends pas ou fais le début de programme, sinon on ne peut pas aider.
loupius
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
2 avril 2009 à 23:07
2 avril 2009 à 23:07
Depuis le début, je sentais qu'il voulait se coincer la bulle ;-)))
j'ai trouver le programme suivant:
#include<stdio.h>
main()
{
int n;
int tab[n];
int i,j,k,m;
printf("donner le nombre d'éléments de ce tableau\n");
scanf("%d",&n);
for(i=0;i<n;i++);
{
printf("donner une valeur \n");
scanf("%d",&tab[i]);
}
for(j=0;j<n;j++)
{
for(k=n;k<=j+1;k++)
{
if(tab[k-1]>tab[k])
{
m=tab[k-1];
tb[k-1]=tab[k]
tab[k]=m;
}
}
}
}
mais ça marche pas
aider mis s.v.p
#include<stdio.h>
main()
{
int n;
int tab[n];
int i,j,k,m;
printf("donner le nombre d'éléments de ce tableau\n");
scanf("%d",&n);
for(i=0;i<n;i++);
{
printf("donner une valeur \n");
scanf("%d",&tab[i]);
}
for(j=0;j<n;j++)
{
for(k=n;k<=j+1;k++)
{
if(tab[k-1]>tab[k])
{
m=tab[k-1];
tb[k-1]=tab[k]
tab[k]=m;
}
}
}
}
mais ça marche pas
aider mis s.v.p
Si tu vx la bonne reponse essaie ce code là
#include<stdio.h>
int n,echg,i,j;
char rep;
main()
{
do
{
system("cls");
printf("Entrez leNombre de case pour le tableau: ");
scanf("%d",&n);
printf("Entrez tous les elements du Tableau: \n");
int T[n];
for(i=0;i!=n;i++)
{
scanf("%d",&T[i]);
}
for(i=0;i!=n;i++)
{
for(j=0;j!=n;j++)
{
if (T[i]<T[j])
{
echg = T[j];
T[j] = T[i];
T[i] = echg;
}
}
}
system("cls");
printf("Les elements du tableau Sont comme suit: \n");
for(i=0;i!=n;i++)
{
printf("%d ",T[i]);
}
printf("\n\nVoulez-Vous Recommencer ?\n\n\t\t==> ");
scanf("%s",&rep);
}
while((rep=='o') || (rep=='O') || (rep=='y') || (rep=='Y'));
printf("\n\n\n\n\n\t\tA bientot ^^ !!\n");
getch();
}
#include<stdio.h>
int n,echg,i,j;
char rep;
main()
{
do
{
system("cls");
printf("Entrez leNombre de case pour le tableau: ");
scanf("%d",&n);
printf("Entrez tous les elements du Tableau: \n");
int T[n];
for(i=0;i!=n;i++)
{
scanf("%d",&T[i]);
}
for(i=0;i!=n;i++)
{
for(j=0;j!=n;j++)
{
if (T[i]<T[j])
{
echg = T[j];
T[j] = T[i];
T[i] = echg;
}
}
}
system("cls");
printf("Les elements du tableau Sont comme suit: \n");
for(i=0;i!=n;i++)
{
printf("%d ",T[i]);
}
printf("\n\nVoulez-Vous Recommencer ?\n\n\t\t==> ");
scanf("%s",&rep);
}
while((rep=='o') || (rep=='O') || (rep=='y') || (rep=='Y'));
printf("\n\n\n\n\n\t\tA bientot ^^ !!\n");
getch();
}
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
2 avril 2009 à 23:36
2 avril 2009 à 23:36
Ce programme (copier de je ne sais où) ne respecte même pas la consigne et en plus il est faux ^^.
recherchez a partir de cet élément et jusqu'à la fin du tableau la plus petite valeur. échangez cette plus petite valeur avec la valeur a la position i.
Ta deuxième boucle for et ton if ne respecte donc pas la consigne.
De plus :
int n;
int tab[n];
n n'est pas initialisée lors de la déclaration du tableau. Il faut l'initialiser.
recherchez a partir de cet élément et jusqu'à la fin du tableau la plus petite valeur. échangez cette plus petite valeur avec la valeur a la position i.
Ta deuxième boucle for et ton if ne respecte donc pas la consigne.
De plus :
int n;
int tab[n];
n n'est pas initialisée lors de la déclaration du tableau. Il faut l'initialiser.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
3 avril 2009 à 00:15
3 avril 2009 à 00:15
Salut,
Tu mémorises le premier élément dans une variable min. Tu parcours le tableau avec une boucle for. Si l'élément est plus petit que min, alors min devient l'élément en question.
A la fin de la boucle, la variable min est le minimum du tableau.
Tu mémorises le premier élément dans une variable min. Tu parcours le tableau avec une boucle for. Si l'élément est plus petit que min, alors min devient l'élément en question.
A la fin de la boucle, la variable min est le minimum du tableau.
j'ai trouver sur un site le programme suivant:
#include <stdio.h>
/* La fonction de permutation
Arguments :
tab : le tableau dans lequel il faut permuter deux elements
i : l'indice du premier element a permuter
j : l'indice du deuxieme element a permuter
Resultats : aucun
La fonction est purement utilitaire et ne sert qu'a alleger le code du tri
*/
void permute (int tab[], int i, int j) {
int temp; /* un variable temporaire */
/* permutation des elements d'indices i et j */
temp = tab[i];
tab[i] = tab[j];
tab[j] = temp;
}
/* La fonction de tri croissant
Arguments :
tab : le tableau a trier dans l'ordre croissant
taille : le nombre d'elements dans le tableau
Resultats : aucun
*/
void tritab (int tab[], int taille) {
int i; /* indice du premier element de la partie non encore triee du tableau */
int j; /* indice utilise pour parcourir la partie non triee a la recherche du plus petit element */
int min; /* indice du plus petit element dans la partie non triee */
/* tout le tableau doit etre trie
au depart, la partie triee est vide et la partie non triee couvre tout le tableau
le premier element de la partie non triee a donc l'indice 0
*/
for (i = 0; i < taille; i++) {
/* recherche du plus petit element de la partie non triee */
min = i;
for (j = i + 1; j < taille; j++) if (tab[j] < tab[min]) min = j;
/* s'il y a un element plus petit que le premier de la partie non triee, on permute */
if (i != min) permute(tab, i, min);
}
}
/* Le programme de test */
int main () {
int tab[10]; /* Un tableau utilise pour le test */
int i; /* Un indice utilise pour le parcours du tableau */
/* Demande et lecture des valeurs initiales des elements du tableau */
for (i = 0; i < 10; i++) {
printf("Introduire tab[%d] : ", i);
scanf("%d", &(tab[i]));
}
/* Affichage des valeurs des elements du tableau avant le tri */
printf("Avant le tri:\n");
for (i = 0; i < 10; i++) {
printf("tab[%d] : %d\n", i, tab[i]);
}
/* Tri du tableau */
tritab(tab, 10);
/* Affichage des valeurs des elements du tableau apres le tri */
printf("Apres le tri:\n");
for (i = 0; i < 10; i++) {
printf("tab[%d] : %d\n", i, tab[i]);
}
}
je pense que c'est la solution de mon exercice
#include <stdio.h>
/* La fonction de permutation
Arguments :
tab : le tableau dans lequel il faut permuter deux elements
i : l'indice du premier element a permuter
j : l'indice du deuxieme element a permuter
Resultats : aucun
La fonction est purement utilitaire et ne sert qu'a alleger le code du tri
*/
void permute (int tab[], int i, int j) {
int temp; /* un variable temporaire */
/* permutation des elements d'indices i et j */
temp = tab[i];
tab[i] = tab[j];
tab[j] = temp;
}
/* La fonction de tri croissant
Arguments :
tab : le tableau a trier dans l'ordre croissant
taille : le nombre d'elements dans le tableau
Resultats : aucun
*/
void tritab (int tab[], int taille) {
int i; /* indice du premier element de la partie non encore triee du tableau */
int j; /* indice utilise pour parcourir la partie non triee a la recherche du plus petit element */
int min; /* indice du plus petit element dans la partie non triee */
/* tout le tableau doit etre trie
au depart, la partie triee est vide et la partie non triee couvre tout le tableau
le premier element de la partie non triee a donc l'indice 0
*/
for (i = 0; i < taille; i++) {
/* recherche du plus petit element de la partie non triee */
min = i;
for (j = i + 1; j < taille; j++) if (tab[j] < tab[min]) min = j;
/* s'il y a un element plus petit que le premier de la partie non triee, on permute */
if (i != min) permute(tab, i, min);
}
}
/* Le programme de test */
int main () {
int tab[10]; /* Un tableau utilise pour le test */
int i; /* Un indice utilise pour le parcours du tableau */
/* Demande et lecture des valeurs initiales des elements du tableau */
for (i = 0; i < 10; i++) {
printf("Introduire tab[%d] : ", i);
scanf("%d", &(tab[i]));
}
/* Affichage des valeurs des elements du tableau avant le tri */
printf("Avant le tri:\n");
for (i = 0; i < 10; i++) {
printf("tab[%d] : %d\n", i, tab[i]);
}
/* Tri du tableau */
tritab(tab, 10);
/* Affichage des valeurs des elements du tableau apres le tri */
printf("Apres le tri:\n");
for (i = 0; i < 10; i++) {
printf("tab[%d] : %d\n", i, tab[i]);
}
}
je pense que c'est la solution de mon exercice
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
3 avril 2009 à 00:44
3 avril 2009 à 00:44
Effectivement et commenté en plus. T'as de la chance qu'internet soit riche d'information ;-))).
Il manque juste le petit return 0; dans le main et t'auras une bonne note sans avoir travaillé ^^.
Il manque juste le petit return 0; dans le main et t'auras une bonne note sans avoir travaillé ^^.
qwemour
Messages postés
8
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
19 octobre 2012
19 oct. 2012 à 01:59
19 oct. 2012 à 01:59
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;
}
}
}
---------------------------------------------------------------------------------------------
#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;
}
}
}
asrion
Messages postés
4
Date d'inscription
samedi 21 juin 2014
Statut
Membre
Dernière intervention
6 novembre 2015
Modifié par asrion le 3/11/2015 à 15:34
Modifié par asrion le 3/11/2015 à 15:34
Bonjour Voici ma solution à vous proposer, avec un bloc de if en moins
et le tableau marche pour toutes sortes de tailles (dynamique)
int main(int argc, char *argv[]){
//Ordonner Tableau
//exemple
int tableau[] = {50, 75, 85, 98, 125, 15, 81, 22, 13 };
int tailleTableau= sizeof tableau / sizeof *tableau;
printf("\nApercu tableau initiale \n");
for(i=0; i < tailleTableau; i++){
printf(" %d ", tableau[i]);
}
ordonnerTableau(tableau, tailleTableau);
printf("\n Apercu tableau trié ou ordonné \n");
return 0;
}
void ordonnerTableau(int tableau[], int tailleTableau){
int i =0, j = i+1, min = 0, k = 0;
int limite = tailleTableau - 1;
for(i=0; i < limite; i++){
min = tableau[i];
for(j=i+1; j < tailleTableau; j++){
if(min > tableau[j]){
min = tableau[j];
k = j;
tableau[k] = tableau[i];
tableau[i] = min;
}
}
}
}
et le tableau marche pour toutes sortes de tailles (dynamique)
int main(int argc, char *argv[]){
//Ordonner Tableau
//exemple
int tableau[] = {50, 75, 85, 98, 125, 15, 81, 22, 13 };
int tailleTableau= sizeof tableau / sizeof *tableau;
printf("\nApercu tableau initiale \n");
for(i=0; i < tailleTableau; i++){
printf(" %d ", tableau[i]);
}
ordonnerTableau(tableau, tailleTableau);
printf("\n Apercu tableau trié ou ordonné \n");
return 0;
}
void ordonnerTableau(int tableau[], int tailleTableau){
int i =0, j = i+1, min = 0, k = 0;
int limite = tailleTableau - 1;
for(i=0; i < limite; i++){
min = tableau[i];
for(j=i+1; j < tailleTableau; j++){
if(min > tableau[j]){
min = tableau[j];
k = j;
tableau[k] = tableau[i];
tableau[i] = min;
}
}
}
}
asrion
Messages postés
4
Date d'inscription
samedi 21 juin 2014
Statut
Membre
Dernière intervention
6 novembre 2015
3 nov. 2015 à 15:46
3 nov. 2015 à 15:46
Même code presque pour le tri décroissant
en changeant cette ligne de code
if(min > tableau[j]){
et qui devient
if(min < tableau[j]){
et vous aurez le tri décroissant ,)
en changeant cette ligne de code
if(min > tableau[j]){
et qui devient
if(min < tableau[j]){
et vous aurez le tri décroissant ,)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
3 nov. 2015 à 21:19
3 nov. 2015 à 21:19
Attention au déterrage de topic... Celui-ci date de 3 ans...
Sinon, lorsque tu postes un code, merci d'utiliser la balise <code c>.
Exemple :
<code c>
/*tu mets ton code ici*/
</code>
Ainsi, ça sera plus lisible.
Sinon, lorsque tu postes un code, merci d'utiliser la balise <code c>.
Exemple :
<code c>
/*tu mets ton code ici*/
</code>
Ainsi, ça sera plus lisible.
asrion
Messages postés
4
Date d'inscription
samedi 21 juin 2014
Statut
Membre
Dernière intervention
6 novembre 2015
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
6 nov. 2015 à 21:29
6 nov. 2015 à 21:29
Merci fiddy pour le conseil sur les balises
et oui je n'avais pas remarqué la date du topic :p
et oui je n'avais pas remarqué la date du topic :p
2 avril 2009 à 22:09