Flux rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Tri de tableaux

DAD, le mercredi 2 avril 2008 à 15:00:23
Bonjour, on nous a de mander d ecrire un programme pour trier un tableau par ordre croissant on utilison une methde basse sur les indices. voila mon programme mais il m affiche une erreue de segmentetion.
SOS
VOILA MON PROGRAMME:#include<stdio.h>

/************************************************code complet*****************************************************************************/

//decalration du type struct
struct meteo
{
//On identifie chaque "type meteo" par son temps min, son temps max, son hygrometrie et la hauteur de sa pluie.

float tempmin;
float tempmax;
int hygro;
float pluis;
};




/*la saisie du tableau releve meteo*/


void saisie (int n ,struct meteo t[])
{
//n taille de t param non modifie .
//ne retourne rien .
//t est un tableau constitué d element de type structe.

printf("donnez la taille de votre tableau\n");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%f",&t[i].tempmin);
scanf("%f",&t[i].tempmax);
scanf("%d",&t[i].hygro);
scanf("%f",&t[i].pluis);
}
}




/*l affichge du tableau releve meteo*/


void affiche(int n ,struct meteo t[])
{
//ne retourne rien.


printf("la taille du tableau:%d\n",n);
for(int i=0;i<n;i++)
{
printf("%f\n",t[i].tempmin);
printf("%f\n",t[i].tempmax);
printf("%d\n",t[i].hygro);
printf("%f\n",t[i].pluis);
}
}

/*******************************************************************main************************************************************************************/

int main()
{
int n; /*nombre de valeurs à trier*/
float tin[n]; /*le tableau retourne*/
int entiere ; /*la valeur entiiere à retournee*/
struct meteo t[n]; /*le tableau saisie par l utilisateur*/

saisie(n,t);
affiche(n,t);

int entree = 0;
int i,
j,
b;
int entier = 0;
int a;
int suivant[n];
suivant[0] = -1;

for(i=1; i<n ; i++)
{
if(t[i].tempmin < t[entier].tempmin)
{
tin[i] =entier;
entier = i;
}
else
{

j = entier;
while ( j != -1 && t[j].tempmin > t[i].tempmin )


{


int i;
int j;
int param;


if(tin[j]==i)
{ param = j;
j = tin[j];
}



if(j=-1)
{


tin[i] = -1;
tin[param] = i;
}
else
{

tin[param] = i;
tin[i] = j;
}
}
int i=0;

while(i=!-1)

{ printf("%f\n",&t[i].tempmin);
j=tin[j];

}
}
}
return 0;
}
Configuration: Linux
Firefox 2.0.0.2
Répondre à DAD  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Mahmah, le mercredi 2 avril 2008 à 15:38:02
Bonjour,

Sans appel.

Compiling...
main.cpp
main.cpp(65) : error C2057: expected constant expression
main.cpp(65) : error C2466: cannot allocate an array of constant size 0
main.cpp(65) : error C2133: 'tin' : unknown size
main.cpp(67) : error C2057: expected constant expression
main.cpp(67) : error C2466: cannot allocate an array of constant size 0
main.cpp(67) : error C2133: 't' : unknown size
main.cpp(78) : error C2057: expected constant expression
main.cpp(78) : error C2466: cannot allocate an array of constant size 0
main.cpp(78) : error C2133: 'suivant' : unknown size
main.cpp(85) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
main.cpp(105) : warning C4244: '=' : conversion from 'float' to 'int', possible loss of data
main.cpp(115) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
main.cpp(120) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
main.cpp(121) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
main.cpp(129) : warning C4244: '=' : conversion from 'float' to 'int', possible loss of data
---------------------- Done ----------------------

Build: 0 succeeded, 1 failed, 0 skipped

Les trois premières qui sont au début du main sont déjà suffisantes pour éviter un joli seg fault.

Essaie d'activer un peu plus de retours de la part de ton compilateur, ça peut aider...

