TP10
This commit is contained in:
parent
f7e3478fce
commit
6da645b05e
3
TP10/.gitignore
vendored
Normal file
3
TP10/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
exo1
|
||||
exo2
|
||||
exo3
|
9
TP10/Makefile
Normal file
9
TP10/Makefile
Normal file
|
@ -0,0 +1,9 @@
|
|||
all: $(patsubst %.c,%,$(shell ls *.c))
|
||||
|
||||
%: %.c
|
||||
clang -Wall -Wextra $< -o $@ -g
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
clean:
|
||||
rm *.exe
|
30
TP10/exo1.c
Normal file
30
TP10/exo1.c
Normal file
|
@ -0,0 +1,30 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// 2.1.1
|
||||
// Signature : int f(int)
|
||||
int fois_deux(int a) {
|
||||
return a*2;
|
||||
}
|
||||
|
||||
// 2.1.2
|
||||
void appliquer_tableau(int f(int), int t[], int size) {
|
||||
int i;
|
||||
for (i = 0; i < size; i++) {
|
||||
t[i] = f(t[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// 2.1.3
|
||||
#define SIZE 5
|
||||
|
||||
int main() {
|
||||
int t[SIZE] = {1, 4, 7, 9, 3};
|
||||
int i;
|
||||
|
||||
appliquer_tableau(fois_deux, t, SIZE);
|
||||
|
||||
for (i = 0; i < SIZE; i++) {
|
||||
printf("t[%d] = %d\n", i, t[i]);
|
||||
}
|
||||
}
|
79
TP10/exo2.c
Normal file
79
TP10/exo2.c
Normal file
|
@ -0,0 +1,79 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
// 2.2.1
|
||||
void triBulleOld(int tab[], int size){
|
||||
int i, j, tmp;
|
||||
for(i = size - 1; i > 0; i--){
|
||||
for(j = 0; j < i; j++){
|
||||
// 2.2.2
|
||||
// Il faut modifier le < en > pour faire un tri décroissant
|
||||
if (tab[j+1] < tab[j]){
|
||||
tmp = tab[j+1];
|
||||
tab[j+1] = tab[j];
|
||||
tab[j] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2.2.3
|
||||
int superieur(int a, int b) {
|
||||
if (a > b) {
|
||||
return 1;
|
||||
} else if (a == b) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
// 2.2.4
|
||||
int inferieur(int a, int b) {
|
||||
if (a < b) {
|
||||
return 1;
|
||||
} else if (a == b) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
// 2.2.5
|
||||
void triBulle(int tab[], int size, int compare(int, int)) {
|
||||
int i, j, tmp;
|
||||
for(i = size - 1; i > 0; i--){
|
||||
for(j = 0; j < i; j++){
|
||||
// 2.2.2
|
||||
// Il faut modifier le < en > pour faire un tri décroissant
|
||||
if (compare(tab[j+1], tab[j]) == 1){
|
||||
tmp = tab[j+1];
|
||||
tab[j+1] = tab[j];
|
||||
tab[j] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define SIZE 5
|
||||
|
||||
void afficherTableau(int t[], int size) {
|
||||
int i;
|
||||
for (i = 0; i < size; i++) {
|
||||
printf("t[%d] = %d\n", i, t[i]);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int t[SIZE] = {1, 4, 7, 9, 3};
|
||||
|
||||
printf("Tri avec inferieur\n");
|
||||
triBulle(t, SIZE, inferieur);
|
||||
afficherTableau(t, SIZE);
|
||||
|
||||
printf("Tri avec superieur\n");
|
||||
triBulle(t, SIZE, superieur);
|
||||
afficherTableau(t, SIZE);
|
||||
|
||||
}
|
72
TP10/exo3.c
Normal file
72
TP10/exo3.c
Normal file
|
@ -0,0 +1,72 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
// 3.1.1
|
||||
// À mon avis les void* correspondent à n'importe quel type
|
||||
|
||||
// 3.1.2
|
||||
int superieur(const void* A, const void* B) {
|
||||
int a = *(int*) A;
|
||||
int b = *(int*) B;
|
||||
if (a > b) {
|
||||
return 1;
|
||||
} else if (a == b) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int inferieur(const void* A, const void* B) {
|
||||
int a = *(int*) A;
|
||||
int b = *(int*) B;
|
||||
if (a < b) {
|
||||
return 1;
|
||||
} else if (a == b) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
#define SIZE 5
|
||||
#define STR_SIZE 255
|
||||
|
||||
void afficherTableau(int t[], int size) {
|
||||
int i;
|
||||
for (i = 0; i < size; i++) {
|
||||
printf("t[%d] = %d\n", i, t[i]);
|
||||
}
|
||||
}
|
||||
|
||||
int cmpstr(const void* A, const void* B) {
|
||||
const char* a = (const char*)A;
|
||||
const char* b = (const char*)B;
|
||||
return strcmp(a, b);
|
||||
}
|
||||
|
||||
|
||||
int main() {
|
||||
int t[SIZE] = {1, 4, 7, 9, 3};
|
||||
|
||||
printf("Tri avec inferieur\n");
|
||||
qsort(t, SIZE, sizeof(int), inferieur);
|
||||
afficherTableau(t, SIZE);
|
||||
|
||||
printf("Tri avec superieur\n");
|
||||
qsort(t, SIZE, sizeof(int), superieur);
|
||||
afficherTableau(t, SIZE);
|
||||
|
||||
char c[SIZE][STR_SIZE] = {"Bonjour,\0", "comment\0", "allez\0", "vous\0", "?\0"};
|
||||
|
||||
/* int (compare(const void*, const void*)) = strcmp; */
|
||||
printf("Tri avec strcmp\n");
|
||||
qsort(c, SIZE, sizeof(char) * STR_SIZE, cmpstr);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < SIZE; i++) {
|
||||
printf("t[%d] = %s\n", i, c[i]);
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue