Problème de progra

Résolu/Fermé
tank19 - 27 nov. 2008 à 14:51
Tunisiano87 Messages postés 15 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 13 avril 2010 - 27 nov. 2008 à 17:46
Bonjour, je débute dans la progra, je dois faire un programme le soucis celui que j'ai fais ne me donne pas ce que j'aimerais et je n'arrive pas à trouver comment le corriger.
S'il vous est possible de m'aider, j'accepte l'aide avec grand plaisir.

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

1) Ecrire la fonction recherchePosition() qui retourne la position que doit prendre l'entier dans le tableau(le tableau est trié mais partiellemnt rempli).

2) Ecrire la fonction insereEntier() qui insère un entier dans le tableau à la position spécifiée.

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 à ne pas dépasser la capacité maximale du tableau. "

Ceci est l'énoncé.

Voici ce que j'ai fais.
#include <stdio.h>
#define MAX 100
int recherchePosition (int t[MAX], int n, int nb)
{
int i=0;
int p;
while (i<(nb-1))
{
if (n<t[i])
{
p = i;
break;
}
i++;
}
if (n>=t[i])
p=nb-1;
return p;
}

void insereEntier (int n, int t[MAX], int nb)
{
int i;
i = nb;
while (i>(recherchePosition(t, n, nb)))
{
t[i] = t[i+1];
i-=2;
}
t[i] = n;
}

void main()
{
int t[MAX];
int i, n, p, nb=1;
printf("\n Entrez un nombre entier");
scanf("%d", &t[0]);
for (i=1;i<MAX;i++)
{
printf("\n Entrez un nombre entier");
scanf("%d", &t[i]);
nb++;
n=t[i];
p = recherchePosition(t, n, nb);
printf("position=%d", p);
insereEntier(n, t, nb);
for(i=0;i<nb;i++)
printf("%d", t[i]);
}
system("pause");
}

Merci d'avance.
A voir également:

6 réponses

ljm972 Messages postés 254 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 6 décembre 2021 29
27 nov. 2008 à 15:00
plusieur erreurs :

void main => int main(){ }

tu as utilisé system() il faut inclure stdlib.h, pour commencer
0
que mets tu dans int main(){} ???
0
ljm972 Messages postés 254 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 6 décembre 2021 29
27 nov. 2008 à 15:19
int main(){
int t[MAX];
int i, n, p, nb=1;
printf("\n Entrez un nombre entier");
scanf("%d", &t[0]);
for (i=1;i<MAX;i++)
{
printf("\n Entrez un nombre entier");
scanf("%d", &t[i]);
nb++;
n=t[i];
p = recherchePosition(t, n, nb);
printf("position=%d", p);
insereEntier(n, t, nb);
for(i=0;i<nb;i++) printf("%d", t[i]);
}
system("pause");
}
0
Ok merci

Mais cela ne change en rien les résultats
0
ljm972 Messages postés 254 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 6 décembre 2021 29
27 nov. 2008 à 15:22
dis moi quels sont les erreurs ?
0
je pense que l'erreur vient de la fonction recherchePosition() car quand je l'exécute j'entre un premier nombre tout va bien, je rentre un deuxième nombre et la rien ne va plus car je devrais avoir la position = 0 ou 1 hors j'ai une position à 3 chiffres et si je rentre encore un nombre c'est la cata
0
ljm972 Messages postés 254 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 6 décembre 2021 29
27 nov. 2008 à 15:33
je me deconnecte,
remplace scanf("%d", &t[i]); par scanf("%d", t[i]);
0
c'est pire
0

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

Posez votre question
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
27 nov. 2008 à 15:53
en fait ce sont de petites erreur d'incrémentation
essaye ça
#include <stdio.h>
#define MAX 5
int recherchePosition (int t[MAX], int n, int nb)
{
int i=0;
int p;
while (i<nb)
{
if (n<t[i])
{
p = i;
return p;
break;
}
i++;
}
p=nb;
return p;
}

void insereEntier (int n, int t[MAX], int p)
{
int i;
i = MAX-1;
while (i>p)
{
t[i] = t[i-1];
i--;
}
t[i] = n;
}

void main()
{
int t[MAX];
int i,j, n, p, nb=0;

printf("\n Entrez un nombre entier");
scanf("%d", &t[0]);
for (i=1;i<MAX;i++)
{
printf("\n Entrez un nombre entier");
scanf("%d", &n);
nb=i;
p = recherchePosition(t, n, nb);
printf("position=%d\n", p);
insereEntier(n, t, p);
for(j=0;j<nb+1;j++)
printf("%d", t[j]);
}
system("pause");
}

j'ai mis le max a 5 parce que remplire un tableau de 100 entier c'est chaud ;)
0
Trop bien je te remercie, pourquoi a tu mis MAX 5 ?
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436 > tank19
27 nov. 2008 à 16:08
comme je l'ai dit pour pas avoir a rentré 100 entier ;)
mais bon tu peux choisir le max que tu veux...
0
tank19 > mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010
27 nov. 2008 à 16:11
Franchement mype un grand merci, tu viens de me faire gagner un temps précieu
0
Tunisiano87 Messages postés 15 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 13 avril 2010
27 nov. 2008 à 17:46

desole j'ai posté au mauvais endroit
0