Initial commit
This commit is contained in:
commit
aceb7ebdb8
131
TP1/part_1.c
Normal file
131
TP1/part_1.c
Normal file
@ -0,0 +1,131 @@
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define TAB_SIZE 7
|
||||
|
||||
void afficheTab(int tab[], int size);
|
||||
int* fibonacci(int n);
|
||||
void print_sizes();
|
||||
void exercice_4();
|
||||
int est_permutation(int* tab, int n);
|
||||
int * permutation(int n);
|
||||
char * appliquer_permutation(char * T, int * permutation, int n);
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
/*int i;
|
||||
|
||||
int *tab = fibonacci(TAB_SIZE);
|
||||
int * tabptr = tab;
|
||||
|
||||
afficheTab(tab, TAB_SIZE);
|
||||
printf("\n\n");
|
||||
*/
|
||||
//print_sizes();
|
||||
//exercice_4();
|
||||
|
||||
// int tab[8] = {0, 1, 2, 3, 4, 5, 6, 7};
|
||||
// printf("%d\n", est_permutation(tab, 8));
|
||||
|
||||
/*int * tab = permutation(TAB_SIZE);
|
||||
afficheTab(tab, TAB_SIZE);
|
||||
char bliat[TAB_SIZE] = "Bonjour";
|
||||
|
||||
char * bliat_perm = appliquer_permutation(bliat, tab, TAB_SIZE);
|
||||
for (int i=0; i<TAB_SIZE; i++) {
|
||||
printf("%c", bliat_perm[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
free(bliat_perm);
|
||||
free(tab);*/
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
char * appliquer_permutation(char * T, int * permutation, int n) {
|
||||
int i;
|
||||
char * result = malloc(sizeof(char)*n);
|
||||
for (i=0; i<n; i++) {
|
||||
result[i] = T[permutation[i]];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int * permutation(int n) {
|
||||
int i, x1, x2, tmp;
|
||||
int * tab = malloc(sizeof(int)*n);
|
||||
for (i=0; i<n; i++) {
|
||||
tab[i]=i;
|
||||
}
|
||||
|
||||
srand(time(NULL));
|
||||
|
||||
for (i=0; i<n; i++) {
|
||||
x1 = rand()%n;
|
||||
x2 = rand()%n;
|
||||
tmp = tab[x1];
|
||||
tab[x1] = tab[x2];
|
||||
tab[x2] = tmp;
|
||||
}
|
||||
|
||||
return tab;
|
||||
}
|
||||
|
||||
int est_permutation(int* tab, int n) {
|
||||
int i;
|
||||
int* checked_tab = malloc(sizeof(int)*n);
|
||||
for (i=0; i<n; i++) {
|
||||
if(tab[i]<n && checked_tab[tab[i]]==0){
|
||||
checked_tab[tab[i]]=1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
free(checked_tab);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void afficheTab(int * tabptr, int size) {
|
||||
int i;
|
||||
|
||||
if (tabptr==NULL) {
|
||||
return;
|
||||
}
|
||||
for (i=0; i<size; i++) {
|
||||
printf("%d, ", tabptr[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void exercice_4() {
|
||||
void * Z = malloc(10*4);
|
||||
int * X = Z;
|
||||
//afficheTab(X,10);
|
||||
//afficheTab((int *)((char *)X+8),8);
|
||||
free(Z);
|
||||
}
|
||||
|
||||
int* fibonacci(int n) {
|
||||
int i;
|
||||
int* tab = malloc(sizeof(int)*n);
|
||||
tab[0] = 0;
|
||||
tab[1] = 1;
|
||||
|
||||
for (i=2; i<n; i++) {
|
||||
tab[i]= tab[i-2] + tab[i-1];
|
||||
}
|
||||
|
||||
return tab;
|
||||
}
|
||||
|
||||
void print_sizes() {
|
||||
printf("char : %lu\n", sizeof(char));
|
||||
printf("int * : %lu\n", sizeof(int *));
|
||||
printf("int* : %lu\n", sizeof(int*));
|
||||
printf("void : %lu\n", sizeof(void));
|
||||
printf("void * : %lu\n", sizeof(void *));
|
||||
printf("long int : %lu\n", sizeof(long int));
|
||||
printf("long int * : %lu\n", sizeof(long int *));
|
||||
}
|
BIN
TP1/part_2
Executable file
BIN
TP1/part_2
Executable file
Binary file not shown.
148
TP1/part_2.c
Normal file
148
TP1/part_2.c
Normal file
@ -0,0 +1,148 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#define NB_LIGNES 9
|
||||
#define NB_COLONNES 3
|
||||
|
||||
float ** tableau(int n, int m);
|
||||
void autofill_tableau(float** tab, int n, int m);
|
||||
void autofill_tableau_int(float** tab, int n, int m, int v);
|
||||
void fill_tableau(float** tab, int n, int m);
|
||||
void print_tableau(float** tab, int n, int m);
|
||||
void print_tableau_int(float** tab, int n, int m);
|
||||
float ** right_rot(float** tab, int n, int m);
|
||||
|
||||
/*
|
||||
* Libère le tableau
|
||||
* n: nombre de lignes du tableau
|
||||
*/
|
||||
void free_tab(float** tab, int n);
|
||||
|
||||
float ** triangle_pascal(int size);
|
||||
|
||||
#define PASCAL 5
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
srand(time(NULL));
|
||||
|
||||
float ** tab = tableau(NB_LIGNES, NB_COLONNES);
|
||||
autofill_tableau(tab, NB_LIGNES, NB_COLONNES);
|
||||
//fill_tableau(tab, NB_LIGNES, NB_COLONNES);
|
||||
print_tableau(tab, NB_LIGNES, NB_COLONNES);
|
||||
|
||||
printf("\n\n");
|
||||
|
||||
float ** rot_tab = right_rot(tab, NB_LIGNES, NB_COLONNES);
|
||||
print_tableau(rot_tab, NB_COLONNES, NB_LIGNES);
|
||||
|
||||
free_tab(tab, NB_LIGNES);
|
||||
free_tab(rot_tab, NB_COLONNES);
|
||||
/*float ** t = triangle_pascal(PASCAL);
|
||||
print_tableau_int(t, PASCAL, PASCAL);*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
float ** triangle_pascal(int size) {
|
||||
int i,j;
|
||||
float ** tr = tableau(size, size);
|
||||
autofill_tableau_int(tr, size, size, 0);
|
||||
|
||||
tr[0][0] = 1;
|
||||
for (i=1; i<size; i++) {
|
||||
for (j=0; j<size; j++) {
|
||||
tr[i][j] = tr[i-1][j-1]+tr[i-1][j];
|
||||
}
|
||||
}
|
||||
|
||||
return tr;
|
||||
}
|
||||
|
||||
void free_tab(float** tab, int n) {
|
||||
int i;
|
||||
for (i=0; i<n; i++) {
|
||||
free(tab[i]);
|
||||
}
|
||||
free(tab);
|
||||
}
|
||||
|
||||
float ** right_rot(float** tab, int n, int m) {
|
||||
int lgn, col;
|
||||
float ** rot_tab = tableau(m, n);
|
||||
for (lgn=0; lgn<n; lgn++) {
|
||||
for (col=0; col<m; col++) {
|
||||
rot_tab[col][(m-lgn)] = tab[lgn][col];
|
||||
}
|
||||
}
|
||||
return rot_tab;
|
||||
}
|
||||
|
||||
float ** tableau(int n, int m) {
|
||||
int i;
|
||||
int success=1;
|
||||
void* ptr;
|
||||
float ** tab = malloc(sizeof(float*)*n);
|
||||
for (i=0; i<n; i++) {
|
||||
ptr = malloc(sizeof(float)*m);
|
||||
if (ptr == 0) {
|
||||
success=0;
|
||||
break;
|
||||
}
|
||||
tab[i] = ptr;
|
||||
}
|
||||
|
||||
if(success!=0)
|
||||
return tab;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define RAND_RANGE 69
|
||||
void autofill_tableau(float** tab, int n, int m) {
|
||||
int lgn, col;
|
||||
for (lgn=0; lgn<n; lgn++) {
|
||||
for (col=0; col<m; col++) {
|
||||
tab[lgn][col] = (float)rand()/(float)(RAND_MAX/RAND_RANGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
void autofill_tableau_int(float** tab, int n, int m, int v) {
|
||||
int lgn, col;
|
||||
for (lgn=0; lgn<n; lgn++) {
|
||||
for (col=0; col<m; col++) {
|
||||
tab[lgn][col] = v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fill_tableau(float** tab, int n, int m) {
|
||||
int lgn, col;
|
||||
float tmp;
|
||||
for (lgn=0; lgn<n; lgn++) {
|
||||
for (col=0; col<m; col++) {
|
||||
printf("Ligne %d / Colonne %d: ", lgn, col);
|
||||
scanf("%f", &tmp);
|
||||
tab[lgn][col] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void print_tableau(float** tab, int n, int m) {
|
||||
int lgn, col;
|
||||
for (lgn=0; lgn<n; lgn++) {
|
||||
for (col=0; col<m; col++) {
|
||||
printf(" %f ", tab[lgn][col]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
void print_tableau_int(float** tab, int n, int m) {
|
||||
int lgn, col;
|
||||
for (lgn=0; lgn<n; lgn++) {
|
||||
for (col=0; col<m; col++) {
|
||||
printf(" %d ", (int)tab[lgn][col]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
BIN
TP1/part_3
Executable file
BIN
TP1/part_3
Executable file
Binary file not shown.
70
TP1/part_3.c
Normal file
70
TP1/part_3.c
Normal file
@ -0,0 +1,70 @@
|
||||
#include "part_3.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
Liste * create_list() {
|
||||
Liste * list = malloc(sizeof(Liste));
|
||||
list->nb_elements_ = 0;
|
||||
return list;
|
||||
}
|
||||
|
||||
int list_length(Liste list) {
|
||||
return list.nb_elements_;
|
||||
}
|
||||
|
||||
void append(Liste * list, int val) {
|
||||
Element * el = malloc(sizeof(Element));
|
||||
el->val_ = val;
|
||||
el->prev_ = list->tail_;
|
||||
|
||||
if (list->tail_ != NULL) {
|
||||
list->tail_->next_ = el;
|
||||
}
|
||||
list->tail_ = el;
|
||||
list->nb_elements_ += 1;
|
||||
if (list->nb_elements_==1) {
|
||||
list->head_ = el;
|
||||
}
|
||||
}
|
||||
|
||||
void append_head(Liste * list, int val) {
|
||||
Element * el = malloc(sizeof(Element));
|
||||
|
||||
list->head_->prev_ = el;
|
||||
list->head_ = el;
|
||||
list->nb_elements_ += 1;
|
||||
}
|
||||
|
||||
int first_value(Liste * list) {
|
||||
return list->head_->val_;
|
||||
}
|
||||
|
||||
int last_value(Liste * list) {
|
||||
return list->tail_->val_;
|
||||
}
|
||||
|
||||
void print_list(Liste * list) {
|
||||
if (list->head_ == NULL) {
|
||||
printf("[]\n");
|
||||
return;
|
||||
}
|
||||
Element* current_el = list->head_;
|
||||
printf("[");
|
||||
printf("%lu", (unsigned long)current_el);
|
||||
while (current_el != NULL) {
|
||||
printf("%d, ", current_el->val_);
|
||||
current_el = current_el->next_;
|
||||
}
|
||||
printf("]\n");
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
Liste * list = create_list();
|
||||
|
||||
append(list, 69);
|
||||
|
||||
print_list(list);
|
||||
return 0;
|
||||
}
|
24
TP1/part_3.h
Normal file
24
TP1/part_3.h
Normal file
@ -0,0 +1,24 @@
|
||||
|
||||
typedef struct LListe Liste ;
|
||||
typedef struct LElement Element ;
|
||||
|
||||
struct LListe{
|
||||
int nb_elements_ ;
|
||||
Element * head_ ;
|
||||
Element * tail_ ;
|
||||
} ;
|
||||
|
||||
struct LElement{
|
||||
/**
|
||||
* Element suivant / NULL si dernier element
|
||||
*/
|
||||
Element * next_ ;
|
||||
/**
|
||||
* Element pr´ec´edente
|
||||
*/
|
||||
Element * prev_ ;
|
||||
/**
|
||||
* Valeur stock´ee dans la cellule.
|
||||
*/
|
||||
int val_ ;
|
||||
};
|
BIN
TP2/part_1/concatenate
Executable file
BIN
TP2/part_1/concatenate
Executable file
Binary file not shown.
34
TP2/part_1/concatenate.c
Normal file
34
TP2/part_1/concatenate.c
Normal file
@ -0,0 +1,34 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc != 3) {
|
||||
printf("Usage: copy <file1> <file2>\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
FILE * ogf = fopen(argv[1], "r");
|
||||
if (ogf==NULL) {
|
||||
perror("Error while opening file1");
|
||||
}
|
||||
|
||||
FILE * tf = fopen(argv[2], "a+");
|
||||
if (tf==NULL) {
|
||||
perror("Error while opening file2");
|
||||
}
|
||||
|
||||
fseek(ogf, 0, SEEK_END);
|
||||
int ogf_size = ftell(ogf);
|
||||
fseek(ogf, 0, SEEK_SET);
|
||||
|
||||
char * f = malloc(sizeof(char) * ogf_size);
|
||||
fread(f, sizeof(char), ogf_size, ogf);
|
||||
|
||||
fwrite(f, sizeof(char), ogf_size, tf);
|
||||
|
||||
fclose(ogf);
|
||||
fclose(tf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
2
TP2/part_1/copied.log
Normal file
2
TP2/part_1/copied.log
Normal file
@ -0,0 +1,2 @@
|
||||
UwU
|
||||
Sussy Baka :3
|
BIN
TP2/part_1/copy
Executable file
BIN
TP2/part_1/copy
Executable file
Binary file not shown.
35
TP2/part_1/copy.c
Normal file
35
TP2/part_1/copy.c
Normal file
@ -0,0 +1,35 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <memory.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc != 3) {
|
||||
printf("Usage: copy <file1> <file2>\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
FILE * ogf = fopen(argv[1], "r");
|
||||
if (ogf==NULL) {
|
||||
perror("Error while opening file1");
|
||||
}
|
||||
|
||||
FILE * tf = fopen(argv[2], "w+");
|
||||
if (tf==NULL) {
|
||||
perror("Error while opening file2");
|
||||
}
|
||||
|
||||
fseek(ogf, 0, SEEK_END);
|
||||
int ogf_size = ftell(ogf);
|
||||
fseek(ogf, 0, SEEK_SET);
|
||||
|
||||
char * f = malloc(sizeof(char) * ogf_size);
|
||||
fread(f, sizeof(char), ogf_size, ogf);
|
||||
|
||||
fwrite(f, sizeof(char), ogf_size, tf);
|
||||
|
||||
fclose(ogf);
|
||||
fclose(tf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
2
TP2/part_1/dummy.log
Normal file
2
TP2/part_1/dummy.log
Normal file
@ -0,0 +1,2 @@
|
||||
UwU
|
||||
Sussy Baka :3
|
16
TP2/part_1/dummy_append.log
Normal file
16
TP2/part_1/dummy_append.log
Normal file
@ -0,0 +1,16 @@
|
||||
UwU
|
||||
Sussy Baka :3
|
||||
UwU
|
||||
Sussy Baka :3
|
||||
UwU
|
||||
Sussy Baka :3
|
||||
UwU
|
||||
Sussy Baka :3
|
||||
UwU
|
||||
Sussy Baka :3
|
||||
UwU
|
||||
Sussy Baka :3
|
||||
UwU
|
||||
Sussy Baka :3
|
||||
UwU
|
||||
Sussy Baka :3
|
2
TP2/part_1/dummy_novowels.log
Normal file
2
TP2/part_1/dummy_novowels.log
Normal file
@ -0,0 +1,2 @@
|
||||
UwU
|
||||
I'm a Sussy Baka :3
|
2
TP2/part_1/dummy_novowels.log.bak
Normal file
2
TP2/part_1/dummy_novowels.log.bak
Normal file
@ -0,0 +1,2 @@
|
||||
UwU
|
||||
I'm Sussy Baka :3
|
BIN
TP2/part_1/rm_vowels
Executable file
BIN
TP2/part_1/rm_vowels
Executable file
Binary file not shown.
36
TP2/part_1/rm_vowels.c
Normal file
36
TP2/part_1/rm_vowels.c
Normal file
@ -0,0 +1,36 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <memory.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc != 2) {
|
||||
printf("Usage: rm_vowels <file>\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
FILE * file = fopen(argv[1], "r+");
|
||||
if (file==NULL) {
|
||||
perror("Error while opening file");
|
||||
}
|
||||
|
||||
fseek(file, 0, SEEK_END);
|
||||
int file_size = ftell(file);
|
||||
fseek(file, 0, SEEK_SET);
|
||||
|
||||
char * f = malloc(sizeof(char) * file_size);
|
||||
fread(f, sizeof(char), file_size, file);
|
||||
|
||||
fclose(file);
|
||||
file = fopen(argv[1], "w+");
|
||||
|
||||
for(int i = 0; i<file_size; i++) {
|
||||
if (!(f[i]=='a' || f[i]=='e' || f[i]=='i' || f[i]=='o' || f[i]=='u' || f[i]=='y' || f[i]=='A' || f[i]=='E' || f[i]=='I' || f[i]=='O' || f[i]=='U' || f[i]=='Y')){
|
||||
fputc(f[i], file);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(file);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
BIN
TP2/part_1/tableau
Executable file
BIN
TP2/part_1/tableau
Executable file
Binary file not shown.
19
TP2/part_1/tableau.c
Normal file
19
TP2/part_1/tableau.c
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
#include <stdio.h>
|
||||
int main(int argc, char* argv[]) {
|
||||
if(argc!=2) {
|
||||
printf("Usage: tableau <file>");
|
||||
return -1;
|
||||
}
|
||||
|
||||
int T[512];
|
||||
for (int i=0;i<512;i++) {
|
||||
T[i] = i;
|
||||
}
|
||||
|
||||
FILE * F = fopen(argv[1], "w+");
|
||||
|
||||
fwrite(T, sizeof(int), 512, F);
|
||||
|
||||
return 0;
|
||||
}
|
BIN
TP2/part_1/tableau_output
Normal file
BIN
TP2/part_1/tableau_output
Normal file
Binary file not shown.
1
TP2/part_3/out
Normal file
1
TP2/part_3/out
Normal file
@ -0,0 +1 @@
|
||||
list: [9] 0, 9, 18, 27, 36, 45, 54, 63, 72
|
BIN
TP2/part_3/serialization
Executable file
BIN
TP2/part_3/serialization
Executable file
Binary file not shown.
56
TP2/part_3/serialization.c
Normal file
56
TP2/part_3/serialization.c
Normal file
@ -0,0 +1,56 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define INT_N 9
|
||||
|
||||
void write_list_to_stream(int * list, int size);
|
||||
int * read_list_from_stream();
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int * l = malloc(sizeof(int) * INT_N);
|
||||
for (int i = 0; i<INT_N; i++) {
|
||||
l[i] = i*INT_N;
|
||||
}
|
||||
|
||||
write_list_to_stream(l, INT_N);
|
||||
|
||||
read_list_from_stream();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void write_list_to_stream(int * list, int size) {
|
||||
FILE * f = fopen("out", "w+");
|
||||
char * lst = malloc(9+size%10);
|
||||
sprintf(lst, "list: [%d] ", size);
|
||||
fwrite(lst, 1, 10+size/10, f);
|
||||
free(lst);
|
||||
|
||||
for (int i = 1; i<size; i++) {
|
||||
fprintf(f, "%d, ", list[i-1]);
|
||||
}
|
||||
fprintf(f, "%d", list[size-1]);
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
int * read_list_from_stream() {
|
||||
FILE * f = fopen("out", "r+");
|
||||
int size;
|
||||
fscanf(f, "list: [%d] ", &size);
|
||||
|
||||
int * list = malloc(sizeof(int)*size);
|
||||
for (int i = 1; i<size; i++) {
|
||||
fscanf(f, "%d, ", &list[i-1]);
|
||||
}
|
||||
fscanf(f, "%d", &list[size-1]);
|
||||
|
||||
for (int i = 0; i<size; i++) {
|
||||
printf("%d, ", list[i]);
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
|
||||
return list;
|
||||
}
|
BIN
TP3/decoupage
Executable file
BIN
TP3/decoupage
Executable file
Binary file not shown.
83
TP3/decoupage.c
Normal file
83
TP3/decoupage.c
Normal file
@ -0,0 +1,83 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
int * int_list_from_str(char * str);
|
||||
int int_count_from_str(char * str);
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc != 2) {
|
||||
printf("Usage: %s <string>\n", argv[0]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf("%d ints\n", int_count_from_str(argv[1]));
|
||||
/*int * list = int_list_from_str(argv[1]);
|
||||
for (int i=0; i<int_count_from_str(argv[1]); i++) {
|
||||
printf("%d ", list[i]);
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int * int_list_from_str(char * str) {
|
||||
int ico = int_count_from_str(str);
|
||||
int * list = malloc(sizeof(int)*ico);
|
||||
|
||||
int len = strlen(str);
|
||||
|
||||
int current_i = 0;
|
||||
int is_i = 1;
|
||||
int ic = 0;
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (str[i] == ' ') {
|
||||
if ((i+1 < len && str[i+1] != ' ') || (i+1)==len) {
|
||||
list[ic] = current_i;
|
||||
ic++;
|
||||
}
|
||||
is_i = 0;
|
||||
current_i = 0;
|
||||
} else if (isdigit(str[i])) {
|
||||
if (is_i) {
|
||||
current_i *= 10;
|
||||
} else {
|
||||
is_i = 1;
|
||||
}
|
||||
current_i += (str[i] - '0');
|
||||
} else if (str[i]=='-' && current_i > 0) {
|
||||
current_i *= -1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
int int_count_from_str(char * str) {
|
||||
int ic = 0;
|
||||
int current_i = 0;
|
||||
int is_i = 1;
|
||||
|
||||
int len = strlen(str);
|
||||
for (int i = 0; i < len; i++) {
|
||||
printf("str[%d]: %c\n", i, str[i]);
|
||||
if (str[i] == ' ') {
|
||||
if ((i+1 < len && str[i+1] != ' ') || (i+1)==len) ic++;
|
||||
is_i = 0;
|
||||
current_i = 0;
|
||||
} else if (isdigit(str[i])) {
|
||||
if (is_i) {
|
||||
current_i *= 10;
|
||||
} else {
|
||||
is_i = 1;
|
||||
}
|
||||
current_i += (str[i] - '0');
|
||||
} else if (str[i]=='-' && current_i > 0) {
|
||||
current_i *= -1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return ic;
|
||||
}
|
BIN
TP3/stringprinter
Executable file
BIN
TP3/stringprinter
Executable file
Binary file not shown.
31
TP3/stringprinter.c
Normal file
31
TP3/stringprinter.c
Normal file
@ -0,0 +1,31 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc!=3) {
|
||||
printf("Usage: %s <file> <string>", argv[0]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
FILE * f = fopen(argv[1], "w+");
|
||||
if (f==NULL) {
|
||||
printf("Error while opening file %s\n", argv[1]);
|
||||
return -2;
|
||||
}
|
||||
|
||||
for (int i = 0; i<2000; i++) {
|
||||
fprintf(f, "%s", argv[2]);
|
||||
usleep(rand()%100);
|
||||
}
|
||||
|
||||
|
||||
fclose(f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Si programme executé plusieurs fois sur le même fichier simultanément, deuxième programme lancé prend le pas après un court temps
|
||||
*/
|
74
TP4/ex_4.c
Normal file
74
TP4/ex_4.c
Normal file
@ -0,0 +1,74 @@
|
||||
|
||||
#include <stdio.h>
|
||||
int less(int a, int b);
|
||||
int more(int a, int b);
|
||||
int pair_more(int a, int b);
|
||||
|
||||
void sort(int * tab, int size_tab, int (* sort_func)(int, int));
|
||||
|
||||
void print_tab(int * tab, int size) {
|
||||
printf("tab[%d] = [", size);
|
||||
for (int i=0; i<size; i++) {
|
||||
printf("%d ", tab[i]);
|
||||
}
|
||||
printf("]\n");
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
printf("%d, ", less(5, 6));
|
||||
printf("%d, ", more(5, 6));
|
||||
printf("%d\n", pair_more(4, 5));
|
||||
|
||||
int tab[10] = {6, 9, 0, 5, 3, 7, 4, 8, 1, 2};
|
||||
print_tab(tab, 10);
|
||||
sort(tab, 10, less);
|
||||
print_tab(tab, 10);
|
||||
sort(tab, 10, more);
|
||||
print_tab(tab, 10);
|
||||
sort(tab, 10, pair_more);
|
||||
print_tab(tab, 10);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int less(int a, int b) {
|
||||
if (a < b) {
|
||||
return 1;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int more(int a, int b) {
|
||||
if (a > b) {
|
||||
return 1;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int pair_more(int a, int b) {
|
||||
if (a%2==0) {
|
||||
if (b%2!=0) {
|
||||
return 1;
|
||||
} else {
|
||||
return more(a, b);
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void sort(int * tab, int size_tab, int (* sort_func)(int, int)) {
|
||||
int i,j, tmp;
|
||||
for (i=0; i<size_tab-1; i++) {
|
||||
for (j=i+1; j<size_tab; j++) {
|
||||
if (sort_func(tab[i], tab[j]) == -1) {
|
||||
tmp = tab[j];
|
||||
tab[j] = tab[i];
|
||||
tab[i] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
BIN
TP4/union_ex1
Executable file
BIN
TP4/union_ex1
Executable file
Binary file not shown.
29
TP4/union_ex1.c
Normal file
29
TP4/union_ex1.c
Normal file
@ -0,0 +1,29 @@
|
||||
#include <stdio.h>
|
||||
|
||||
typedef union int_test {
|
||||
int a;
|
||||
char b[4];
|
||||
} test;
|
||||
|
||||
void print_hex(int n);
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
/*test i = {.a=429496729};
|
||||
for(int j=0; j<4; j++){
|
||||
printf("%d ", i.b[j]);
|
||||
}
|
||||
printf("\n");*/
|
||||
|
||||
print_hex(14*256 + 11*16 + 8);
|
||||
print_hex(4*256 + 2*16 + 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void print_hex(int n) {
|
||||
test i = {.a=n};
|
||||
for (int j=0; j<4; j++) {
|
||||
printf("%d ", i.b[j]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
BIN
TP4/union_ex3
Executable file
BIN
TP4/union_ex3
Executable file
Binary file not shown.
15
TP4/union_ex3.c
Normal file
15
TP4/union_ex3.c
Normal file
@ -0,0 +1,15 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void print_hex(int n);
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
print_hex(14*256 + 11*16 + 8); //0xeb8
|
||||
print_hex(4*256 + 2*16 + 0); //0x420
|
||||
return 0;
|
||||
}
|
||||
|
||||
void print_hex(int n) {
|
||||
printf("%x\n", n);
|
||||
}
|
Loading…
Reference in New Issue
Block a user