Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme...

22
• Chaînes de caractères • Enregistrement TCH010-Informatique

Transcript of Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme...

Page 1: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

• Chaînes de caractères

• Enregistrement

TCH010-Informatique

Page 2: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

• Exemple 1:

Écrire un programme de conjugaison des verbes en "er". Leprogramme lit un verbe régulier en "er" au clavier et en affiche la

j i é t d l'i di tif V d i lé tconjugaison au présent de l'indicatif. Vous devez implémenterau minimum 3 fonctions :

• Une fonction qui vérifie qu’il s’agit bien d’un verbe en "er" • 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 conjugaisonsconjugaisons

• Une fonction qui affiche le contenu du tableau

TCH010-Informatique

Page 3: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

Structure de données:

0 Programme1 Programmes#define JE 0

#define TU 12 Programme3 Programmons

#define TU 1#define IL 2#define NOUS 3#define VOUS 4 4 Programmez

5 Programment

#define VOUS 4#define ILS 5

#define MAXCAR 100 #define MAXCAR 100 #define MAXLIGNE 6

// tableau de chaine de caractere//

typedef char t_mot[MAXCAR];typedef t_mot t_tab_conjugaison[MAXLIGNE];

TCH010-Informatique

yp j g [ ]

Page 4: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

#define TRUE 1#define TRUE 1#define FALSE 0

// fonction qui verifie si un mot se termine bien par erq p// renvoie TRUE si c’est le cas, FALSE sinon.

int verbe_en_er(char * verbe){

int valide=FALSE;

// verifier les 2 derniers caracteresif ((verbe[strlen(verbe)-1]=='r')&&(verbe[strlen(verbe)-2]=='e'))

valide=TRUE;

return valide;return valide;}

P R O G R A M M E R \0

TCH010-Informatique

\

0 1 2 3 4 5 6 7 8 9 10

Page 5: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

void conjuguer(t_tab_conjugaison tablo, char * verbe){h i [MAXCAR] 0 Programmchar racine[MAXCAR];

int personne=0;

//determiner la racine

0 Programm1 Programm2 Programm//determiner la racine

strcpy(racine, verbe);racine[strlen(racine)-2]='\0'; // enlever er

// i l i h

g3 Programm4 Programm

// copier la racine pour chaque personnefor(personne=JE;personne<=ILS;personne++){

strcpy(tablo[personne],racine);}

5 Programm

0 P}// ajouter la terminaisonstrcat(tablo[JE],"e");strcat(tablo[TU],"es");t t(t bl [IL] " ")

0 Programme1 Programmes2 Programmestrcat(tablo[IL],"e");

strcat(tablo[NOUS],"ons");strcat(tablo[VOUS],"ez");strcat(tablo[ILS],"ent");

2 Programme3 Programmons4 Programmez

TCH010-Informatique

( [ ], );} 5 Programment

Page 6: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

void afficher_conjugaison(t_tab_conjugaison tablo,int nb_ligne){int ligne=0;

for(ligne=0;ligne<nb_ligne;ligne++){( g g g g )printf("%s\n",tablo[ligne]);

}}}

ProgrammeProgrammesProgrammeProgrammons

TCH010-Informatique

ProgrammonsProgrammezProgramment

Page 7: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

// programme principalint main(void){int main(void){

char verbe[MAXCAR]; // sert a memoriser le verbe conjuguert_tab_conjugaison conjugaison; // tableau de conjugaison

// lecture du verbe tant qu'il ne finit pas par erdo{

printf("\n entrez un verbe se terminant en er:");f("% " b )scanf("%s",verbe);

}while(!verbe_en_er(verbe));

// conjuguer// conjuguerconjuguer(conjugaison,verbe);

//affichageafficher_conjugaison(conjugaison,MAXLIGNE);

return EXIT_SUCCESS;}

TCH010-Informatique

}

Page 8: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

• Exemple 2:

Définissez les structures nécessaires pour mettre en mémoire les informationssuivantes sur un groupe de 10 personnes :

Chaque personne doit être décrite par les informations suivantes : • Nom• Prénom• Date de naissance• Adresse• Numéro de téléphone

Chaque adresse doit être décrite par les informations suivantes :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

TCH010-Informatique

• Numéro à 7 chiffres

Page 9: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

jour

nomprénom

date de naissance

moisannée

numero

personne0

adressenuméro de tél.

rueville

Indicatif rég.Téléphone

personne1Téléphone

jourmois

personne9nom

prénomdate de naissance

adresse

