Chaînes de caractères Enregistrement
Exemple 1: Écrire un programme de conjugaison des verbes en "er". Le programme lit un verbe régulier en "er" au clavier et en affiche la conjugaison au présent de l'indicatif. Vous devez implémenter au minimum 3 fonctions : Une fonction qui vérifie qu il s agit bien d un verbe en "er" Une fonction qui remplit un tableau avec les différentes conjugaisons Une fonction qui affiche le contenu du tableau
Structure de données: #define JE 0 #define TU 1 #define IL 2 #define NOUS 3 #define VOUS 4 #define ILS 5 #define MAXCAR 100 #define MAXLIGNE 6 0 Programme 1 Programmes 2 Programme 3 Programmons 4 Programmez 5 Programment // tableau de chaine de caractere typedef char t_mot[maxcar]; typedef t_mot t_tab_conjugaison[maxligne];
#define TRUE 1 #define FALSE 0 // fonction qui verifie si un mot se termine bien par er // renvoie TRUE si c est le cas, FALSE sinon. int verbe_en_er(char * verbe){ int valide=false; // verifier les 2 derniers caracteres if ((verbe[strlen(verbe)-1]=='r')&&(verbe[strlen(verbe)-2]=='e')) valide=true; } return valide; P R O G R A M M E R \0 0 1 2 3 4 5 6 7 8 9 10
void conjuguer(t_tab_conjugaison tablo, char * verbe){ char racine[maxcar]; 0 Programm int personne=0; 1 Programm //determiner la racine 2 Programm strcpy(racine, verbe); 3 Programm racine[strlen(racine)-2]='\0'; // enlever er 4 Programm // copier la racine pour chaque personne for(personne=je;personne<=ils;personne++){ 5 Programm strcpy(tablo[personne],racine); } // ajouter la terminaison 0 Programme strcat(tablo[je],"e"); 1 Programmes strcat(tablo[tu],"es"); strcat(tablo[il],"e"); t(t ") 2 Programme strcat(tablo[nous],"ons"); 3 Programmons strcat(tablo[vous],"ez"); strcat(tablo[ils],"ent"); 4 Programmez } 5 Programment
void afficher_conjugaison(t_tab_conjugaison tablo,int nb_ligne){ int ligne=0; } for(ligne=0;ligne<nb_ligne;ligne++){ g g g printf("%s\n",tablo[ligne]); } Programme Programmes Programme Programmons Programmez Programment
// programme principal int main(void){ char verbe[maxcar]; // sert a memoriser le verbe conjuguer t_tab_conjugaison conjugaison; // tableau de conjugaison // lecture du verbe tant qu'il ne finit pas par er do{ printf("\n entrez un verbe se terminant en er:"); scanf("%s",verbe); " }while(!verbe_en_er(verbe)); // conjuguer conjuguer(conjugaison,verbe); //affichage afficher_conjugaison(conjugaison,maxligne); } return EXIT_SUCCESS;
Exemple 2: Définissez les structures nécessaires pour mettre en mémoire les informations suivantes sur un groupe de 10 personnes : Chaque personne doit être décrite par les informations suivantes : Nom Pré Date de naissance Adresse Numéro de téléphone Chaque adresse doit être décrite par les informations suivantes : Numéro civique Nom de la rue Ville Code-Postal Le numéro de téléphone doit être décrit par les informations suivantes : Indicatif régional à 3 chiffres Numéro à 7 chiffres
pré date de naissance adresse numéro de tél. jour mois année rue ville 0 personne Indicatif rég. 1 personne Téléphone jour 9 personne pré date de naissance adresse numéro de tél. mois année jour mois année Indicatif rég. Téléphone
0 personne 1 personne pré date de naissance adresse 9 personne numéro de tél. jour mois année rue ville Indicatif rég. Téléphone t_ date t_adresse t_numtel typedef struct{ long long } t_numtel; typedef struct{ long long long }t_date; indicatif_regional; telephone; jour; mois; annee; #define MAX_CAR 100 typedef char t_chaine[max_car]; typedef struct{ long ; t_chaine rue; t_chaine ville; } t_adresse;
0 personne 1 personne pré date de naissance adresse 9 personne numéro de tél. t_personne jour mois année rue ville Indicatif rég. Téléphone t_ date t_adresse t_numtel typedef struct{ t_chaine ; t_chaine pre; t_date date_de_naissande; t_adresse adresse; t_ numtel _ de_ tel; } t_personne;
0 personne 1 personne pré date de naissance adresse 9 personne numéro de tél. t_groupe t_personne jour mois année rue ville Indicatif rég. Téléphone t_ date t_adresse t_numtel typedef struct{ t_chaine ; t_chaine pre; t_date date_de_naissande; t_adresse adresse; t_ numtel _ de_ tel; } t_personne; #define MAX_PERS 10 typedef t_personne t_groupe[max_pers];
Définissez les structures nécessaires pour conserver les informations des différentes salle d ordinateur de l ÉTS. Un contient une ou plusieurs (s). Chaque a un numéro de local (ex. : 1222, 1226, etc.). Une, c est un ordinateur et un écran. Évidemment, e chacune des s s possède un numéro qui permet de l identifier. Pour chaque ordinateur, nous voulons la puissance du CPU (en MHz), la quantité de mémoire vive (en Mo), la capacité du disque (en Go) et la (ex. : "Compaq", "Hp", etc.). Il faut aussi pouvoir oir conserver tous les s installés sur la machine. Pour chaque écran il faut : la (ex. : "Samsung", "Sony", etc.), la taille (en pouces) et la résolution (comme.25 ou.27). Pour chaque, il faut : le du (ex. : "Word", "Excel", etc.), la compagnie distributrice (ex. : "Microsoft", "Borland", etc.) et la version (ex. : 1.5, 2.08, etc.). Les chaînes de caractères sont au maximum de 40 caractères. Il y a au maximum 100 s par ordinateur, 25 s par et 10 s.
s nb s ordinateur ecran #define MAX_CAR 41 //40 caractères + \0 #define MAX_LOGICIEL 100 #define MAX_STATION 25 #define MAX_LABO 10 typedef char t_chaine[max_car]; puissance espace disque memoire s nb resolution taille t_ecran typedef struct{ double double t_chaine }t_ecran; resolution; taille; ; typedef struct{ t_chaine ; t_chaine cie; double version; }t_; t_ compagnie version
t_ordinateur s nb s ordinateur ecran //un tableau de s typedef t_ t_tab_[max_logiciel]; puissance espace disque memoire s nb resolution taille t_ecran typedef struct { t_tab_ t_chaine double double double ; puissance; espace_disque; memoire; t_ compagnie version }t_ordinateur; t_tab_ tab_; int nb_;
t_ordinateur s nb s //une typedef struct { t_tab_ char ; t_ordinateur ordi; t_ecran ecran; ordinateur ecran t_ puissance espace disque memoire s nb resolution taille t_ecran t_tab_ t_ compagnie version //un tableau de typedef t_ t_tab_[max_station]; }t_;
t_ordinateur s nb s t_labo //un labo typedef struct { char t_tab_ ; ordinateur ecran t_ puissance espace disque memoire s nb resolution taille t_ecran //un tableau de t_tab_ t_ compagnie version typedef t_ t_tab_[max_station]; int nb_; t_tab_ tab_; }t_labo;
t_tab_labo t_ordinateur s nb s t_labo t_tab_ ordinateur ecran t_ //la définition du tableau contenant les s puissance espace disque memoire s nb resolution taille t_ecran t_tab_ t_ compagnie version typedef t_labo t_tab_labo[max_labo];
t_tab_labo t_ordinateur s nb s t_labo t_tab_ ordinateur ecran t_ puissance espace disque memoire s nb resolution taille t_ecran t_tab_ t_ compagnie version int main (void){ //(rappel: pas de variable, pas d'espace réservé) t_tab_labotab tab_labo = {0}; } int nb_labo = 0;
t_tab_labo t_ordinateur s nb s t_labo Valide ou pas? t_tab_ ordinateur ecran t_ puissance espace disque memoire s nb resolution taille t_ecran t_tab_ t_ compagnie version tab_labo1.tab_1.ordi. = «Nec»; tab_labo[0].tab_[0].ordi.tab_[0]. _ [ ] _ [ ] = «TC»; t_ecran ecran = {1024*768,17,"Nec"}; t_ordinateur ordi = {"Vtech",4,1.4,200,{0}};
t_tab_labo t_ordinateur s nb s t_labo Valide ou pas? t_tab_ ordinateur ecran t_ puissance espace disque memoire s nb resolution taille t_ecran t_tab_ t_ compagnie version t_ ;. = 1;.ecran = ecran;.ordi = ordi; tab_labo[0].tab_[0] = ;
t_tab_labo t_ordinateur s nb s t_labo t_tab_ ordinateur ecran t_ puissance espace disque memoire s nb resolution taille t_ecran //Fonction qui compare deux écrans t_tab_ t_ compagnie version int ecran_pareil(t_ecran ec1, t_ecran ec2){ return ec1.resolution == ec2.resolution && ec1.taille == ec2.taille && strcmp(ec1.,ec2.) == 0; }