0% ont trouvé ce document utile (0 vote)
3 vues4 pages

SMA3 M6 CF Janv-2017 Solution

Ce document est un énoncé d'examen pour un cours d'informatique à l'Université Cadi Ayyad, comprenant des exercices sur la programmation en C. Les exercices incluent des questions sur les variables, les fonctions mathématiques, la gestion des erreurs, et la manipulation de matrices. Les étudiants doivent répondre en utilisant des feuilles fournies et respecter les consignes de rédaction.

Transféré par

yqaboul
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues4 pages

SMA3 M6 CF Janv-2017 Solution

Ce document est un énoncé d'examen pour un cours d'informatique à l'Université Cadi Ayyad, comprenant des exercices sur la programmation en C. Les exercices incluent des questions sur les variables, les fonctions mathématiques, la gestion des erreurs, et la manipulation de matrices. Les étudiants doivent répondre en utilisant des feuilles fournies et respecter les consignes de rédaction.

Transféré par

yqaboul
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

UNIVERSITE CADI AYYAD

FACULTE DES SCIENCES


SEMLALIA-MARRAKECH

Nom Prénom Note

…………………………….. ……………………………..
N° de table N° Apogée

…………………………….. ………………………………

Filière :SMA-S3 Epreuve de :Informatique 3 Date :17/01/2017


8h 10h

N.B : Chaque étudiant doit rédiger ses réponses dans la feuille de l’épreuve. Le nombre
disponible des feuilles des épreuves est très limité alors il est presque impossible de la
changer, sauf dans le cas jugé favorable par le professeur surveillant.

Exercice 1: 4 pts
1- Quels sont les valeurs de x et y après les instructions suivantes : 1pt

int x = 12 ; x= 14
++x ; y= 13
int y=x++;

2- Quelle est la valeur de la variable Z après les deux instructions suivantes : 1pt

int x = 30, y = 20;


int Z = (x > y) ? (y > 10) ? y % 10 : y * 2 : x ; Z= 0

3- Le code suivant a pour rôle de permettre à un utilisateur de remplir un tableau


de deux dimensions, mais il contient des erreurs. Quelles sont-elles ? Répondre
par réécrire le code correct. 2pts

int tab[2][3];i,j; int tab[2][3],i,j;


for(i=0,i<2,i++) { for(i=0;i<2;i++) {
j==0; j=0;
do { do {
print("tab[%][]= ",i,j), printf("tab[%d][%d]= ",i,j);
scan("%d", tab[i][j]), j++; scanf("%d", &tab[i][j]); j++;
} while(j<3) } while(j<3);
} }

Exercice 2: 8pts
On veut réaliser une application qui permet d’effectuer un ensemble d’opérations
mathématiques. Cette application sera découpée en fonctions suivantes :
1- Ecrire une fonction, appelée SOMME qui permet de calculer la somme de deux
nombres réels. 1pt

double SOMME(double x, double y)


{
return x+y;
}

2- Ecrire une fonction, appelée DIVISION, qui permet de calculer la division de


deux entiers (discuter les cas possibles). 1.5pts

void DIVISION(int x, int y)


{
if(y==0) printf("Division Impossible");
else printf("La division est: %.2lf",(double)x/y);
}

3- Ecrire une fonction, appelée PGCD, qui permet de calculer le plus grand
commun diviseur de deux entiers. 1.5pts

int PGCD(int x, int y)


{
while(x!=y){
if(x>y) x=x-y;
else y=y-x;
}
return x;
} 4- Ecrire une fonction, appelée PARFAIT, qui permet de dire si un entier est parfait ou non. Un
entier est dit parfait s’il égale la somme de ses diviseurs.

4- Ecrire une fonction, appelée PARFAIT, qui permet de dire si un entier est parfait
ou non. Un entier est dit parfait s’il égale la somme de ses diviseurs. 1.5pts
void PARFAIT(int x)
{
int i,s=0;
for(i=1;i<=x/2;i++)
{
if(x%i==0) s+=i;
}
if (s==x) printf("%d est parfait",x);
else printf("%d n'est pas parfait",x);
}
5- Dans la fonction main(), écrire un menu rassemblant toutes ces fonctions en les
numérotant. L’utilisateur doit choisir le numéro correspondant à l’opération
qu’il veut effectuer et le programme lui retourne le résultat trouvé. Les
paramètres de l’opération à effectuer sont à saisir par l’utilisateur. 2.5pts

int main()
{
int ch; int x,y; double a,b;
printf("***** Menu des Operations *****\n");
printf("* 1---> SOMME de 2 entiers *\n");
printf("* 2---> DIVISION de 2 reels *\n");
printf("* 3---> PGCD de 2 entiers *\n");
printf("* 4---> Test PARFAIT *\n");
printf("\n Choisir le numero correspondant a l'operation: "); scanf("%d",&ch);
switch (ch){
case 1:
printf("Saisir le 1er nombre: ");scanf("%lf",&a); printf("Saisir le 2eme nombre: ");scanf("%lf",&b);
printf("La somme de %.lf et %.lf est: %.lf",a,b,SOMME(a,b));
break;
case 2:
printf("Saisir le 1er nombre: ");scanf("%d",&x); printf("Saisir le 2eme nombre: ");scanf("%d",&y);
DIVISION(x,y);
break;
case 3:
printf("Saisir le 1er nombre: ");scanf("%d",&x); printf("Saisir le 2eme nombre: ");scanf("%d",&y);
printf("Le PGCD de %d et %d est: %d",x,y,PGCD(x,y));
break;
case 4:
printf("Saisir le 1er nombre: ");scanf("%d",&x); PARFAIT(x);
break;
default:
printf("ERROR");
}
return 0;

Exercice 3:

1- Ecrire une fonction qui permet de convertir un entier décimal en représentation


binaire. 2pts

void Conv_Bin(int n)
{
int T1[100], i=0,j;
do {
T1[i]=n%2; n=n/2; i++;
}while(n!=0);
for(j=i-1;j>=0;j--)
printf("%d",T1[j]);
}
2- Ecrire un programme qui permet de calculer le nombre de 0 existant dans une
matrice après l’avoir remplit. Ce programme doit calculer la transposé de cette
matrice et l’afficher.
6pts = 1 :remp+ 1 :cal zero+ 1.5 :cal tran+ 1.5 :affich+ 1 :struc générale

#include <stdio.h>
#include <stdlib.h>

int main(){
int Mat[50][50], Mat_Tran[50][50];
int i,j,N,M,Nbre_Zero=0;
printf("Nbre de lignes= ");scanf("%d",&N);printf("Nbre de colonnes= ");scanf("%d",&M);
// Les calculs
for(i=0;i<N;i++)
for(j=0;j<M;j++) {
printf("Mat[%d][%d]= ",i,j); scanf("%d",&Mat[i][j]);// Remplissage
if(Mat[i][j]==0) Nbre_Zero++;// calcul du nombre des zéros
Mat_Tran[j][i]=Mat[i][j];//Calcul de la transposée
}
printf("La matrice saisie\n");
for(i=0;i<N;i++) {
for(j=0;j<M;j++)
printf(" %d",Mat[i][j]);
printf("\n");
}
printf("Le nbre de zero dans cette matrice est: %d",Nbre_Zero);
printf("\nLa matrice transposee est:\n");
for(i=0;i<M;i++) {
for(j=0;j<N;j++)
printf(" %d",Mat_Tran[i][j]);
printf("\n");
}
return 0;
}

Vous aimerez peut-être aussi