moisannée

jourmois

adressenuméro de tél.

année

Indicatif rég.Téléphone

TCH010-Informatique

Page 10: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t datepersonne0jourmois _

t_adresse

personne1 nomprénom

date de naissanceadresse

année

numerorueville

t_numtelpersonne9

numéro de tél.ville

Indicatif rég.Téléphone

typedef struct{long indicatif_regional;long telephone;

#define MAX_CAR 100

typedef char t chaine[MAX CAR];long telephone;} t_numtel;

typedef struct{

typedef char t_chaine[MAX_CAR];

typedef struct{long numero;yp {

long jour;long mois;long annee;

g ;t_chaine rue;t_chaine ville;

} t_adresse;

TCH010-Informatique

}t_date;

Page 11: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t datepersonne0jourmois _

t_adresse

personne1 nomprénom

date de naissanceadresse

année

numerorueville

t_numtelt_personne

personne9numéro de tél.

ville

Indicatif rég.Téléphone

typedef struct{t_chaine nom;t chaine prenom;t_chaine prenom;t_date date_de_naissande;t_adresse adresse;t numtel numero de tel;_ _ _ ;

} t_personne;

TCH010-Informatique

Page 12: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t datepersonne0jourmois _

t_adresse

personne1 nomprénom

date de naissanceadresse

année

numerorueville

t_numtelt_personnet_groupe

personne9numéro de tél.

ville

Indicatif rég.Téléphone

typedef struct{t_chaine nom;t chaine prenom;

#define MAX_PERS 10t_chaine prenom;t_date date_de_naissande;t_adresse adresse;t numtel numero de tel;

typedef t_personne t_groupe[MAX_PERS];

_ _ _ ;} t_personne;

TCH010-Informatique

Page 13: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

Définissez les structures nécessaires pour conserver les informations des différentes salle d’ordinateur de l’ÉTS.

Un laboratoire contient une ou plusieurs station(s). Chaque laboratoire a un numéro de local (ex. : 1222, 1226, etc.). Une station, c’est un ordinateur et un écran. Évidemment, chacune des stations possède un numéro qui et u écran. v de e t, c acu e des stat o s possède u u é o qu 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 marque (ex. : "Compaq", "Hp", etc.). Il faut aussi pou oir conser er tous les logiciels installés sur la machine Pour chaque pouvoir conserver tous les logiciels installés sur la machine. Pour chaque écran il faut : la marque (ex. : "Samsung", "Sony", etc.), la taille (en pouces) et la résolution (comme .25 ou .27). Pour chaque logiciel, il faut : le nom du logiciel (ex. : "Word", "Excel", etc.), la compagnie distributrice g ( , , ), p g(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 logiciels par ordinateur, 25 stations par laboratoire et 10 laboratoires

TCH010-Informatique

laboratoires.

Page 14: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

marquepuissance

laboratoire

t_logicielnumero

ordinateur

puissanceespace disque

memoirelogiciels

nb logiciellogiciel nom

compagnieversionnumero

station

laboratoire

ecran

resolutiontaille

marque

logicielversionnumero

stationsnb stations

station

#define MAX_CAR 41 //40 caractères + ‘\0’#define MAX_LOGICIEL 100

typedef struct{double resolution;

t_ecrana que

#define MAX_STATION 25#define MAX_LABO 10

typedef char t_chaine[MAX_CAR];

double taille;t_chaine marque;

}t_ecran;yp [ ]

typedef struct{t_chaine nom;t_chaine cie;double version;

TCH010-Informatique

double version;}t_logiciel;

Page 15: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t_ordinateurmarque

puissancelaboratoire

t_logicielt_tab_logicielnumero

ordinateur

puissanceespace disque

memoirelogiciels

nb logiciellogiciel nom

compagnieversionnumero

station

laboratoire

ecran

resolutiontaille

marque

logicielversionnumero

stationsnb stations

station

//un tableau de logicielstypedef t_logiciel t_tab_logiciel[MAX_LOGICIEL];

typedef struct {t_ecran

a que

yp g g [ ]t_chaine marque;double puissance;double espace_disque;double memoire;double memoire;

t_tab_logiciel tab_logiciel; int nb_logiciel;

TCH010-Informatique

}t_ordinateur;

Page 16: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t_ordinateurmarque

puissancelaboratoire

t_logicielt_tab_logicielt_tab_stationnumero

ordinateur

puissanceespace disque

memoirelogiciels

nb logiciellogiciel nom

compagnieversionnumero

station

laboratoire

t_stationecran

resolutiontaille

marque

logicielversionnumero

stationsnb stations

station

//une stationtypedef struct { //un tableau de station

t_ecrana que

yp {

char numero;t_ordinateur ordi;t ecran ecran;

typedef t_station t_tab_station[MAX_STATION];

t_ecran ecran;

}t_station;

TCH010-Informatique

Page 17: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t_ordinateurmarque

puissancelaboratoire

t_logicielt_tab_logicielt_tab_stationnumero

ordinateur

puissanceespace disque

memoirelogiciels

nb logiciellogiciel nom

compagnieversionnumero

station

laboratoire

t_stationt_labo

ecran

resolutiontaille

marque

logicielversionnumero

stationsnb stations

station

//un labotypedef struct { //un tableau de station

t_ecrana que

yp {char numero;

int nb_station;

typedef t_station t_tab_station[MAX_STATION];

t_tab_station tab_station;

}t_labo;

TCH010-Informatique

Page 18: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t_ordinateurmarque

puissancelaboratoire

t_tab_labo

t_logicielt_tab_logicielt_tab_stationnumero

ordinateur

puissanceespace disque

memoirelogiciels

nb logiciellogiciel nom

compagnieversionnumero

station

laboratoire

t_stationt_labo

ecran

resolutiontaille

marque

logicielversionnumero

stationsnb stations

station

//la définition du tableau contenant les laboratoirest_ecran

a que

typedef t_labo t_tab_labo[MAX_LABO];

TCH010-Informatique

Page 19: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t_ordinateurmarque

puissancelaboratoire

t_tab_labo

t_logicielt_tab_logicielt_tab_stationnumero

ordinateur

puissanceespace disque

memoirelogiciels

nb logiciellogiciel nom

compagnieversionnumero

station

laboratoire

t_stationt_labo

ecran

resolutiontaille

marque

logicielversionnumero

stationsnb stations

station

t_ecrana que

int main (void){int main (void){

//(rappel: pas de variable, pas d'espace réservé)t tab labo tab labo = {0};t_tab_labo tab_labo = {0};

int nb_labo = 0;

TCH010-Informatique

…}

Page 20: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t_ordinateurmarque

puissancelaboratoire

t_tab_labo

t_logicielt_tab_logicielt_tab_stationnumero

ordinateur

puissanceespace disque

memoirelogiciels

nb logiciellogiciel nom

compagnieversionnumero

station

laboratoire

t_stationt_labo

ecran

resolutiontaille

marque

logicielversionnumero

stationsnb stations

station

t_ecrana que

Valide ou pas ?

tab_labo1.tab_station1.ordi.marque = « Nec »; tab_labo[0].tab_station[0].ordi.tab_logiciel[0].nom = « TC»;_ [ ] _ [ ] _ g [ ] ;t_ecran ecran = {1024*768,17,"Nec"};t_ordinateur ordi = {"Vtech",4,1.4,200,{0}};

TCH010-Informatique

Page 21: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t_ordinateurmarque

puissancelaboratoire

t_tab_labo

t_logicielt_tab_logicielt_tab_stationnumero

ordinateur

puissanceespace disque

memoirelogiciels

nb logiciellogiciel nom

compagnieversionnumero

station

laboratoire

t_stationt_labo

ecran

resolutiontaille

marque

logicielversionnumero

stationsnb stations

station

t_ecrana que

Valide ou pas ?

t_station station;station.numero = 1;station.ecran = ecran;station.ordi = ordi;

TCH010-Informatique

tab_labo[0].tab_station[0] = station;

Page 22: Chaînes de caractères • Enregistrement de cours/Rev... · • Exemple 1: ¾Écrire un programme de conjugaison des verbes en "er".Le programme lit un verbe régulier en "er" au

t_ordinateurmarque

puissancelaboratoire

t_tab_labo

t_logicielt_tab_logicielt_tab_stationnumero

ordinateur

puissanceespace disque

memoirelogiciels

nb logiciellogiciel nom

compagnieversionnumero

station

laboratoire

t_stationt_labo

ecran

resolutiontaille

marque

logicielversionnumero

stationsnb stations

station

t_ecrana que

//Fonction qui compare deux écrans

int ecran_pareil(t_ecran ec1, t_ecran ec2){return ec1.resolution == ec2.resolution &&return ec1.resolution ec2.resolution &&

ec1.taille == ec2.taille &&strcmp(ec1.marque,ec2.marque) == 0;

TCH010-Informatique

}