• Aucun résultat trouvé

Evaluation n°1Scalaires, tableaux, chaînes

N/A
N/A
Protected

Academic year: 2022

Partager "Evaluation n°1Scalaires, tableaux, chaînes"

Copied!
5
0
0

Texte intégral

(1)

Evaluation n°1

Scalaires, tableaux, chaînes

void ph(int z, int n) {

if(z>=n) ph(z/n,n);

printf("%d ",z%n);

} Soit la fonction ph définie ci-contre. Donnez

les valeurs affichées à l’écran lors de l’exé- cution de ph(258,16).

Nom : Prénom :

Scalaires - bases

Réalisez une fonction ch telle que, en supposant que la valeur x est comprise entre 0 et 15 (inclus) ch(x) retourne le caractère hexadécimal représentant x. Par exemple, ch(5) doit retourner le caractè- re ‘5’ et ch(11) doit retourner le caractère ‘B’. Le code de la fonction ch doit être aussi concis que possible. Si votre solution ne tient pas dans le cadre, c’est qu’elle est trop compliquée.

Réalisez une fonction f sans aucune boucle telle que f(n,n) affiche n séquences de caractères '+' de longueurs respectives n, n-1, …, 1, séparées par des espaces. Par exemple f(4,4) devra afficher ++++ +++ ++ +. Indice : le premier paramètre représente le nombre de caractères restant à afficher dans la séquence courante, le deuxième paramètre représente le nombre de séquences restant à afficher.

(2)

Donnez les valeurs affichées lors de l’exécution de la fonction testPointeurs.

Soient les deux fonctions suivantes :

Scalaires - Pointeurs

void fp(int* p, int x) {

int t=x;

x=*p;

*p=t;

}

void testPointeurs() {

int a=1,b=2;

fp(&a,b);

printf("%d %d\n",a,b);

}

Scalaires - Pointeurs et bitwises

Soient les deux fonctions suivantes :

void cbs(int* p) {

int b1 = (*p)&1;

int b2 = (*p>>1)&1;

int m = (b1^b2)<<7;

*p = (*p >> 1)|m;

}

void testBitwises() {

int i,x=0x0b;

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

cbs(&x);

printf("%.02x ",x);

} }

Donnez les valeurs affichées lors de l’exécution de la fonction testPBitwises.

Scalaires - bitwises

(3)

Réalisez une fonction mir qui permet d'inver- ser l'ordre des élé- ments d'un tableau d'entiers. Par exemple, si le tableau contient les valeurs 1,2,3,7 alors après appel de cette fonction il con- tiendra les valeurs 7,3,2,1.

Réalisez une fonction reverse qui inverse l'ordre des éléments d'un tableau d'entiers compris entre les indi- ces i1 et i2 inclus, sans affecter les autres valeurs. La fonction reverse doit utiliser la fonction mir (et non le contrai- re). Par exemple, si le tableau contient les valeurs 1,2,3,7,5 avec i1=1 et i2=3, alors après appel de cette fonction il contiendra les valeurs 1,7,3,2,5.

Tableaux 1d (et pointeurs)

void mir(int tab[], int n) {

}

Réalisez une fonction récursive min qui re- tourne l'adresse de la plus petite valeur d'un tableau d'entiers. Cet- te fonction ne doit pas utiliser de boucle (ni for, ni do, ni while…).

void reverse(int tab[], int i1, int i2) {

}

int* minTab(int tab[], int n) {

}

(4)

Réalisez une fonction cmp- SubStr qui compare les n premiers caractères de deux chaînes et retourne un entier représentant le Booléen vrai si les n premiers caractères de chaque chaîne forment des séquences identiques et faux sinon. Par exemple si s1 pointe "Picsou" et s2 pointe

"Picfou" alors cmpSubStr(s1,s2,3) doit re-

tourner vrai et

cmpSubStr(s1,s2,4) doit re- tourner faux. On suppose que les deux chaînes comportent chacune au moins n caractères.

Chaines (et pointeurs)

int cmpSubStr(char* s1, char* s2, int n) {

}

Réalisez une fonction isIn qui vérifie si une chaîne t est dans une chaîne s. Par exemple, les chaînes "ic", "sou"

et "Pic" sont dans la chaîne "Picsou" alors que "cou" n'y est pas.

On supposera que t ne comporte pas plus de caractères que s. Vous devez utiliser la fonc- tion cmpSubStr.

int isIn(char* t, char* s) {

int nt = strlen(t);

int ns = strlen(s);

}

Réalisez une fonction améliorée isInEff qui fait la même chose que isIn, mais plus efficacement. On appelle signature d'une chaîne ou d'une séquence de caractères la somme des

(5)

int isInEff(char* t, char* s) {

}

Merci de commenter votre code. Il sera tenu compte de sa clarté et de sa concision.

Références

Documents relatifs

Exercice 4: Écrire une fonction qui supprime la première occurrence d’un caractère motif dans une chaîne de caractères source,2. void supp (char motif,

Complétez ce code de sorte à ce qu’il vous permette de découvrir où est stocké le paramètre t de la fonction fct, par rapport à la position en mémoire où le tableau tmp

Lecture fichier binaire : données stockées dans une chaîne de caractères... 3.2 str : chaîne d’octets (pas

En C++, les chaînes de caractères sont stockées dans des variables de type string : string prenom = &#34;Robert&#34;; // string pour les chaînes de caractères.. Les chaînes

Pour accéder à un élément, dans une itération donnée, on le fait via le registre SI...

(e) Écrire une fonction jeu() qui définit une chaine de caractères secrete en utili- sant la fonction combinaison_aleatoire , appelle la fonction saisie , affiche le nombre

On perd une partie

• Le traitement de liste est souvent réalisé à l’aide de fonctions récursives (il n’existe pas d’équivalent fonctionnel direct des boucles). • Calcul de la longueur