wiki:InsiaProgCTp2

Sommaire

TP2 - Manipulation des types composés et tableaux

Manipulation des structs et passage par pointeur

  • Définissez un "struct" permettant de stocker les informations suivantes pour une ville donnée: nom de la ville, nombre d'habitants, temperature moyenne de chaque mois. Faites-en un type personnalisé.
  • Ecrivez une fonction qui initialise les temperatures moyennes de telle sorte que en janvier, la moyenne soit 0, en février 5, en mars 10, etc.
  • Ecrivez une fonction qui affiche les informations de votre "struct"

Manipulation d'un union, à partir de cette définition

typedef union {
  int   entier;
  float reel;
} nombre_t;

typedef enum {
  un_entier,
  un_reel
} represente_t;

typedef struct {
  represente_t represente;
  nombre_t     vaut;
} generique_t;
  • Ecrire une fonction de test de parité acceptant un entier ou une chaine (void affiche_parite(generique_t* g)...)
  • Vérifier que l'usage des membres est exclusif (c.a.d qu'on ne peut stocker ou transmettre qu'un réel ou un entier simultanément)

Matrices, entrée, boucles

A partir du type de matrice suivant: typedef float matrice3[3][3];

  • Ecrire une fonction permettant de remplir tous les élémens de la matrice avec la même valeur
  • Ecrire une fonction pour afficher une matrice de manière lisible
  • Ecrire une fonction pour lire une matrice à partir de stdin sous le format (utiliser fscanf):
    4.5 3   6.83
    8   0   23.4
    9   3.2 6
    
  • Ecrire une fonction qui calcule le produit de 2 matrices, la tester en lui fournissant deux matrices via stdin

Chaînes de caractères

A l'aide de switch et atof, programmez une calculatrice qui accepte ces opérations en paramètres:

calcul 5.4 + 6
calcul 99 - 5.0
calcul 3 * 6.9
calcul 2.1 / 7

Ecrivez une variante qui accepte également une variante "doublée" pour chaque opérateur (ex: ++) et dans ce cas effectue l'opération deux fois, la deuxième en rajoutant 1 à chaque membre de l'opération. Exemple:

calcul 3 ** 5.5
16.5
26
Last modified 14 years ago Last modified on Oct 30, 2006, 11:00:57 AM