ajout fichiers

This commit is contained in:
lecorre 2021-09-22 15:12:02 +02:00
parent 84ccdcaa4e
commit f497652e47
15 changed files with 294 additions and 0 deletions

46
TD1/Ex1.c Normal file
View File

@ -0,0 +1,46 @@
#include <stdlib.h>
#include <stdio.h>
#include "Ex1a.h"
int main(int argc, char const *argv[]) {
int size;
int choix;
int i;
int menu = 1;
printf("Rentrez la taille de la matrice : ");
scanf("%d", &size);
int* mat = malloc((size*size)*sizeof(int));
for(i = 0; i<(size*size); i++) {
scanf("%d", &mat[i]);
}
Afficher(size, mat);
while (menu) {
printf("\n\n1. Multiplication scalaire\n2. Addition\n3. Multiplication\n4. Quitter\n\nChoix : ");
scanf("%d", &choix);
if (choix == 4) {
menu = 0;
} else if (choix == 1) {
MultiplicationScalaire(size, mat);
Afficher(size, mat);
} else if (choix == 2) {
Addition(size, mat);
Afficher(size, mat);
} else if (choix == 3) {
Multiplication(size, mat);
Afficher(size, mat);
}
}
free(mat);
return EXIT_SUCCESS;
}

BIN
TD1/Ex1.o Normal file

Binary file not shown.

40
TD1/Ex1a.c Normal file
View File

@ -0,0 +1,40 @@
#include <stdlib.h>
#include <stdio.h>
void Afficher(int size, int* mat) {
int i;
printf("\nVoici votre matrice :\n");
for(i = 0; i<size*size;i++) {
if (i%size==0) {
printf("\n");
}
printf("%3d", mat[i]);
}
}
void MultiplicationScalaire(int size, int* mat) {
int i;
int sc;
printf("\nChoisissez un nombre pour multiplier la matrice : ");
scanf("%d", &sc);
for (i = 0; i<(size*size); i++) {
mat[i] = mat[i]*sc;
}
}
void Addition(int size, int* mat) {
int i;
printf("\nCreer la 2éme matrice pour l'addition : \n");
int* mat2 = malloc((size*size)*sizeof(int));
for(i = 0; i<(size*size); i++) {
scanf("%d", &mat2[i]);
}
for (i = 0; i<(size*size); i++) {
mat[i] = mat[i]+mat2[i];
}
free(mat2);
}
void Multiplication(int size, int* mat) {
int i;
}

10
TD1/Ex1a.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef EX1A_H
#define EX1A_H
void Afficher(int size, int* mat) ;
void MultiplicationScalaire(int size, int* mat) ;
void Addition(int size, int* mat);
void Multiplication(int size, int* mat) ;
#endif

21
TD1/Makefile Normal file
View File

@ -0,0 +1,21 @@
OBJS = Ex1.o Ex1a.c
SRC = %(willcard*.c)
OUT = ex1
CC = gcc
FLAGS = -g -c
LFLAGS =
all: $(OBJS)
$(CC) -g $(OBJS) -o $(OUT) $(LFLAGS) -lgraph
Ex1.o: Ex1.c
$(CC) $(FLAGS) Ex1.c
Ex1a.o: Ex1a.c
$(CC) $(FLAGS) Ex1a.c
clean:
rm -f $(OBJS) $(OUT)

25
TP2/Exemples/Exemple1.c Normal file
View File

@ -0,0 +1,25 @@
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
pid_t pid; // pour récupérer le pid du nouveau processus
int main() {
switch(pid = fork()) {
case (pid_t) -1: // lappel de fork a échoué
perror("Création de processus");
exit(2);
case (pid_t)0: // ici, ça concerne le processus fils
printf("valeur de fork dans le fils = %d\n",pid);
printf("je suis le processus %d de père %d\n",getpid(), getppid());
printf("fin du processus fils\n");
exit(0);
default: // ici, cest le processus père
printf("valeur de fork dans le père = %d\n",pid);
printf("je suis le processus %d de père %d\n",getpid(), getppid());
printf("fin du processus père\n");
}
return EXIT_SUCCESS;
}

20
TP2/Exemples/Exemple2.c Normal file
View File

