initial commit
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,5 @@
|
||||
# UTC502-17-10-24
|
||||
|
||||
## Notion de base sur les systemes d'exploitation
|
||||
|
||||
Regardez le cour en pdf .. car la moi JPP de ce cour mdr.
|
||||
@@ -0,0 +1,59 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
typedef struct student {
|
||||
char nom[10];
|
||||
int note;
|
||||
} eleve;
|
||||
|
||||
int main() {
|
||||
int fd, i, ret;
|
||||
eleve un_eleve;
|
||||
const char *filename = "students.dat"; // Change the filename as needed
|
||||
|
||||
// Open the file for writing (create if it doesn't exist)
|
||||
fd = open(filename, O_CREAT | O_WRONLY | O_APPEND, S_IRUSR | S_IWUSR);
|
||||
if (fd == -1) {
|
||||
perror("prob open");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Write student records to the file
|
||||
for (i = 0; i < 4; i++) {
|
||||
printf("Donnez le nom de l’élève \n");
|
||||
scanf("%s", un_eleve.nom);
|
||||
printf("Donnez la note de l’élève \n");
|
||||
scanf("%d", &un_eleve.note);
|
||||
if (write(fd, &un_eleve, sizeof(eleve)) == -1) {
|
||||
perror("prob write");
|
||||
close(fd);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Move to the beginning of the file to read records
|
||||
ret = lseek(fd, 0, SEEK_SET);
|
||||
if (ret == -1) {
|
||||
perror("prob lseek");
|
||||
close(fd);
|
||||
return 1;
|
||||
}
|
||||
printf("la nouvelle position est %d\n", ret);
|
||||
|
||||
// Read and display student records
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (read(fd, &un_eleve, sizeof(eleve)) == -1) {
|
||||
perror("prob read");
|
||||
close(fd);
|
||||
return 1;
|
||||
}
|
||||
printf("le nom et la note de l’élève sont %s, %d\n",
|
||||
un_eleve.nom, un_eleve.note);
|
||||
}
|
||||
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/****************************************************************/
|
||||
/* Exemple de manipulation d’un fichier: */
|
||||
/* création, positionnement, fermeture */
|
||||
/****************************************************************/
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
typedef struct student
|
||||
{
|
||||
char nom[10];
|
||||
int note;
|
||||
} eleve;
|
||||
int main()
|
||||
{
|
||||
|
||||
int fd, i, ret;
|
||||
eleve un_eleve;
|
||||
fd = open("./eleves.txt", O_CREAT | O_TRUNC | O_RDWR , S_IRUSR | S_IRGRP);
|
||||
if (fd == -1)
|
||||
perror("prob open");
|
||||
i = 0;
|
||||
while (i < 4)
|
||||
{
|
||||
printf("Donnez le nom de l’élève \n");
|
||||
scanf("%s", un_eleve.nom);
|
||||
printf("Donnez la note de l’élève \n");
|
||||
scanf("%d", &un_eleve.note);
|
||||
write(fd, &un_eleve, sizeof(eleve));
|
||||
i = i + 1;
|
||||
}
|
||||
ret = lseek(fd, SEEK_SET, 0);
|
||||
if (ret == -1)
|
||||
perror("prob lseek");
|
||||
printf("la nouvelle position est %d\n", ret);
|
||||
i = 0;
|
||||
while (i < 4)
|
||||
{
|
||||
read(fd, &un_eleve, sizeof(eleve));
|
||||
printf("le nom et la note de l’élève sont %s, %d\n",
|
||||
un_eleve.nom,
|
||||
un_eleve.note);
|
||||
i = i + 1;
|
||||
}
|
||||
close(fd);
|
||||
return 0;
|
||||
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,46 @@
|
||||
/****************************************************************/
|
||||
/* Exemple de manipulation d’un fichier: */
|
||||
/* création, positionnement, fermeture */
|
||||
/****************************************************************/
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
typedef struct student {
|
||||
char nom[10];
|
||||
int note;
|
||||
} eleve;
|
||||
int main()
|
||||
{
|
||||
int fd, i, ret;
|
||||
eleve un_eleve;
|
||||
fd = open ("./eleve.txt", O_RDWR);
|
||||
if (fd == -1)
|
||||
perror ("prob open");
|
||||
i = 0;
|
||||
while (i<4)
|
||||
{
|
||||
printf ("Donnez le nom de l’élève \n");
|
||||
scanf ("%s", un_eleve.nom);
|
||||
printf ("Donnez la note de l’élève \n");
|
||||
scanf ("%d", &un_eleve.note);
|
||||
write (fd, &un_eleve, sizeof(eleve) );
|
||||
i = i + 1;
|
||||
}
|
||||
ret = lseek(fd, SEEK_SET, 0);
|
||||
if (ret==-1)
|
||||
perror ("prob lseek");
|
||||
printf ("la nouvelle position est %d\n", ret);
|
||||
i = 0;
|
||||
while(i<4)
|
||||
{
|
||||
read (fd, &un_eleve, sizeof(eleve));
|
||||
printf ("le nom et la note de l’élève sont %s, %d\n",
|
||||
un_eleve.nom,
|
||||
un_eleve.note);
|
||||
i = i + 1;
|
||||
}
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
Énoncé
|
||||
|
||||
Écrire :
|
||||
|
||||
- une fonction, nommée f1, se contentant d’afficher « bonjour » (elle ne possédera aucun argument, ni valeur de retour) ;
|
||||
- une fonction, nommée f2, qui affiche « bonjour » un nombre de fois égal à la valeur reçue en argument (int) et qui ne renvoie aucune valeur ;
|
||||
- une fonction, nommée f3, qui fait la même chose que f2, mais qui, de plus, renvoie la valeur (int) 0.
|
||||
|
||||
Écrire un petit programme appelant successivement chacune de ces 3 fonctions, après les avoir convenablement déclarées (on ne fera aucune hypothèse sur les emplacements relatifs des différentes fonctions composant le fichier source).
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// Function declaration
|
||||
|
||||
void f1();
|
||||
void f2(int nombreDeFoisBonjour);
|
||||
int f3(int nombreDeFoisBonjour);
|
||||
|
||||
int main() {
|
||||
f1();
|
||||
f2(3);
|
||||
f3(2);
|
||||
}
|
||||
|
||||
// Fonction definition
|
||||
|
||||
void f1(){
|
||||
std::cout << "Bonjour \n" << std::ends;
|
||||
}
|
||||
|
||||
void f2(int nombreDeFoisBonjour){
|
||||
|
||||
for(int i = 0; i < nombreDeFoisBonjour; i++){
|
||||
std::cout << "Bonjour f2 \n" << std::ends;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int f3(int nombreDeFoisBonjour){
|
||||
|
||||
for(int i = 0; i < nombreDeFoisBonjour; i++){
|
||||
std::cout << "Bonjour f3 \n" << std::ends;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
Énoncé
|
||||
Quels résultats fournira ce programme :
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
int n = 10, q = 2;
|
||||
//int main()
|
||||
main()
|
||||
{
|
||||
int fct(int);
|
||||
void f(void);
|
||||
int n = 0, p = 5;
|
||||
n = fct(p);
|
||||
cout << "A : dans main, n = " << n << " p = " << p
|
||||
<< " q = " << q << "\n";
|
||||
f();
|
||||
}
|
||||
int fct(int p)
|
||||
{
|
||||
int q;
|
||||
q = 2 * p + n;
|
||||
cout << "B : dans fct, n = " << n << " p = " << p
|
||||
<< " q = " << q << "\n";
|
||||
return q;
|
||||
}
|
||||
void f(void)
|
||||
{
|
||||
int p = q * n;
|
||||
cout << "C : dans f, n = " << n << " p = " << p
|
||||
<< " q = " << q << "\n";
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Résultat :
|
||||
|
||||
B : dans fct, n = 10 p = 5 q = 20
|
||||
A : dans main, n = 20 p = 5 q = 2
|
||||
C : dans f, n = 10 p = 20 q = 2
|
||||
|
||||
Un Warning avec le code tel quel tous de même :
|
||||
|
||||
main() -> int main()
|
||||
|
||||
*/
|
||||
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
Énoncé
|
||||
|
||||
Écrire une fonction qui reçoit en arguments 2 nombres flottants et un caractère, et qui fournit un résultat correspondant à l’une des 4 opérations appliquées à ses deux premiers arguments, en fonction de la valeur du dernier, à savoir : addition pour le caractère +, soustraction pour -, multiplication pour * et division pour / (tout autre caractère que l’un des 4 cités sera interprété comme une addition). On ne tiendra pas compte des risques de division par zéro.
|
||||
|
||||
Écrire un petit programme (main) utilisant cette fonction pour effectuer les 4 opérations sur les 2 nombres fournis en donnée.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// Function declaration
|
||||
|
||||
void fonction1(float float1, float float2, char char1);
|
||||
|
||||
int main(){
|
||||
|
||||
float float1;
|
||||
float float2;
|
||||
char char1;
|
||||
|
||||
cout<<"Tapez un premier entier : "; cin>>float1;
|
||||
cout<<"Tapez un second entier : "; cin>>float2;
|
||||
cout<<"Tapez l'opérations voulu : "; cin>>char1;
|
||||
|
||||
fonction1(float1, float2, char1);
|
||||
|
||||
}
|
||||
|
||||
// Fonction definition
|
||||
|
||||
void fonction1(float float1, float float2, char char1){
|
||||
|
||||
switch (char1)
|
||||
{
|
||||
case '+':
|
||||
std::cout << float1 + float2 << std::ends;
|
||||
std::cout << "\n" << std::ends;
|
||||
break;
|
||||
case '-':
|
||||
std::cout << float1 - float2 << std::ends;
|
||||
std::cout << "\n" << std::ends;
|
||||
break;
|
||||
case '*':
|
||||
std::cout << float1 * float2 << std::ends;
|
||||
std::cout << "\n" << std::ends;
|
||||
break;
|
||||
case '/':
|
||||
std::cout << float1 / float2 << std::ends;
|
||||
std::cout << "\n" << std::ends;
|
||||
break;
|
||||
default:
|
||||
std::cout << "nique ta mère \n" << std::ends;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
|
||||
Énoncé
|
||||
|
||||
Transformer le programme (fonction + main) écrit dans l’exercice précédent de manière que la fonction ne dispose plus que de 2 arguments, le caractère indiquant la nature de l’opération à effectuer étant précisé, cette fois, à l’aide d’une variable globale.
|
||||
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// variable globale
|
||||
|
||||
char operateur;
|
||||
|
||||
// Function declaration
|
||||
|
||||
void fonction1(float float1, float float2);
|
||||
|
||||
int main(){
|
||||
|
||||
float float1;
|
||||
float float2;
|
||||
|
||||
cout<<"Tapez un premier entier : "; cin>>float1;
|
||||
cout<<"Tapez un second entier : "; cin>>float2;
|
||||
cout<<"Tapez l'opérations voulu : "; cin>>::operateur;
|
||||
|
||||
fonction1(float1, float2);
|
||||
|
||||
}
|
||||
|
||||
// Fonction definition
|
||||
|
||||
void fonction1(float float1, float float2){
|
||||
|
||||
switch (::operateur)
|
||||
{
|
||||
case '+':
|
||||
std::cout << float1 + float2 << std::ends;
|
||||
std::cout << "\n" << std::ends;
|
||||
break;
|
||||
case '-':
|
||||
std::cout << float1 - float2 << std::ends;
|
||||
std::cout << "\n" << std::ends;
|
||||
break;
|
||||
case '*':
|
||||
std::cout << float1 * float2 << std::ends;
|
||||
std::cout << "\n" << std::ends;
|
||||
break;
|
||||
case '/':
|
||||
std::cout << float1 / float2 << std::ends;
|
||||
std::cout << "\n" << std::ends;
|
||||
break;
|
||||
default:
|
||||
std::cout << "nique ta mère \n" << std::ends;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
|
||||
Énoncé
|
||||
|
||||
Écrire une fonction, sans argument ni valeur de retour, qui se contente d’afficher, à chaque appel, le nombre total de fois où elle a été appelée sous la forme :
|
||||
|
||||
appel numéro 3
|
||||
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// variable globale
|
||||
|
||||
int count = 0;
|
||||
|
||||
// Function declaration
|
||||
|
||||
void fonction1();
|
||||
|
||||
int main(){
|
||||
|
||||
char input;
|
||||
cout<<"Voulez vous appeler la fonction ? o/n : "; cin>>input;
|
||||
|
||||
while (input == 'o')
|
||||
{
|
||||
fonction1();
|
||||
cout<<"Voulez vous de nouveau appeler la fonction ? o/n : "; cin>>input;
|
||||
}
|
||||
|
||||
std::cout << "Vous avez tapez autre chose que 'o', Fin du programe \n" << std::ends;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Fonction definition
|
||||
|
||||
void fonction1(){
|
||||
::count = ::count +1;
|
||||
std::cout << "appel numéro " << ::count << "\n" << std::ends;
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
Énoncé
|
||||
|
||||
Écrire 2 fonctions à un argument entier et une valeur de retour entière permettant de préciser si l’argument reçu est multiple de 2 (pour la première fonction) ou multiple de 3 (pour la seconde fonction).
|
||||
|
||||
Utiliser ces deux fonctions dans un petit programme qui lit un nombre entier et qui précise s’il est pair, multiple de 3 et/ou multiple de 6, comme dans cet exemple (il y a deux exécutions) :
|
||||
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// variable globale
|
||||
|
||||
int count = 0;
|
||||
|
||||
// Function declaration
|
||||
|
||||
int estMultiple2(int n);
|
||||
int estMultiple3(int n);
|
||||
|
||||
int main(){
|
||||
|
||||
int nombre(0);
|
||||
cout << "Entrer un nombre : ";
|
||||
cin >> nombre;
|
||||
if (estMultiple2(nombre)) {
|
||||
cout << "il est pair\n";
|
||||
if (estMultiple3(nombre)) {
|
||||
cout << "il est multiple de 3 \n";
|
||||
cout << "il est divisible par 6\n";
|
||||
}
|
||||
}
|
||||
else if (estMultiple3(nombre)) {
|
||||
cout << "il est multiple de 3 \n";
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Fonction definition
|
||||
|
||||
int estMultiple2(int n){
|
||||
if(n % 2 == 0) return 1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
int estMultiple3(int n){
|
||||
if(n % 3 == 0) return 1;
|
||||
else return 0;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
|
||||
Énoncé
|
||||
|
||||
Écrire une fonction permettant d’ajouter une valeur fournie en argument à une variable fournie également en argument. Par exemple, l’appel (n et p étant entiers) :
|
||||
|
||||
ajouter (2*p+1, n) ;
|
||||
|
||||
ajoutera la valeur de l’expression 2*p+1 à la variable n.
|
||||
Écrire un petit programme de test de la fonction.
|
||||
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// Function declaration
|
||||
|
||||
void ajouter(int p, int n);
|
||||
|
||||
int main(){
|
||||
ajouter(2*3+1, 2);
|
||||
}
|
||||
|
||||
// Fonction definition
|
||||
|
||||
void ajouter(int p, int n){
|
||||
int toto = p + n;
|
||||
cout << toto << "\n";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user