• Aucun résultat trouvé

Questionnaire examen intra INF1005C

N/A
N/A
Protected

Academic year: 2022

Partager "Questionnaire examen intra INF1005C"

Copied!
8
0
0

Texte intégral

(1)

INF1005C

Sigle du cours Identification de l’étudiant(e)

Nom : Prénom :

Signature : Matricule : Groupe :

Sigle et titre du cours Groupe Trimestre

INF1005C – Programmation procédurale Tous 20073

Professeur Local Téléphone

Martine Bellaïche – coordonnatrice, chargés de cours M-3414 4679

Jour Date Durée Heures

Vendredi 19 octobre 2007 1h50 8h30

Documentation Calculatrice

Toute Aucune

Aucune Programmable

Voir directives particulières Non programmable

Les cellulaires, agendas

électroniques ou téléavertisseurs sont interdits.

Directives particulières

- Ne recopiez pas les déclarations ni les instructoins déjà fournies dans le questionnaire.

- Vous n’avez pas à écrire de commentaires ni d’en-têtes.

- Les surveillants ne répondront à aucune question. En cas de doute, veuillez faire vos suppositions et les écrire sur le cahier d’examen.

Bonne chance à tous!

L’examen contient 4 questions sur un total de 4 pages (excluant cette page)

La pondération de cet examen est de 25 %

Vous devez répondre sur : le questionnaire le cahier les deux

Im po rt an t

Vous devez remettre le questionnaire : oui non

(2)

1.1 Quel sera l'affichage obtenu après l'exécution des instructions suivantes?

int A;

for( A = 13; A >0; A-- ) {

switch( A ) {

case 0 : A *= 2;

break;

case 2 : A += 3;

case 4 : A = 2;

break;

case 6 : A = 0;

default : A %= 5;

}

cout << A << ' ';

}

1.2 Quel sera l'affichage obtenu après l'exécution des instructions suivantes?

int vecteur1[7] = {7, 4, 8, 1, 4, 1, 4};

float vecteur2[7];

int i, compte;

cout << "Vecteur 1 : [ ";

for ( i=0; i<7; i++ ) {

cout << vecteur1[i] << ' ';

}

cout << "]";

cout << "Vecteur 2 : [ ";

compte=0;

//affiche les réels en point flottant et ajoute des // des zéros s'il y a lieu.

// exemple 12.67 , 56.0

cout.setf(ios::showpoint|ios::fixed);

// setprecision(Nb_dec) affiche Nb_dec après le point.

