This document contains the code for 3 Pascal programs related to numerical analysis exercises:
1. The first program calculates the area under a curve using the rectangle and trapezoid methods, outputting the results to a file.
2. The second program takes user input of phrases and encrypts each phrase by shifting the letters based on their position in the phrase. The original and encrypted phrases are written to files.
3. The third program takes a matrix as input and finds the longest consecutive sequence of nonzero elements in each row, recording the results. It identifies the longest overall sequence and outputs the details.
Travaux Dirigés : Algorithmique et Structure de DonnéesAnass41
Introduction....................................................................................
Les variables...................................................................................
1. Objectif ....................................................................................
2. Déclaration ...............................................................................
3. Type des variables ....................................................................
4. L’instruction d’affectation .......................................................
Les variables ....................................................................................
Correction TD 1 ...............................................................................
Les structures de contrôle ................................................................
1. Objectif ....................................................................................
2. Les structures de contrôle: .......................................................
3. Les structures itératives ............................................................
Les structures de contrôle ................................................................
Correction TD 2 ...............................................................................
Les tableaux à une dimension ..........................................................
1. Objectif ....................................................................................
2. Définition .................................................................................
3. Exemple ...................................................................................
4. Algorithmes de tri ....................................................................
Les tableaux à une dimension.......................................................
Les tableaux à deux dimensions ......................................................
1. Objectif ....................................................................................
2. Définition .................................................................................
3. Exemple ...................................................................................
Les tableaux à deux dimensions ......................................................
Les fonctions ....................................................................................
Objectif ............................................................................................
Les enregistrements .........................................................................
Les fichiers séquentiels ....................................................................
Travaux Dirigés : Algorithmique et Structure de DonnéesAnass41
Introduction....................................................................................
Les variables...................................................................................
1. Objectif ....................................................................................
2. Déclaration ...............................................................................
3. Type des variables ....................................................................
4. L’instruction d’affectation .......................................................
Les variables ....................................................................................
Correction TD 1 ...............................................................................
Les structures de contrôle ................................................................
1. Objectif ....................................................................................
2. Les structures de contrôle: .......................................................
3. Les structures itératives ............................................................
Les structures de contrôle ................................................................
Correction TD 2 ...............................................................................
Les tableaux à une dimension ..........................................................
1. Objectif ....................................................................................
2. Définition .................................................................................
3. Exemple ...................................................................................
4. Algorithmes de tri ....................................................................
Les tableaux à une dimension.......................................................
Les tableaux à deux dimensions ......................................................
1. Objectif ....................................................................................
2. Définition .................................................................................
3. Exemple ...................................................................................
Les tableaux à deux dimensions ......................................................
Les fonctions ....................................................................................
Objectif ............................................................................................
Les enregistrements .........................................................................
Les fichiers séquentiels ....................................................................
//g++ -o simpleVector.exe simpleVector.cpp
#include
#include
#include
using namespace std;
/******************************************************
* Template class named SimpleVector
* An array that can hold any specified
* data type. Use a dynamic array.
******************************************************/
template
class SimpleVector
{
public:
//default constructor
SimpleVector();
//constructor with size of array
SimpleVector(int size);
//copy constructor
SimpleVector(const SimpleVector& object);
//setter method
void SetArray(int size);
//getter method
void ShowArray(int size);
//destructor
void FreeMemory();
//accessor method
int GetSizeOfArray();
//getter method
T GetElementAt(int index);
//Overload the [] operator. The argument is a subscript.
//This function returns a reference
//to the element in the array indexed by the subscript.
T operator [] (int subscript);
private:
//private memeber variable
T *array; //to dynamically allocate an array
T *copy;
};
//These function are going to be used in switch statement
//in order to test each case(integer, double, string).
void caseOne(int userInput, int size);
void caseTwo(int userInput, int size);
void caseThree(int userInput, int size);
int main() {
int userInput;
int size;
char keepInput;
do {
cout << \"What type of data do you want?\ \";
cout <<\"1. intger\ \";
cout <<\"2. double\ \";
cout <<\"3. strings\ \";
cin >> userInput;
cout << \"Enter the number of data \";
cin >> size;
switch(userInput) {
case 1:
{
caseOne(userInput, size);
break;
}
case 2:
{
caseTwo(userInput, size);
break;
}
case 3:
{
caseThree(userInput, size);
break;
}
default:
cout << \"invalid input\";
}
cout << \"\ Do you want to enter the data again?(Y/N)\ \";
cin >> keepInput;
} while(toupper(keepInput) == \'Y\');
return 0;
}
//This funciton is called in the switch satatement
//The purpose of this funtion is test SimpleVecor calss
//funciton for \'int\' type.
void caseOne(int userInput, int size) {
SimpleVectorintegerData(size);
integerData.SetArray(size);
integerData.ShowArray(size);
cout << \"\ Enter an index to retrieve the data\ \";
cin >> userInput;
cout << \"\ Getting an element of array by \ \";
cout << \"1. GetElementAt function : \";
cout << integerData.GetElementAt(userInput);
cout << \"\ 2. overloaded operator [] : \";
cout << integerData[userInput];
cout << \"\ \ Copying the array\";
SimpleVectornewIntegerData(integerData);
newIntegerData.ShowArray(size);
newIntegerData.FreeMemory();
}
//This funciton is called in the switch satatement
//The purpose of this funtion is test SimpleVecor calss
//funciton for \'double\' type.
void caseTwo(int userInput, int size) {
SimpleVectordoubleData(size);
doubleData.SetArray(size);
doubleData.ShowArray(size);
cout << \"\ Enter an index to retrieve the data\ \";
cin >> userInput;
cout << \"\ Getting an element of array by \ \";
cout << \"1. GetElementAt function : \";
cout << doubleData.GetElementAt(userInput);
cout << \"\ 2. overloaded operator [] : \";
cout << doubleData[.
please help me with this and explain in details also in the first qu.pdfnewfaransportsfitnes
please help me with this and explain in details also in the first question modify them both please
trap1 and trap2:
Q1 Consider the below omp_trap1.c implantation, modify the code so that: i. The time used by
the parallel block is timed using the OpenMP function omp_get_wtime(). The syntax is double
omp_get_wtime ( void ) It returns the number of seconds that have elapsed since some time in
the past. ii. Now on a system with at least two cores, time the program with a. one thread and a
large value of n, and b. two threads and the same value of n. Explain what happens? Then Do the
same measurements for the omp_trap2.c code.
1. How does its performance compare with the performance of the omp_trap1.c ?
2. Explain your answers.
3. provide with your answers the code and detailed screenshots showing how did you compile
and run the code and times for each run:
/* File: omp_trap1.c * Purpose: Estimate definite integral (or area under curve) using trapezoidal
rule. * Input: a, b, n * Output: estimate of integral from a to b of f(x) * using n trapezoids. * *
Compile: gcc -g -Wall -fopenmp -o omp_trap1 omp_trap1.c * Usage: ./omp_trap1 * * Notes: *
1. The function f(x) is hardwired. * 2. In this version, each thread explicitly computes the
integral over its assigned subinterval, a critical directive is used for the global sum. * 3. This
version assumes that n is evenly divisible by the number of threads #include #include #include
#include void Usage(char* prog_name); double f(double x); /* Function we're integrating */
double Local_trap ( double a , double b , i n t n ) ; int main(int argc, char* argv[]) { double
global_result = 0.0; /* Store result in global_result */ double a, b; /* Left and right endpoints */
int n; /* Total number of trapezoids */ int thread_count; if (argc != 2) Usage(argv[0]);
thread_count = strtol(argv[1], NULL, 10); printf("Enter a, b, and n\n"); scanf("%lf %lf %d", &a,
&b, &n); if (n % thread_count != 0) Usage(argv[0]); double global_result = 0.0; # pragma omp p
a r a l l e l num_threads ( t h r e a d _ c o u n t ) { # pragma omp c r i t i c a l global_result +=
Local_trap ( double a , double b , i n t n ) ; } printf("With n = %d trapezoids, our estimate\n", n);
printf("of the integral from %f to %f = %.14e\n", a, b, global_result); return 0; } /* main */ /*----
---------------------------------------------------------------- * Function: Usage * Purpose: Print
command line for function and terminate * In arg: prog_name */ void Usage(char* prog_name) {
fprintf(stderr, "usage: %s \n", prog_name); fprintf(stderr, " number of trapezoids must be evenly
divisible by\n"); fprintf(stderr, " number of threads\n"); exit(0); } /* Usage */ /*---------------------
--------------------------------------------- * Function: f * Purpose: Compute value of function to be
integrated * Input arg: x * Return val: f(x) */ double f(double x) { double return_val; return_val
= x*x; return return_val; } /* f */ /*------------------------------------------.
Lab Assignment 4 CSE330 Spring 2014 Skeleton Code for ex.docxMARRY7
/* Lab Assignment 4 CSE330 Spring 2014 */
/* Skeleton Code for ex0 of lab4 */
/* No code will be provided for ex1 of lab4 */
#include <stdio.h> /* for NULL */
#include <ctype.h> /* for atoi() */
#include <errno.h> /* for perror() */
#include <signal.h> /* for sigvec() etc. */
#include <sys/types.h> /* for <arpa/inet.h> */
#include <sys/socket.h> /* for PF_INET, etc. */
#include <netinet/in.h> /* for struct sockaddr_in */
#include <arpa/inet.h> /* for inet_addr() */
#include <sys/time.h>
#include "lab4.h"
/* this is in netinet/in.h; included here for reference only.
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
*/
/***************************************************************************/
#define LINESIZE 80
#define TYPE0TIMEOUT 3
#define TYPE1TIMEOUT 30
/* You should give a long timeout, like 30sec, otherwise */
/* duplicated responses from the server may cause some problem */
#define MAXRETRY 3
/***************************************************************************/
static char *RCSId="$Id: client2.c,v 4 2014/04/20 03:15:07 cse3300 Exp $";
/***************************************************************************/
/* some functions you may find useful if you implement them */
extern int stringToAddress(char *s, struct sockaddr_in *a);
extern int msgok(LABMSG *);
extern u_short msgchecksum(u_short *);
extern void alarmCatcher(void);
extern int tries; /* for retransmission routines */
int numtries;
/***** this will die ****/
FILE *logFile;
void die(char *s)
{
perror(s);
exit(2);
}
void startTimer(int secs)
{
alarm(secs);
}
void stopTimer(void)
{
alarm(0);
}
/* should change it by yourself if needed!!! */
void printResponse(LABMSG *mp, int ck)
{
int type;
mp->courseEtc = ntohs(mp->courseEtc);
type = ( (mp->courseEtc & MESSAGETYPE) !=0)?1:0;
printf("course=%d, Type=%d\n", mp->courseEtc&0x3fff,type);
if (ntohl(mp->cookie) != ck)
printf("Cookies don't match: sent %x received %x\n",mp->cookie,ck);
if (mp->courseEtc & REQRESP)
printf("response ");
else {
printf("request??\n");
return;
}
mp->result = ntohs(mp->result);
/*printf(" result = %x: ",mp->result);*/
if (mp->result&TRANSOUTCOME) { /* Check outcome */
printf("error: ");
switch (mp->result & 0x7fff) {
case ERROR_CHECKSUM:
printf("checksum failure\n");
break;
case ERROR_SYNTAX:
printf("syntax error\n");
break;
case ERROR_UNKSSN:
printf("unknown SSN %d\n", ntohl(mp->reqSSN) );
break;
case ERROR_SERVER:
printf("Unspecified Server Error\n");
default:
printf("Unknown Error.\n");
} /* case switch */
} else { /* successful transaction */
if(type)printf("Test succeeded.");
if (!type) /* Type 0 -- print SSN and Response */
printf(": %d -> %d\n", ntohl(mp->reqSSN), mp->result&0x7fff);
else
printf("\n"); /* XXX print number of responses */
}
}
/*-----------------------------------*/
/* added by ZXC:
this fun ...
Q1 Consider the below omp_trap1.c implantation, modify the code so t.pdfabdulrahamanbags
Q1 Consider the below omp_trap1.c implantation, modify the code so that: i. The time used by
the parallel block is timed using the OpenMP function omp_get_wtime(). The syntax is double
omp_get_wtime ( void ) It returns the number of seconds that have elapsed since some time in
the past. ii. Now on a system with at least two cores, time the program with a. one thread and a
large value of n, and b. two threads and the same value of n. Explain what happens? Then Do the
same measurements for the omp_trap2.c code.
1. How does its performance compare with the performance of the omp_trap1.c ?
2. Explain your answers.
3. provide with your answers the code and detailed screenshots showing how did you compile
and run the code and times for each run:
/* File: omp_trap1.c * Purpose: Estimate definite integral (or area under curve) using trapezoidal
rule. * Input: a, b, n * Output: estimate of integral from a to b of f(x) * using n trapezoids. * *
Compile: gcc -g -Wall -fopenmp -o omp_trap1 omp_trap1.c * Usage: ./omp_trap1 * * Notes: *
1. The function f(x) is hardwired. * 2. In this version, each thread explicitly computes the
integral over its assigned subinterval, a critical directive is used for the global sum. * 3. This
version assumes that n is evenly divisible by the number of threads #include #include #include
#include void Usage(char* prog_name); double f(double x); /* Function we're integrating */
double Local_trap ( double a , double b , i n t n ) ; int main(int argc, char* argv[]) { double
global_result = 0.0; /* Store result in global_result */ double a, b; /* Left and right endpoints */
int n; /* Total number of trapezoids */ int thread_count; if (argc != 2) Usage(argv[0]);
thread_count = strtol(argv[1], NULL, 10); printf("Enter a, b, and n\n"); scanf("%lf %lf %d", &a,
&b, &n); if (n % thread_count != 0) Usage(argv[0]); double global_result = 0.0; # pragma omp p
a r a l l e l num_threads ( t h r e a d _ c o u n t ) { # pragma omp c r i t i c a l global_result +=
Local_trap ( double a , double b , i n t n ) ; } printf("With n = %d trapezoids, our estimate\n", n);
printf("of the integral from %f to %f = %.14e\n", a, b, global_result); return 0; } /* main */ /*----
---------------------------------------------------------------- * Function: Usage * Purpose: Print
command line for function and terminate * In arg: prog_name */ void Usage(char* prog_name) {
fprintf(stderr, "usage: %s \n", prog_name); fprintf(stderr, " number of trapezoids must be evenly
divisible by\n"); fprintf(stderr, " number of threads\n"); exit(0); } /* Usage */ /*---------------------
--------------------------------------------- * Function: f * Purpose: Compute value of function to be
integrated * Input arg: x * Return val: f(x) */ double f(double x) { double return_val; return_val
= x*x; return return_val; } /* f */ /*------------------------------------------------------------------ *
Function: Trap * Purpose: Use trapezoidal rule to estimate definite integral * Input args.
Number conversion program in assembly language
This program is showing the conversion technique of a 8-bit number and character.
programminghomeworkhelp.com is the leading online solution provider for C++ Programming assignments. If you are struggling with your scoring in C++ Programming Assignments, Homework or Projects then email your requirements at info@programminghomeworkhelp.com and we will ensure excellent grades. Email your C++ assignment to info@programminghomeworkhelp.com and distress yourself from the complex C++ Programming Assignments.
Notes for C++ Programming / Object Oriented C++ Programming for MCA, BCA and ...ssuserd6b1fd
C++ programming language notes for beginners and Collage students. Written for beginners. Colored graphics. Function by Function explanation with complete examples. Well commented examples. Illustrations are made available for data dealing at memory level.
02 of 02 parts,
Get Part 1 from https://www.slideshare.net/ArunUmrao/introduction-to-c-programming-for-beginners-by-arunumrao-1-of-2
Introduction to c++ programming, Introduction to c++ programming, Introduction to c++ programming, Introduction to c++ programming,
ONLY EDIT CapacityOptimizer.java, Simulator.java, and TriangularD.pdfvinodagrawal6699
ONLY EDIT CapacityOptimizer.java, Simulator.java, and TriangularDistribution.java (add
exception handling only)
Simulator.java
/**
* @author Mehrdad Sabetzadeh, University of Ottawa
*
*/
public class Simulator {
/**
* Length of car plate numbers
*/
public static final int PLATE_NUM_LENGTH = 3;
/**
* Number of seconds in one hour
*/
public static final int NUM_SECONDS_IN_1H = 3600;
/**
* Maximum duration a car can be parked in the lot
*/
public static final int MAX_PARKING_DURATION = 8 * NUM_SECONDS_IN_1H;
/**
* Total duration of the simulation in (simulated) seconds
*/
public static final int SIMULATION_DURATION = 24 * NUM_SECONDS_IN_1H;
/**
* The probability distribution for a car leaving the lot based on the duration
* that the car has been parked in the lot
*/
public static final TriangularDistribution departurePDF = new TriangularDistribution(0,
MAX_PARKING_DURATION / 2,
MAX_PARKING_DURATION);
/**
* The probability that a car would arrive at any given (simulated) second
*/
private Rational probabilityOfArrivalPerSec;
/**
* The simulation clock. Initially the clock should be set to zero; the clock
* should then be incremented by one unit after each (simulated) second
*/
private int clock;
/**
* Total number of steps (simulated seconds) that the simulation should run for.
* This value is fixed at the start of the simulation. The simulation loop
* should be executed for as long as clock < steps. When clock == steps, the
* simulation is finished.
*/
private int steps;
/**
* Instance of the parking lot being simulated.
*/
private ParkingLot lot;
/**
* Queue for the cars wanting to enter the parking lot
*/
private Queue incomingQueue;
/**
* Queue for the cars wanting to leave the parking lot
*/
private Queue outgoingQueue;
/**
* @param lot is the parking lot to be simulated
* @param steps is the total number of steps for simulation
*/
public Simulator(ParkingLot lot, int perHourArrivalRate, int steps) {
throw new UnsupportedOperationException("This method has not been implemented yet!");
}
/**
* Simulate the parking lot for the number of steps specified by the steps
* instance variable
* NOTE: Make sure your implementation of simulate() uses peek() from the Queue interface.
*/
public void simulate() {
throw new UnsupportedOperationException("This method has not been implemented yet!");
}
public int getIncomingQueueSize() {
throw new UnsupportedOperationException("This method has not been implemented yet!");
}
}
CapacityOptimizer.java
public class CapacityOptimizer {
private static final int NUM_RUNS = 10;
private static final double THRESHOLD = 5.0d;
public static int getOptimalNumberOfSpots(int hourlyRate) {
throw new UnsupportedOperationException("This method has not been implemented yet!");
}
public static void main(String args[]) {
StudentInfo.display();
long mainStart = System.currentTimeMillis();
if (args.length < 1) {
System.out.println("Usage: java CapacityOptimizer ");
System.out.println("Example: java CapacityOptimizer 11");
return;
}.
Presentation of features already voted into C++20 Standard Draft in Toronto, Albuquerque, and Jacksonville ISO C++ Committee Meetings as well as the overview of other really promising proposals that have high chances to arrive in C++20.
Similar to Sujet bac info 2013 g1, g2 et g3 avec correction (20)
How to Make a Field invisible in Odoo 17Celine George
It is possible to hide or invisible some fields in odoo. Commonly using “invisible” attribute in the field definition to invisible the fields. This slide will show how to make a field invisible in odoo 17.
Operation “Blue Star” is the only event in the history of Independent India where the state went into war with its own people. Even after about 40 years it is not clear if it was culmination of states anger over people of the region, a political game of power or start of dictatorial chapter in the democratic setup.
The people of Punjab felt alienated from main stream due to denial of their just demands during a long democratic struggle since independence. As it happen all over the word, it led to militant struggle with great loss of lives of military, police and civilian personnel. Killing of Indira Gandhi and massacre of innocent Sikhs in Delhi and other India cities was also associated with this movement.
Model Attribute Check Company Auto PropertyCeline George
In Odoo, the multi-company feature allows you to manage multiple companies within a single Odoo database instance. Each company can have its own configurations while still sharing common resources such as products, customers, and suppliers.
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Introduction to AI for Nonprofits with Tapp NetworkTechSoup
Dive into the world of AI! Experts Jon Hill and Tareq Monaur will guide you through AI's role in enhancing nonprofit websites and basic marketing strategies, making it easy to understand and apply.
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
5. Corrigés Bac pratique Informatique
Section Sciences de l'informatique
23 mai 2013(8h)
Jeudi 23 mai 2013 à 8h
program aires_23_05_2013_8h;
uses wincrt;
const
a=0;
b=3;
type
tenreg= record
rect:real;
trap:real;
nb:integer;
end;
tf=file of tenreg;
var
f:tf;
v:tenreg;
eps:real;
rep:integer;
{**************************************************************}
function fct (x:real):real;
begin
fct:=sqr(x);
end;
{*************************************************************}
procedure epsilon (var eps:real);
begin
repeat
write(' taper une valeur pour epsilon:');readln(eps);
until (eps>=0.0001) and (eps<=0.1);
end;
{*************************************************************}
function rectangle ( n:integer):real;
var
x, h,S:real;
i:integer;
begin
S:=0;
h:=(ba)/n;
x:=(a+h/2);
for i:=1 to n do
begin
S:=S+fct(x);
1/9
Correction proposée par
Mr Mejdi Bechikh & Mme Hajer NEFZAOUI
Devoirsetexamenssur:www.kiteb.net
8. Corrigés Bac pratique Informatique
Section Sciences de l'informatique
23 mai 2013(10h)
Jeudi 23 mai 2013 à 10h
program seance2_23_05_2013_10h;
uses wincrt;
var
f,fc:text;
n:integer;
procedure saisie (var n: integer);
begin
repeat
write(' taper n:'); readln(n);
until (n<=50);
end;
function verif (ch:string):boolean;
var
i:integer;
begin
i:=0;
repeat
i:=i+1;
until (not(upcase(ch[i]) in ['A'..'Z',' ']))or(i=length(ch));
verif:=(upcase(ch[i]) in ['A'..'Z',' '])and(ch[1]<>'
')and(ch[length(ch)]<>' ')and(pos(' ',ch)=0);
end;
procedure saisie_ph( var ph:string);
begin
repeat
write('Taper une phrase :');readln(ph);
until (verif(ph));
end;
function crypter (mot:string; p:integer):string;
var
motc:string;
c:char;
i:integer;
begin
motc:='';
for i:=1 to length(mot) do
begin
if (mot[i] in ['A'..'Z']) then
4/9
Correction proposée par
Mr Mejdi Bechikh & Mme Hajer NEFZAOUI
Devoirsetexamenssur:www.kiteb.net
11. Corrigés Bac pratique Informatique
Section Sciences de l'informatique
23 mai 2013(14h)
Jeudi 23 mai 2013 à 14h
program seance3_23_05_2013_14h;
uses wincrt;
type
mat= array[1..24,1..24]of integer;
tenreg=record
nl,ICD,ICF:integer;
end;
tab= array [1..24] of tenreg;
VAR
L,C ,k:integer;
M:mat;
T:tab;
F:text;
procedure remplir (var L,c:integer ; var M:mat);
var
i,j:integer;
begin
repeat
write(' taper L:');readln(l);
write(' taper c:');readln(c);
until (l in [3..24]) and (c in [3..24]);
for i:=1 to l do
begin
for j:=1 to c do
Repeat
write('M[',i,',',j,']='); readln(M[i,j]);
Until (m[i,j]<>0);
end;
end;
procedure Somme (m:mat; lig,col,c:integer; var Fin:integer);
var
i,j,s:integer;
begin
Fin:=0; S:=0; i:=lig; j:=col;
repeat
s:=s+m[lig,j];
j:=j+1;
until (S=0) or (j >c);
if (s=0) then fin:=j1;
end;
7/9
Correction proposée par
Mr Mejdi Bechikh & Mme Hajer NEFZAOUI
Devoirsetexamenssur:www.kiteb.net