M.
Répondre à Mahmah

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
DAD, le mercredi 2 avril 2008 à 16:31:59
slt
j ai pas tres bien compri ou etait l erreure .
Répondre à DAD

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Mahmah, le mercredi 2 avril 2008 à 16:50:23
int main()
{
   int n; /*nombre de valeurs à trier*/
   float tin[n]; /*le tableau retourne*/ 


Le compilateur, le mien en tout cas, veut savoir la taille du tableau qu'il doit mettre dans sa pile. Tous les compilos ne sont pas forcément aussi tatasses mais ici l'erreur semble là.

int main()
{
   const int n = 22; /*nombre de valeurs à trier*/
   float tin[n]; /*le tableau retourne*/ 

lui irait par exemple.


int main()
{
   int n; /*nombre de valeurs à trier*/
   float *tin = NULL; /*le tableau retourne*/ 

   ...
   n = 22;
   tin = (float*) malloc( n * sizeof( float ) );
   ...

   free ( tin );

irait aussi.

M.
Répondre à Mahmah

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
=[Cvrd]=Tassin, le mercredi 2 avril 2008 à 15:49:04
Correction de tes 2 méthodes :
struct meteo * saisie (int *n)
{
     int i, nb;
     struct meteo *t;
     
     printf("donnez la taille de votre tableau\n");
     scanf("%d",&nb);
     
     t = (struct meteo *)calloc(nb, sizeof(struct meteo));
     
     for(i=0;i<nb;i++)
     {
          scanf("%f",&t[i].tempmin);
          scanf("%f",&t[i].tempmax);
          scanf("%d",&t[i].hygro);
          scanf("%f",&t[i].pluis);
     }
     *n = nb;
     return t;
}

void affiche(int n ,struct meteo *t)
{
     int i;

     printf("la taille du tableau:%d\n",n);
     for(i=0;i<n;i++)
     {
          printf("%f\n",t[i].tempmin);
          printf("%f\n",t[i].tempmax);
          printf("%d\n",t[i].hygro);
          printf("%f\n",t[i].pluis);
     }
}


Le début de ton main :
int main()
{
     int n; /*nombre de valeurs à trier*/
     float *tin; /*le tableau retourne*/
     int entiere ; /*la valeur entiiere à retournee*/
     struct meteo *tab; /*le tableau saisie par l utilisateur*/

     tab = saisie(&n);
     affiche(n,tab);
}
-- Alex pour vous servir --

-- N'oubliez pas de mettre vos sujets en "Résolu" lorsque vous avez la réponse ;-) --
Répondre à =[Cvrd]=Tassin
[C] Tri tableau (Résolu)Bonjour, Je voudrai savoir ce qui ne va pas dans mon code, j'essai de faire un tri par valeur croissante mais ca ne marche pas #include #include #include //++++++++++++++++++++++++++++++++++++++++++++++++++++++++... www.commentcamarche.net/forum/affich-4761725-c-tri-tableau
Trier un tableau sans utiliser la fonction sortTrier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle... www.commentcamarche.net/faq/sujet-7685-trier-un-tableau-sans-utiliser-la-fonction-sort
Methodes de tri des tableaux algo (Résolu)bonjour j'aimerai recevoir des cours sur les methodes de trie des tableaux en algorithme en effet je suis en 1ere d'info je ne connais aucun language je fais pour le moment qu'une intiation en algoritmique donc tachez de ne guere... www.commentcamarche.net/forum/affich-2210823-methodes-de-tri-des-tableaux-algo
Pascal - Tri par insertion - Récursivité-Voici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri par insertion : Procedure Tri_Ins (Var t: TAB; n: integer); Var aux,i : integer; begin If n > 1 Then begin ... www.commentcamarche.net/faq/sujet-8806-pascal-tri-par-insertion-recursivite
Tri à bulles -récursivité-Voici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri à bulles : Procedure Tri_bulles (var t : TAB; n : integer); Var i, aux : integer; Function Trier (t : TAB; n : integer) : Boolean; ... www.commentcamarche.net/faq/sujet-8855-tri-a-bulles-recursivite
Tri par fusion - récursivité-Voici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri par fusion : Procedure Tri_Fusion (Var t : TAB; g, d : integer); Var m, i, j, k : integer; s : TAB; Begin If d > g Then ... www.commentcamarche.net/faq/sujet-8854-tri-par-fusion-recursivite
[Excel] Tri dans un tableau (Résolu)Bonjour, j'aimerais faire un tri dans un tableau excel, petit exemple: dans la colonne A, j'ai: toto elo domi titi Je voudrais que dans ma colonne B, il me mette tout les mots, un à la suite de l'autre, qui commence par t Dans ce cas:... www.commentcamarche.net/forum/affich-2362523-excel-tri-dans-un-tableau
Algo tableau (Résolu)Bonjour, voilà trois petit exercices sur les tableaus en algo. Un peu d'aide me serai utile pour confirmer mes doutes Merci Exo n°1 : Ecrire un algo qui permet de stocker dans un tableau des entiers – et des entiers positif. L algo tri les... www.commentcamarche.net/forum/affich-3809762-algo-tableau
[JAVA] fonction tri d'un tableau (Résolu)bonsoir, j'ai un souci dans mon code suivant : voici ma fonction : public void trierTableau(int tbl[]){ int i,j,taille,tmp; taille=tbl.length; while(taille>1) { for(i=0; itbl[i+1]){ tmp=tbl[i];... www.commentcamarche.net/forum/affich-2502779-java-fonction-tri-d-un-tableau
Télécharger TrillianTrillian est un des clients de messagerie instantanée les plus aboutis. Il est compatible avec AIM®, MSN®, ICQ®, Yahoo!®, et le réseau IRC www.commentcamarche.net/telecharger/telecharger-101-trillian
Télécharger AVI TrimmerQuand vous procéder à des montages vidéos à partir de fichiers AVI, vous voudriez qu'il n'y ait aucune perte en qualité. SolveigMM AVI Trimmer est un éditeur vidéo pour un résultat rapide et sans perte en qualité. C'est une application de petite... www.commentcamarche.net/telecharger/telecharger-34056451-avi-trimmer
SQL - Tri et regroupement Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou décroissante. Le classement se... www.commentcamarche.net/sql/sqltri.php3
HTML - Les tableaux Il est souvent utile de présenter des informations mieux structurées qu'avec des listes. Les tableaux permettent de les afficher en lignes et en colonnes. Les tableaux sont définis comme étant des suites de lignes. Un tableau doit respecter les... www.commentcamarche.net/html/htmltable.php3
SQL - Modification de table Il est possible de supprimer une table grâce à la clause DROP, il existe aussi des commandes moins extrêmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible d'ajouter des commentaires à une... www.commentcamarche.net/sql/sqldrop.php3
Toutes les réponses pour « Tri de tableaux »