208 lines
8.7 KiB
C++
208 lines
8.7 KiB
C++
|
#include <stdio.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <malloc.h>
|
|||
|
#include <unistd.h>
|
|||
|
#include <string.h>
|
|||
|
#include "data.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
/* f_lire_data */
|
|||
|
/* int * f_lire_data(char *fichier, int *n); */
|
|||
|
/* */
|
|||
|
/* Cr<43>er un tableau [t] contenant les entiers lus dans le fichier texte */
|
|||
|
/* dans le fichier texte de nom [fichier] */
|
|||
|
/* */
|
|||
|
/* Entr<74>es : */
|
|||
|
/* - [fichier] : nom du fichier texte contenant les donn<6E>es entieres */
|
|||
|
/* premi<6D>re ligne : nombre [n] d'<27>l<EFBFBD>ments <20> lire */
|
|||
|
/* lignes suivantes : les [n] entiers <20> lire */
|
|||
|
/* */
|
|||
|
/* Modifications : */
|
|||
|
/* - [n] : nombre entier d'<27>l<EFBFBD>ments lus */
|
|||
|
/* */
|
|||
|
/* Sorties : */
|
|||
|
/* - [t] : tableau de type int o<> sont stock<63>s les entiers lus */
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
|
|||
|
int *f_lire_data(char *fichier, int *n)
|
|||
|
{
|
|||
|
int i;
|
|||
|
FILE *f;
|
|||
|
int *tab;
|
|||
|
|
|||
|
/* Ouverture du fichier en lecture */
|
|||
|
f = fopen(fichier, "rt");
|
|||
|
if (f == NULL)
|
|||
|
{
|
|||
|
printf("\n\nLecture <f_lire_data> :\nOuverture du fichier %s impossible\n\n", fichier);
|
|||
|
exit(1);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/* Lecture du nombre d'<27>l<EFBFBD>ments <20> lire */
|
|||
|
fscanf (f, "%d\n", n);
|
|||
|
|
|||
|
|
|||
|
/* Allocation de la m<>moire n<>cessaire */
|
|||
|
tab = (int *) calloc(*n, sizeof(int));
|
|||
|
|
|||
|
/* Lecture des n <20>l<EFBFBD>ments */
|
|||
|
for (i = 0; i < *n; i++)
|
|||
|
fscanf (f, "%d\n", &tab[i]);
|
|||
|
|
|||
|
fclose(f);
|
|||
|
return(tab);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
/* f_ecrire_data */
|
|||
|
/* void f_ecrire_data(char *fichier, int *t, int n) */
|
|||
|
/* */
|
|||
|
/* Ecrire les [n] <20>l<EFBFBD>ments de type entier du tableau [t] dans un fichier de */
|
|||
|
/* type texte de nom [fichier] */
|
|||
|
/* premi<6D>re ligne : nombre [n] d'<27>l<EFBFBD>ments <20> lire */
|
|||
|
/* lignes suivantes : les [n] entiers de [t] */
|
|||
|
/* */
|
|||
|
/* Entr<74>es : */
|
|||
|
/* - [fichier] : nom du fichier */
|
|||
|
/* - [t] : tableau d'entiers */
|
|||
|
/* - [n] : nombre d'entiers du tableau */
|
|||
|
/* */
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
|
|||
|
void f_ecrire_data(char * fichier, int *t, int n)
|
|||
|
{
|
|||
|
FILE *f;
|
|||
|
int i;
|
|||
|
|
|||
|
/* Ouverture du fichier en <20>criture*/
|
|||
|
f = fopen(fichier, "wt");
|
|||
|
if (f == NULL)
|
|||
|
{
|
|||
|
printf("\n\nEcriture <f_ecrire_data> :\nOuverture du fichier %s impossible\n\n", fichier);
|
|||
|
exit(1);
|
|||
|
}
|
|||
|
|
|||
|
fprintf(f, "%d\n", n);
|
|||
|
|
|||
|
for (i = 0; i < n; i++)
|
|||
|
fprintf(f, "%d\n", t[i]);
|
|||
|
|
|||
|
fclose(f);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
/* ecrire_data */
|
|||
|
/* void ecrire_data(int *t, int n) */
|
|||
|
/* */
|
|||
|
/* Ecrire les [n] <20>l<EFBFBD>ments de type entier du tableau [t] sur stdout */
|
|||
|
/* */
|
|||
|
/* Entr<74>es : */
|
|||
|
/* - [t] : tableau d'entiers */
|
|||
|
/* - [n] : nombre d'entiers du tableau */
|
|||
|
/* */
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
|
|||
|
void ecrire_data(int *t, int n)
|
|||
|
{
|
|||
|
int i;
|
|||
|
|
|||
|
printf("\n");
|
|||
|
for (i = 0; i < n; i++)
|
|||
|
printf("%d\n", t[i]);
|
|||
|
printf("\n");
|
|||
|
}
|
|||
|
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
/* data_triee */
|
|||
|
/* int *data_triee(int n) */
|
|||
|
/* */
|
|||
|
/* Cr<43>er un tableau [t] contenant les [n] premiers entiers dans l'ordre */
|
|||
|
/* et sans ex-aequo */
|
|||
|
/* */
|
|||
|
/* */
|
|||
|
/* Entr<74>es : */
|
|||
|
/* - [n] : nombre d'entiers du tableau <20> cr<63>er */
|
|||
|
/* */
|
|||
|
/* Sorties : */
|
|||
|
/* - [t] : tableau d'entiers */
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
|
|||
|
int *data_triee(int n)
|
|||
|
{
|
|||
|
int i;
|
|||
|
int *t;
|
|||
|
|
|||
|
t = (int *) calloc(n, sizeof(int));
|
|||
|
|
|||
|
for (i = 0; i < n; i++)
|
|||
|
t[i] = i;
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
/* data_triee_inverse */
|
|||
|
/* int *data_triee_inverse(int n) */
|
|||
|
/* */
|
|||
|
/* Cr<43>er un tableau [t] contenant les [n] premiers entiers dans l'ordre */
|
|||
|
/* inverse et sans ex-aequo */
|
|||
|
/* */
|
|||
|
/* */
|
|||
|
/* Entr<74>es : */
|
|||
|
/* - [n] : nombre d'entiers du tableau <20> cr<63>er */
|
|||
|
/* */
|
|||
|
/* Sorties : */
|
|||
|
/* - [t] : tableau d'entiers */
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
|
|||
|
int *data_triee_inverse(int n)
|
|||
|
{
|
|||
|
int i;
|
|||
|
int *t;
|
|||
|
t = (int *) calloc(n, sizeof(int));
|
|||
|
|
|||
|
for (i = 0; i < n; i++)
|
|||
|
t[n-1-i] = i;
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
/* random_data */
|
|||
|
/* int *random_data(int n) */
|
|||
|
/* */
|
|||
|
/* Cr<43>er un tableau [t] contenant [n] nombres entiers al<61>atoires */
|
|||
|
/* */
|
|||
|
/* */
|
|||
|
/* Entr<74>es : */
|
|||
|
/* - [n] : nombre d'entiers du tableau <20> cr<63>er */
|
|||
|
/* */
|
|||
|
/* Sorties : */
|
|||
|
/* - [t] : tableau d'entiers */
|
|||
|
/* -------------------------------------------------------------------------- */
|
|||
|
|
|||
|
int *random_data(int n)
|
|||
|
{
|
|||
|
int i;
|
|||
|
int pid;
|
|||
|
int *t;
|
|||
|
|
|||
|
pid = getpid ();
|
|||
|
srand(pid);
|
|||
|
|
|||
|
t = (int *) calloc(n, sizeof(int));
|
|||
|
|
|||
|
for (i = 0; i < n; i++)
|
|||
|
t[i] = 1+(int) ((double) n *rand()/(RAND_MAX+1.0));
|
|||
|
|
|||
|
return t;
|
|||
|
}
|
|||
|
|