Vous êtes sur la page 1sur 7

Ministère de l'éducation de la République de Moldova

Université technique de Moldavie


Faculté d’Ordinateur, Informatique et Microélectronique
Filière francophone “Informatique”

Programmation de l’ordinateur

Travail pratique nr.5

Thème:
Fonctions déclarées par utilisateur

Effectué par l’étudiant(e) de gr FI-211 : Ilovan Maria

Vérifié par le professeur : Rusu Viorel

Chișinau 2021
Problème 1.4

1. Calculez la moyenne arithmétique des éléments divisibles à 4 de la surface hachurée.

2. Remplacez tous les éléments de la surface non-hachurée avec des zéros.

3. Déterminez la valeur et la position des éléments maximaux de chaque ligne de la surface hachurée.
#include <stdio.h>
#include <stdlib.h>
#include<time.h>

#define N 100

void randomMat(int matrix[][N], int n) {


for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
matrix[i][j] = rand() % 20;
}

void affichageMatrice(int matrix[][N], int n) {


printf("\nLa matrice:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
printf("%3d", matrix[i][j]);
printf("\n");
}
}

void nouvelleMatrice(int matrix[][N], int *n) {


printf("La dimension de la matrice: ");
scanf("%d", n);
randomMat(matrix, *n);
affichageMatrice(matrix, *n);
}

void moyenne_ar(int matrix[][N], int n) {


float sum, cnt;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
if (matrix[i][j] % 4 == 0 && ((i + j) < n || j < n / 2)) {
sum+= matrix[i][j];
cnt++;
}
}
printf(" La moyenne arithmetique = %f", sum / cnt);
printf("\n");
}

void zero(int matrix[][N], int n) {


for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (!((i + j) < n || j < n / 2)) {
matrix[i][j] = 0;
}
}
}
printf("La matrice modifiee:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
printf("%3d", matrix[i][j]);
printf("\n");
}
}
void max(int matrix[][N], int n) {
int max = 0;
int vertical = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if ((i + j) < n || j < n / 2) {
if (matrix[i][j] > max) {
max = matrix[i][j];
vertical = j;
}
}
}
printf("L'element maximum de la %d-eme ligne est %d avec la position [%d][%d]
",i+1, max, i + 1, vertical + 1);
printf("\n");
max = 0;
vertical = 0;
}
}
int menu() {
int reponse = 0;
printf("\nChoisissez la condition:\n");
printf("1. Calculez la moyenne arithmetique des elements divisibles a 4 de la
surface hachuree.\n");
printf("2. Remplacez tous les elements de la surface non-hachuree avec des zeros.\
n");
printf("3. Determinez la valeur et la position des elements maximaux de chaque
ligne de la surface hachuree.\n");
printf("Reponse: ");
scanf("%d", &reponse);
if (1 <= reponse && reponse <= 3)
return reponse;
return 0;
}

int main() {
srand(time(NULL));
int mat[N][N] = {0};
int d;
int tache;
nouvelleMatrice(mat, &d);
while (tache = menu()) {
switch (tache) {
case 1:
moyenne_ar(mat, d);
break;
case 2:
zero(mat, d);
break;
case 3:
max(mat, d);
break;
}
}
return 0;
}
1.9 1. Calculez la moyenne arithmétique des éléments positifs de la surface hachurée.

2. Déterminez combien de fois on trouve dans la surface hachurée un certain nombre (indiqué par
l’utilisateur).

3. Calculez la somme des éléments du périmètre de la surface non-hachurée.


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

#define N 100

void affichageMatrice( int matrix[][N], int n) {


printf("\nLa matrice:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
printf("%3d", matrix[i][j]);
printf("\n");
}
}

void randomMat(int matrix[][N], int n) {


for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
matrix[i][j] = rand() % 30 - 10;
}

void nouvelleMatrice(int matrix[][N], int *n) {


printf("La dimension de la matrice: ");
scanf("%d", n);
randomMat(matrix, *n);
affichageMatrice(matrix, *n);
}

void moyenne(int matrix[][N], int n) {


float somme=0, cnt=0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
if ((j>=i)&&(i+j>=n)&&(i>=n/2)||(i+j<n)&&(i<=j)||(i>=n/2)&&(i+j<n)){
if(matrix[i][j]>=0) {

somme += matrix[i][j];
cnt++;
}
}
}
printf(" La moyenne arithmetique des elements positifs de la surface hachuree =
%f", somme / cnt);
printf("\n");
}

int Trouve(int matrix[][N], int n, int nombre){


int f=0;

for (int i = 0; i < n; i++) {


for (int j = 0; j < n; j++){
if ((j>=i)&&(i+j>=n)&&(i>=n/2)||(i+j<n)&&(i<=j)||(i>=n/2)&&(i+j<n)) {
if (matrix[i][j] == nombre){
f++;
}
}
}
}

return f;
}

void Somme_per(int matrix[][N], int n) {


int somme=0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
if (!((j>=i)&&(i+j>=n)&&(i>=n/2)||(i+j<n)&&(i<=j)||(i>=n/2)&&(i+j<n))) {
somme+= matrix[i][j];
}
}
printf(" La somme des elements du perimetre de la surface non-hachuree est
%d",somme);
printf("\n");
}

void surface_ha(int matrix[][N], int n) {


for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (!((j >= i) && (i + j >= n) && (i >= n / 2) || (i + j < n) && (i <= j)
|| (i >= n / 2) && (i + j < n))) {
matrix[i][j] = 0;
}
}
}
printf("La surface hachuree:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
printf("%3d", matrix[i][j]);
printf("\n");
}
}
void surface_non_ha(int matrix[][N], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if ((j >= i) && (i + j >= n) && (i >= n / 2) || (i + j < n) && (i <= j) ||
(i >= n / 2) && (i + j < n)) {
matrix[i][j] = 0;
}
}
}
printf("La surface non_hachuree:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
printf("%3d", matrix[i][j]);
printf("\n");
}
}

