Programmation C sur les Vecteurs

Dedel_209 Messages postés 37 Statut Membre -  
moi-) Messages postés 3 Statut Membre -
Bonjour,

Voilà j'ai l'énoncé d'un programme en C que je dois réaliser pour un cour...

L'énoncé est le suivant :

Ecrire un programme en langage C qui permet de trier par ordre croissant un vecteur de nombres entiers, la taille de ce vecteur est choisie par l’utilisateur. Les nombres seront soit saisis par l’utilisateur, soit choisis aléatoirement et compris entre 0 et 20.

Les différentes fonctionnalités du programme doivent répondre aux exigences suivantes :

• La saisie se fera par l’appel à une fonction SAISIE_VEC, la même fonction sera utilisée pour l’entrée des nombres manuellement ou aléatoirement

• Le tri sera exécuté par l’appel à la fonction HEAPSORT dont le principe a été vu au laboratoire

• La fonction AFFICHE_VEC sera appelée avant et après l’exécution du tri.


J'ai essayé de mon côté mais il me met énormément d'erreur donc j'aurais besoin de votre aide pour les corriger.
D'avance Merci et voici mon code :

void main()
{
int pere(int i)
{
return (i-1)/2;
}

int droit(int i)
{
return 2*i+2;
}

int gauche(int i)
{
return 2*i+1;
}

bool existeFilsGauche(int n, int i)
{
return gauche(i)<n;
}

bool existeFilsDroit(int n, int i)
{
return droit(i)<n;
}

void entasser (int t[], int n, int i)
{
int max;
int fin=0;

while(existeFilsGauche(n,i) && !fin)
{
max = gauche(i);
if(existeFilsDroit(n, i))
if(t[max]<t[droit(i)])
max = droit(i);

if(t[max] < t[i])
fin=1;
else
{
echange(t,i,max);
i=max;
}
}
}

void construireTas (int t[], int n)
{
for(int i=n/2-1;i>=0;i--)
entasser(t,n,i);
}

void heapSort(int t[], int n);

{
construireTas(t,n);
for(int i=n-1 ; i>0 ; i--);
{
echange(t,0,i);
entasser(t,i,0);
}
}

void heapSort(int t[], int n)
{
construireTas(t,n);
for(int i=n-1 ; i>0 ; i--)
{
echange(t,0,i);
entasser(t,i,0);
}
}

3 réponses

Dedel_209 Messages postés 37 Statut Membre 3
 
Re Bonjour,

Voilà je tiens à rectifier mon code précédent par le suivant :


#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>

void main()
{
int v1[20],v2[20],nbrE,nbrE2,l,i,temp,j;

do
{
printf("Entrer le nombre d'element pour le premier vecteur:" );
scanf("%d",&nbrE);

} while(nbrE <=20 && nbrE < 0);

i=0;
while(i<nbrE)
{
l=(rand()%21-10);
v1[i]=l;
i++;
}
i=0;
while(i<nbrE)
{
printf("%-5d", v1[i]);
i++;
}
i=0;
nbrE=0;

}
0
Dedel_209 Messages postés 37 Statut Membre 3
 
Je rectifie encore LOL

Voilà mon code source :

#include <stdio.h>
void main(void)
{

int v[20]; /* tableau donné */
int N; /* dimension */
int I; /* rang à partir duquel A est trié */
int J; /* indice courant */
int AIDE; /* permutation */
int FIN; /* dernière permutation. */

/* Entrée du tableau */
printf("Dimension du tableau : ");
scanf("%d", &N );
for (J=0; J<N; J++)
{
printf("Element %d : ", J+1);
scanf("%d", &v[J]);
}
/* Affichage du tableau */
printf("Tableau donne :\n");
for (J=0; J<N; J++)
printf("%d ", v[J]);
printf("\n");

/* Tri du tableau */
for (I=N-1 ; I>0 ; I=FIN)
{
FIN=0;
for (J=0; J<I; J++)
if (v[J]>v[J+1])
{
FIN=J;
AIDE=v[J];
v[J]=v[J+1];
v[J+1]=AIDE;
}
}

/* résultat */
printf("Tableau trie :\n");
for (J=0; J<N; J++)
printf("%d ", v[J]);
printf("\n");
}

Maintenant je ne sais pas comment faire pour que l'on puisse également choisir les chiffres présents dans le vecteur aléatoirement et pas par saisie manuelle
0
Dedel_209 Messages postés 37 Statut Membre 3
 
Personne?
0
moi-) Messages postés 3 Statut Membre
 
Salut,
Bon, j'étais en recherche pour mon sujet et soudainement j'ai remarqué votre problème:
En fait j'arrive pas à trouver dans mes documents la fonction qui permet de faire un choix aléatoire d'une valeur ça a l'air d'être rand(n) (choisir une valeur aléatoire entre un et n).. Enfin je te conseille d'avoir accès à siteduzero.com, crée un compte et "bienvenue au club"
Pose tes questions dorénavant là bas et faites attention: n'écris pas pas en abréviation
Allez bon travail
0