Problem de trier un tableau en langage c
soumia91
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
asrion Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
asrion Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un grande problème en langage c car je ne savais pas la méthode de trier un tableau et je vous donner l'énoncer de l'exercice telle qui les :
ecrire un programme qui ordonne(trie) les élément d'un tableau, en utilisant la méthode suivante:
-une première boucle parcourt le tableau et se positionne sur l'élément i de celui-ci .
-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.
-avancez d'une position dans votre première boucle. les éléments avant cette nouvelle position sont triés et vous ne devez plus y toucher.
s.v.p aidez moi car je suis très besoin de la solution.
merci avant tous.
j'ai un grande problème en langage c car je ne savais pas la méthode de trier un tableau et je vous donner l'énoncer de l'exercice telle qui les :
ecrire un programme qui ordonne(trie) les élément d'un tableau, en utilisant la méthode suivante:
-une première boucle parcourt le tableau et se positionne sur l'élément i de celui-ci .
-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.
-avancez d'une position dans votre première boucle. les éléments avant cette nouvelle position sont triés et vous ne devez plus y toucher.
s.v.p aidez moi car je suis très besoin de la solution.
merci avant tous.
A voir également:
- Trier un tableau en c
- Trier un tableau excel - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
6 réponses
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
soumia91
mais j'avais aucune idée pour trier un tableau si pour ça je vous de monder de me aider
Ben ton exercice donne la méthode pourtant. C'est quoi que tu ne comprends pas ?
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();
}
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.
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
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é ^^.
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;
}
}
}
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;
}
}
}
}