int menu() {
int reponse = 0;
printf("\nChoisissez la condition:\n");
printf("1. Calculez la moyenne arithmetique des elements positifs de la surface
hachuree.\n");
printf("2. Determinez combien de fois on trouve dans la surface hachuree un certain
nombre.\n");
printf("3. Calculez la somme des elements du perimetre de la surface non-hachuree.\
n");
printf("4. Voire la surface hachuree\n");
printf("5. Voire la surface non-hachuree\n");
printf("6. Sortie.\n");
printf("Reponse: ");
scanf("%d", &reponse);
if (1 <= reponse && reponse <= 5)
return reponse;
return 0;
}
int main() {
srand(time(NULL));
int mat[N][N] = {0};
int d,tache;
int nombre;
int fois=0;
nouvelleMatrice(mat, &d);
while (tache = menu()) {
switch (tache) {
case 1:
moyenne(mat, d);
break;
case 2: {
printf("Indiquiez un nombre\n");
scanf("%d", &nombre);
Trouve(mat, d, nombre);
fois = Trouve(mat, d, nombre);
if (fois == 0)
printf("\nLe nombre %d ne se trouve pas dans la surface hachuree \
n", nombre);
else
printf("\nLe nombre %d se trouve %d fois dans la surface hachuree\
n", nombre, fois );
}
case 3:
Somme_per(mat, d);
break;
case 4:
surface_ha(mat, d);
break;
case 5:
surface_non_ha(mat, d);
break;
}
}

return 0;
}

Conclusion:
Les fonctions C sont utilisées pour éviter de réécrire la même logique/code plusieurs fois
dans un programme. Parce que il n'y a aucune limite dans l'appel de fonctions C pour
utiliser les mêmes fonctionnalités on a créé et et appelé des differentes fonctions plusieurs
fois dans le programme, par exemple la function pour créer une matrice, et de la même
manière on a utilisee les autres fonctions pour élaborer certaines tâches du problème
donné.

Vous aimerez peut-être aussi