Tri décroissant. en C

Fermé
dinowe Messages postés 8 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009 - 9 nov. 2009 à 23:47
dinowe Messages postés 8 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009 - 11 nov. 2009 à 20:17
Bonjour, aider mois sil vous jai un problmme ds la fontion qui fai le tri je sais comment fair un tri decroissant voila le programme en c


#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
char Tvoit[10][20];
char Tjour[7][10];
int M[7][10],NTV[7], NTL[10];



void P_charge()
{
int i,j;
strcpy(Tvoit[0],"mercedes");
strcpy(Tvoit[1],"renault");
strcpy(Tvoit[2],"citroen");
strcpy(Tvoit[3],"fiat");
strcpy(Tvoit[4],"seat");
strcpy(Tvoit[5],"opel");
strcpy(Tvoit[6],"toyota");
strcpy(Tvoit[7],"chevrolet");
strcpy(Tvoit[8],"najib");
strcpy(Tvoit[9],"adnane");


strcpy(Tjour[0],"lundi");
strcpy(Tjour[1],"mardi");
strcpy(Tjour[2],"mercredi");
strcpy(Tjour[3],"jeudi");
strcpy(Tjour[4],"vendredi");
strcpy(Tjour[5],"samedi");
strcpy(Tjour[6],"dimanche");
for(i=0;i<7;i++)
{
printf("type de voiture loué pour le jour:%s\n",Tjour[i]);
for(j=0;j<10;j++)
{
printf("nbre de voitures louees:%s\n",Tvoit[j]);
scanf("%d",&M[i][j]);
}
}
}
void NBTvjour()
{int i,j;
for(i=0;i<7;i++)
{
NTV[i]=0;
for(j=0;j<10;j++)

NTV[i]=NTV[i]+M[i][j];
}
for(i=0;i<7;i++)
printf("jour:%s\t nbre de voitures louees:%d\n",Tjour[i],NTV[i]);
}

void NTLtype()
{int i,j;

for(j=0;j<10;j++)
{
NTL[j]=0;
for(i=0;i<7;i++)

NTL[j]=NTL[j]+M[i][j];
}
for(j=0;j<10;j++)
printf("voiture:%s\t nbre de voitures louees:%d\n",Tvoit[j],NTL[j]);
}
void Tri()
{int Tri[10];

int i,j,d,;
M[2][10]=Tri[10];

for(i=0;i<10;i++)
if(Tri[i]<Tri[i+1])
{
d=Tri[i];
Tri[i]=Tri[i+1];
Tri[i+1]=d;




}






{
printf("pour mercredi afficher le tableau trie ",Tri[i]);
scanf("%d",&Tri[i]);
}
}
main()
{
int choix,plein;
plein=0;
do
{
printf("1: prise en charge\n");
printf("2:nombre de locations par jour\n");
printf("3:nombre de location par type de voitures\n");
printf("4:tri par ordre decroissant par type de voiture\n ");
printf("5:sortir\n");
printf("taper votre choix:");
scanf("%d",&choix);
switch (choix)
{
case 1: P_charge();
plein=1;
break;
case 2: if(plein) NBTvjour();
else printf("veuillez remplir les informations de base!!!");
break;
case 3:if(plein) NTLtype();
else printf("veuillez remplir les informations de base!!!");
break;
case 4:if(plein) Tri();
else printf("veuillez remplir les informations de base!!!");
break;
}
if(choix!=5)
getch ();
}
while(choix!=5);

getch();
return 0;
}

5 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
9 nov. 2009 à 23:54
quel est le problème au juste `? Qu'est ce que tu souhaites faire?

Pourquoi tu ne changes pas le tableau M ? (à part la case [2][10], d'ailleurs je ne comprends pas du tout ce que tu fais, tu lui donnes la valeur d'un tableau que tu as déclaré mais tu ne l'as même pas initialisé?


PS : utilise les balises < code > ! (bouton à droite de gras italique souligné)
0
dinowe Messages postés 8 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009
10 nov. 2009 à 00:00
la question c est decrire une faoction qui permet le tri decroissant du nobre de voitur loué par jour par exemle faire le tri mercredi
pour mercredi on
mercedes 12
renault 13
citroen 11
fiat 12
seat 14
"opel 15
toyota 14
chevrolet 8
najib 48
adnane 41
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
10 nov. 2009 à 01:08
ok, alors tu n'as pas compris comment fonctionnent les tableaux en C.

en fait dans cette ligne : M[2][10]=Tri[10];

dis-moi si je me trompe, mais je crois que tu veux associer le tableau M au tableau tri, et tu crois ensuite qu'en triant le tableau Tri, alors le tableau M va se trier tout seul.

Alors ni l'un ni l'autre ne sont corrects.

Premièrement, pour copier un tableau tu ne peux pas faire "=" simplement en C. Voir ce lien pour faire des copies de tableau : https://c.developpez.com/faq/?page=Les-tableaux#TABLEAUX_tableau_copie .

Ensuite, tu n'as pas besoin d'un tableau auxilliaire "Tri".

toi, tu veux juste trier le tableau M. Tu tries selon le contenu des valeurs nombres pour le mercredi, c-à-d selon les valeurs de M[2][0], M[2][1], M[2][2], ... , M[2][9] je crois.

Donc tu dois trier le tableau M[2][i] (et pas Tri[i]).

Ensuite le problème, c'est que lorsque tu modifies l'ordre des ventes, il faut aussi se rappeler quelles étaient les voitures de chaque type. Il faudrait faire un deuxième tableau en parallèle pour les types de voitures (tu copies les types de voitures dedans), et à chaque fois que tu échanges deux valeurs dans le tableau M[2], tu échanges les valeurs de même indice dans la copie des types de voitures.
0
dinowe Messages postés 8 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009
10 nov. 2009 à 01:34
si jai bien compri se que tu ve dire la fonction de tri estt:
void Tri()
{


char caracter[20];
int i,j,d,;

for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
{
if(M[2][i]<M[2][j])
{
d=M[2][i];
M[2][i]=M[2][i+1];
M[2][i+1]=d;
strcpy(caracter,Tvoit[i]);
strcpy(Tvoit[i],Tvoit[j]);
strcpy(Tvoit[j],caracter);
}
}
for(i=0;i<10;i++)
{
printf("pour mercredi afficher le tableau trie ",M[2][i]);
scanf("%d",&M[2][i]);
}
}
le tabelau du tri ne safiche po
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dinowe Messages postés 8 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009
11 nov. 2009 à 20:17
aider moi plllllllllzzzzzzzzzzzz
0