while( compte < 7 && vecteur1[compte] != 1) {

vecteur2[compte] = (float) vecteur1[compte];

cout << setprecision(1) << vecteur2[compte] << ' ';

(3)

3 2 1

Vecteur 1 : [ 7 4 8 1 4 1 4 ] Vecteur 2 : [ 7.0 4.0 8.0 ]

Question 2 (4 points)

Soient les déclarations suivantes :

int T[10] = {3,4,9,2,6,10,2,1,5,8};

int S[10]= {0};// tous les éléments du tableau sont initialisés à 0

Écrivez la partie du programme qui remplit le tableau d’entiers S, tel que chaque élément S[i] contienne la somme des éléments de T entre T[0] et T[i] (T[i] compris). Par exemple S[0] contiendra la valeur 3, S[1] contiendra la valeur 7, S[2] contiendra la valeur 16, S[3] contiendra la valeur 18 et ainsi de suite.

Réponse question2

int T[10] = {3,4,9,2,6,10,2,1,5,8};

int S[10]= {0};// tous les éléments du tableau sont initialisés à 0 for (int i=0; i<10;i++)

for ( int j=0; j<=i;j++) S[i] = S[i]+T[j];

for ( int i = 0; i <10;i++) cout << S[i] << " ";

ou

S[0] = T[0];

for(int i =1; i<10; i++) S[i] = S[i-1] + T[i];

ou b=0;

for(int i =0; i<10; i++) {

b += T[i];

S[i] = b;

}

(4)

Écrire un programme qui lit un mot, calcule et affiche seulement la fréquence de chaque lettre dans le mot, et finalement trouve et affiche la lettre ayant la plus grande fréquence.

Remarques :

1. Le mot ne contient ni apostrophe, et ni trait d’union.

2. Le mot peut contenir des majuscules. La fonction tolower() convertit une lettre majuscule en minuscule. La fonction fera une conversion seulement et seulement si la lettre est majuscule. Par exemple, tolower(‘T’) vaut ‘t’, et tolower(‘a’) vaut ‘a’.

Cette fonction est définie dans # include <cctype>.

3. L’expression

‘a’-‘a’ vaut la valeur entière 0,

‘b’-‘a’ vaut la valeur entière 1,

‘c’-‘a’ vaut l a valeur entière 2,

‘d’–‘a’ vaut la valeur entière 3,

‘e’–‘a’ vaut la valeur entière 4 ,

et ainsi de suite pour toutes les lettres de l’alphabet.

4. L’expression

char (0+'a') vaut le caractère ‘a’, char (1+'a') vaut le caractère ‘b’, char (2+'a') vaut le caractère ‘c’,

char (3+'a') vaut le caractère ‘d’,

etc…

(5)

#include <iostream>

#include <cctype>

#include <string>

using namespace std;

int main() {

string Mot;

int Frequence[26] ={0};

int Max =-1, Indice, IndiceMax;

cout << " Veuillez entrer le mot ";

cin >>Mot;

for (int i = 0; i< Mot.size(); i++) { Indice = tolower(Mot[i])-'a';

Frequence [Indice]++;

}

for ( int i = 0; i< 26; i++) { if (Frequence[i]!=0)

cout << char (i+'a') << " " << Frequence[i]<< endl;

if (Frequence[i] >Max) { IndiceMax = i;

Max = Frequence[i];

} }

cout << "La plus grande frequence "<< endl;

cout << char (IndiceMax+'a') << " " << Max;

}

(6)

La nouvelle version du logiciel iTune, possède un fichier texte contenant les caractéristiques de toutes les chansons contenues dans sa librairie. Ce fichier, nommé iTUNEMUSIC.DAT, décrit, pour chaque chanson :

sur trois lignes :

son titre (chaîne d'au plus 80 caractères), l’artiste (chaîne d'au plus 80 caractères), l’album (chaîne d'au plus 80 caractères), sur la quatrième ligne :

son année de parution,

son genre (un seul mot d’au plus 30 caractères), son nombre de fois écouté jusqu’à présent,

son nombre d’étoiles (0=non disponible, 5=excellent), sa taille (en Mega octets)

par exemple :

...

Savoure le rouge Stephie Shock Les Vendredis

2006 Franco 5 3 3.457 Youri

Les Trois Accords

Grand Champion International de course 2006 Franco 25 5 4.635

Umbrella Rihanna

Good Girl Gone Bad 2007 R&B 21 0 3.245 ...

(7)

Question 4 ( suite)

Le nombre de chansons contenues dans iTUNEMUSIC.DAT est indéterminé mais très grand, ce qui empêche de mémoriser toutes les informations du fichier dans une variable de type tableau.

Une chanson est considérée « très bonne » si le produit du nombre d’étoiles par le nombre de fois écouté est supérieur ou égal à 100 :

« Très bonne » => (nb. d’étoiles * nb. fois écouté) >= 100

Vous devez concevoir un programme en langage C/C++ qui réalisera les opérations suivantes:

• demande à l’utilisateur d'entrer (au clavier) une année A;

• affiche (à l'écran) tous les titres de chansons, contenus dans le fichier iTUNEMUSIC.DAT, ayant paru l'année A et étant considérées comme très bonnes selon la règle donnée plus haut.

N.B. On supposera que l'utilisateur ne commet pas d'erreurs, i.e. qu'il entre bien une valeur numérique représentant une année. Il y a toujours au moins une chanson « très bonne » pour l’année à considérer.

(8)

#include <fstream>

#include <string>

using namespace std;

void main() {

string titre, artiste, album, genre;

int annee, refAnnee, nbEcoute, nbEtoiles;

float taille;

ifstream ficLecture;

cout << "Les tres bonnes chansons de quelle annee desirez-vous?";

cin >> refAnnee;

ficLecture.open("Y:\\cours\\inf1005c\\aut07\\Cp\\itunes\\itunesmus ic.dat");

if(!ficLecture.fail()) {

getline(ficLecture,titre);

while(!ficLecture.eof()) {

getline(ficLecture,artiste);

getline(ficLecture,album);

ficLecture >> annee >> genre >> nbEcoute >> nbEtoiles

>> taille;

if(refAnnee == annee) {

if((nbEcoute*nbEtoiles)>=100) {

cout << titre << endl;

} }

ficLecture.ignore(1);

getline(ficLecture,titre);

} }

else

cout << "Erreur lors de l'ouverture du fichier";

}

Références

Documents relatifs

Si votre enfant est absent cette journée-là, veuillez prendre rendez-vous avec SC photo afin de les prendre directement au studio... She decorated the wall which also becomes a

Elle consiste à construire une fenêtre d’authentification qui est représentée par la classe JDialogueIdentification et qui permet d’identifier un joueur membre ou d’ajouter

[r]

Ecriture : Ecris les lettres manquantes du mot LOUP..

La rencontre est consacrée aux développements et à l’utilisation des méthodes non linéaires, du fondamental aux sciences appliquées, en mathématiques,

B Grammaire • Lis le texte et recopie les mots soulignés dans la bonne colonne.. Robotine visite un

Consigne : découpe et colle à leur place les étiquettes lettres pour

Dans la pharyngite bactérienne chez les 6 ans et moins, on observe de 2003 à 2005 que le pourcentage de prescriptions pour les premiers choix d’antibiotiques a diminué de 50 % à 33