begin process at 2012 05 30 19:02:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

tri tableau en ligne


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

tri tableau en ligne

mercredi 8 décembre 2004 à 19:54:17 | tri tableau en ligne

TWITTI

bonjour , je suis etudiant en mécanique et la programmtion c est embetant pour moi.
J ai un probleme sur mon programme main().
Je n arrive pas a faire au fur et à mesure pouvez vous m aider s il vous plait merci d'avance

Voila l'enonce

On désire construire un tableau d’au plus MAX entiers triés à partir d’un dialogue avec l’utilisateur.
La particularité de ce tri est qu’il va se faire au fur et à mesure de la saisie des valeurs.

Exemple : l’utilisateur rentre 24, le tableau vide devient : 24 puis l’utilisateur rentre 20, le tableau devient : 20 24 puis l’utilisateur rentre 22, le tableau devient : 20 22 24 etc… 1)

Ecrire la fonction recherchePosition() qui retourne la position que doit prendre l’entier dans le tableau (le tableau est trié mais partiellement rempli). Exemple : pour le tableau : 20 22 24 et l’entier 21, la fonction recherchePosition retourne la valeur 1 2)

Ecrire la fonction insereEntier() qui insère un entier dans le tableau à la position spécifiée. Exemple: insérer l’entier 21 à la position 1 dans le tableau : 20 22 24 modifie le tableau de la façon suivante : 20 21 22 24 3)


Ecrire la fonction principale main() qui invite l’utilisateur à saisir les nombres entiers, construit et affiche le tableau trié au fur et à mesure de la lecture des nombres. On veillera a ne pas dépasser la capacité maximale du tableau.

Voila mon programme

#define MAX 10
#include <stdio.h>



int recherchePosition(int tab[],int n ) /* n est le nombre de valeurs entrées dans le tab */

{
int i=0;
while (n<=tab[i] && i<MAX)
i++;


printf("%d", i);
return i;
}








void afficherTableau(int tab[]) /* y est le nombre de valeurs entrées dans le tab u*/

{
int i=0;
for (i = 0; i<MAX; i++) {
printf("tab[%d]=%d\n",i,tab[i]);
}
}









void insereEntier ( int tab[],int n, int p) // p position (i de rech) , n nombre qu'on veut insérer
{
int pos ;
pos=recherchePosition ( tab, n) ;
for(p=pos;p<MAX;p++)
tab[p]=tab[p-1];
tab[pos]=n;
}












void main ()
{



int tab[MAX];/*tableau*/
int n; /*valeur du tableau*/
int p;/*incrementation*/
int i ;/*adresse du tableau*/
char r;
int pos;
int recherchePosition(int tab[],int n );




for(i=0;i<MAX;i++) /*on initialise le tableau*/
tab[i]=0;
afficherTableau(tab);


do {
printf(" entrez une valeur:");
scanf("%d",&n);
pos=recherchePosition (tab, n);

insereEntier (tab, n,pos);
for (p=0;p<n;p++){
printf ("%d\n",tab[p]);}
printf("voulez vous continuer o ou n");
scanf("%c",&r);

}

while (r=='o');
}










mercredi 8 décembre 2004 à 21:19:40 | Re : tri tableau en ligne

coucou747

Administrateur CodeS-SourceS
Oulala...

Bon moi je te donnes un QSORT
for (i=0;i<nombre-1;i++){
for j=i+1;j<nombre;j++){
if (tab[i]>tab[j]){
a=tab[i];
tab[i]=tab[j];
tab[j]=a;
}
}
}



In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy
C'est vrai que dans ton cas garder un tableau trié c'est plus efficace, masi je suposes que tu ne voudras pas toujours

[ Lien ]
jeudi 9 décembre 2004 à 09:06:50 | Re : tri tableau en ligne

ymca2003

pour rechercher la position, il te faut :
- le nombre à placer (val).
- le tableau (tab)
- le nombre de valeurs valides dedans (n)


int recherchePosition(int val, int tab[],int n )
{
int i=0;
while (val<=tab[i] && i<n)
i++;
printf("%d", i);
return i;
}



Pour insérer une valeur, il te faut les même params

void insereEntier ( int val, int tab[],int n)
{
// placement du nombre
int pos ;
pos=recherchePosition(val, tab, n) ;
tab[pos] = val;

// décalage du tableau (à partir de la fin)
for(int i = n-1; i >= pos; i--)
tab[i+1] = tab[i];

// placement valeur
tab[pos] = val;
}
jeudi 9 décembre 2004 à 09:07:51 | Re : tri tableau en ligne

ymca2003

Réponse acceptée !
Erreur, il faut placer le nombre APREs le dacalage


void insereEntier ( int val, int tab[],int n)
{
// placement du nombre
int pos ;
pos=recherchePosition(val, tab, n) ;

// décalage du tableau (à partir de la fin)
for(int i = n-1; i >= pos; i--)
tab[i+1] = tab[i];

// placement valeur
tab[pos] = val;
}

jeudi 9 décembre 2004 à 13:40:25 | Re : tri tableau en ligne

TWITTI

merci pour c reponse il y avait une petit erreur dans recherce de position si ca marche
val>=tab[i] pour avoir le tableau dans l odre croissant
encore merci à vous deux


Cette discussion est classée dans : int, tableau, tab, max, pos


Répondre à ce message

Sujets en rapport avec ce message

Pb à l'exécution [ par tomalille ] Bonjour,J'ai un petit pb à l'execution de ce prog. Il compile et les liens sont fait sans erreur ni warning. Par contre lorsque j'appelle le sous-prog tableau [ par imanedaoudi ] Salut,Je veux récuperer le tableaux triée sans faire return, avec ce programme je recupere le tableau non trier ,comment faire pour recuperer le tab t Help! Pb de spécif en C [ par tomalille ] Bonjour, je suis en train d'écrire un programme et je voudrai faire une fonction qui renvoit un tableau d'entier.Je n'arrive pas à faire la spécif.Vou problème avec des listes > 30 éléments [ par tomalille ] Bonjour,je finalise un programme qui fonctionne parfaitement sauf que je ne peux pas travailler avec une liste de plus de 30 éléments pour le tri par Un tableau en variable globale [ par nisaloncaje ] Rebonjour a tous,Je désirerais maintenant que mon tableau qui a pour dimension tab soit accessible à une fonction appelé dans main() :j'ai la syntaxe Problemes ac les tableau [ par alussk ] ce code doit renvoyer la niemes plus grande valeur d'un tableau d'entier. il ne marche pas donc si vous comprenez pourquoi éclairez moi svp #include Allocation dynamique dans une fonction [ par Veovis ] Salut,Toujours dans mon projet de TP, j'ai un petit soucis avec l'allocation dynamique dans une fonction. Ce que je voudrais faire c'est quand le tabl Fonction qui retourne un tableau [ par Kurul1 ] Bonjour à tous   J'ai une classe contenant un tableau a deux dimensions comme variable private  Ce que je voudrais c'est une fonction ayant pour param exclusion d'un Intervalle dans un tableau ... [ par pirana ] Bonjour à tous , j'aimerais sauté un intervale dans un textevoici mon code je pense que ca sera plus explicite :)data[]={01234567ABCDEFLI01234567ABCDE Tableau en C [ par Mickylord ] Bonsoir a tous !Voici ma question :J'ai une fonction principale, main(), et une autre fonction tab(). Je voudrais déclarer un tableau dans la fonction


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,137 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales