Files
prog-c/tp2/sujet/genprint.h
2024-10-06 15:32:20 +02:00

58 lines
1.8 KiB
C

#ifndef GENPRINT_H_
#define GENPRINT_H_
#include "compare.h"
typedef enum type_t { // pour les switch()
INT,
INT2,
CHAR,
DOUBLE,
STRING,
STRING2,
POINTX,
POINTY,
} type_t;
#define NUMTYPES (POINTY + 1)
#define MAX_TYPE_NAME_LEN 8
// Initialisation aléatoire de l'élément T[i].
//
// Les entiers sont aléatoires dans [0,100[.
// Les caractères sont des lettres majuscules aléatoires.
// Les doubles sont aléatoires dans [-1,+1].
// Les chaînes sont d'au plus MAXSTR minuscules aléatoires.
// Les points sont aléatoires dans [0,10[ x [0,10[.
void init(type_t t, void *T, int i);
// Affiche T[i] avec le bon format suivant le type t.
//
// Les entiers sont affichés sur 2 chiffres, sans signe si positifs.
// Les doubles le sont avec leur signe et 2 chiffres après la virgule.
// Les points le sont comme (5.2,3.1) avec 1 chiffre après la virgule.
void print(type_t t, const void *T, int i);
// Affiche le contenu du tableau T d'éléments de type t de nb éléments.
void print_array(const void *T, type_t t, int nb);
// Lit un tableau d'éléments depuis un flux.
// - Le flux f doit être ouvert en lecture.
//
// En cas de succès :
// - Le type des éléments est indiqué dans t.
// - Le nombre d'éléments est indiqué dans nb.
// - La fonction renvoie le tableau alloué dynamiquement.
//
// En cas d'erreur, NULL est retourné et le tableau n'est pas alloué.
//
// Le format du fichier est le suivant :
// - une ligne avec le nombre d'éléments du tableau.
// - une ligne avec le type des éléments du tableau
// (int, int2, char, double, string, string2, pointx ou pointy).
// - les éléments du tableau, séparés par des espaces.
// Des fichiers d'exemple sont fournis (array*.txt).
void *read_array(FILE *f, type_t *t, int *nb);
#endif // GENPRINT_H_