Problème de progra

Résolu
tank19 -  
Tunisiano87 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
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.

6 réponses

ljm972 Messages postés 255 Date d'inscription   Statut Membre Dernière intervention   29
 
plusieur erreurs :

void main => int main(){ }

tu as utilisé system() il faut inclure stdlib.h, pour commencer
0
tank19
 
que mets tu dans int main(){} ???
0
ljm972 Messages postés 255 Date d'inscription   Statut Membre Dernière intervention   29
 
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
tank19
 
Ok merci

Mais cela ne change en rien les résultats
0
ljm972 Messages postés 255 Date d'inscription   Statut Membre Dernière intervention   29
 
dis moi quels sont les erreurs ?
0
tank19
 
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 255 Date d'inscription   Statut Membre Dernière intervention   29
 
je me deconnecte,
remplace scanf("%d", &t[i]); par scanf("%d", t[i]);
0
tank19
 
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   Statut Membre Dernière intervention   437
 
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
tank19
 
Trop bien je te remercie, pourquoi a tu mis MAX 5 ?
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437 > tank19
 
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   Statut Membre Dernière intervention  
 
Franchement mype un grand merci, tu viens de me faire gagner un temps précieu
0
Tunisiano87 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 

desole j'ai posté au mauvais endroit
0