Problème de progra
Résolu
tank19
-
Tunisiano87 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
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.
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
plusieur erreurs :
void main => int main(){ }
tu as utilisé system() il faut inclure stdlib.h, pour commencer
void main => int main(){ }
tu as utilisé system() il faut inclure stdlib.h, pour commencer
tank19
que mets tu dans int main(){} ???
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");
}
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");
}
dis moi quels sont les erreurs ?
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
en fait ce sont de petites erreur d'incrémentation
essaye ça
j'ai mis le max a 5 parce que remplire un tableau de 100 entier c'est chaud ;)
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 ;)