@ -0,0 +1,20 @@
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int n = 5;
pid_t fils_pid;
for (int i=0; i < n; i++) {
fils_pid = fork();
if (fils_pid > 0) break;
printf("Processus %d avec père %d n=%d\n", getpid(), getppid(),i);
}
return EXIT_SUCCESS;
}

26
TP2/Exemples/Exemple3.c Normal file
View File

@ -0,0 +1,26 @@
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int n = 5;
pid_t fils_pid;
for (int i=0; i < n; i++) {
fils_pid = fork();
if (fils_pid > 0) break;
printf("Processus %d avec père %d\n", getpid(), getppid());
}
for (int j = 0; j < 10000; j++) {
for (int k=0; k < 1000; k++) {
;
}
}
return EXIT_SUCCESS;
}

BIN
TP2/Exemples/a.out Executable file

Binary file not shown.

43
TP2/Exercices/Ex1.c Normal file
View File

@ -0,0 +1,43 @@
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char const *argv[]) {
int fluxe, fluxs, readchar;
char caractere;
fluxe = open("test.txt", O_RDONLY);
fluxs = open("test2.txt", O_WRONLY | O_CREAT, 0600);
pid_t pid;
for (int i = 0; i<10;i++) {
if (fluxe) {
readchar = read(fluxe, &caractere, sizeof(char));
}
if (fluxs) {
write(fluxs, &caractere, sizeof(char));
}
}
pid = fork();
if (pid == 0) {
while(readchar != 0) {
if (fluxe) {
readchar = read(fluxe, &caractere, sizeof(char));
}
if (fluxs && readchar != 0) {
write(fluxs, &caractere, sizeof(char));
}
}
close(fluxe);
close(fluxs);
}
return EXIT_SUCCESS;
}

12
TP2/Exercices/Ex2.c Normal file
View File

@ -0,0 +1,12 @@
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char const *argv[]) {
write(1, "mammouth", 8);
pid_t psid = fork();
if (psid == 0) {
write(1, "\nlapinou", 8);
}
return EXIT_SUCCESS;
}

15
TP2/Exercices/Ex4.c Normal file
View File

@ -0,0 +1,15 @@
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char const *argv[]) {
pid_t pid = fork();
if (pid == 0) {
printf("Mon père est %d\n", getppid());
sleep(0.2);
printf("Mon nouveau père est %d\n", getppid());
}
sleep(0.1);
return EXIT_SUCCESS;
}

BIN
TP2/Exercices/a.out Executable file

Binary file not shown.

18
TP2/Exercices/test.txt Normal file
View File

@ -0,0 +1,18 @@
Maître Corbeau, sur un arbre perché,
Tenait en son bec un fromage.
Maître Renard, par l'odeur alléché,
Lui tint à peu près ce langage :
Et bonjour, Monsieur du Corbeau.
Que vous êtes joli ! que vous me semblez beau !
Sans mentir, si votre ramage
Se rapporte à votre plumage,
Vous êtes le Phénix des hôtes de ces bois.
À ces mots, le Corbeau ne se sent pas de joie ;
Et pour montrer sa belle voix,
Il ouvre un large bec, laisse tomber sa proie.
Le Renard s'en saisit, et dit : Mon bon Monsieur,
Apprenez que tout flatteur
Vit aux dépens de celui qui l'écoute.
Cette leçon vaut bien un fromage, sans doute.
Le Corbeau honteux et confus
Jura, mais un peu tard, qu'on ne l'y prendrait plus.

18
TP2/Exercices/test2.txt Normal file
View File

@ -0,0 +1,18 @@
Maître Corbeau, sur un arbre perché,
Tenait en son bec un fromage.
Maître Renard, par l'odeur alléché,
Lui tint à peu près ce langage :
Et bonjour, Monsieur du Corbeau.
Que vous êtes joli ! que vous me semblez beau !
Sans mentir, si votre ramage
Se rapporte à votre plumage,
Vous êtes le Phénix des hôtes de ces bois.
À ces mots, le Corbeau ne se sent pas de joie ;
Et pour montrer sa belle voix,
Il ouvre un large bec, laisse tomber sa proie.
Le Renard s'en saisit, et dit : Mon bon Monsieur,
Apprenez que tout flatteur
Vit aux dépens de celui qui l'écoute.
Cette leçon vaut bien un fromage, sans doute.
Le Corbeau honteux et confus
Jura, mais un peu tard, qu'on ne l'y prendrait plus.