0% ont trouvé ce document utile (0 vote)
52 vues7 pages

TD4 Correction

Le document présente un cours sur l'algorithmique et la programmation en C, axé sur l'utilisation des tableaux et des pointeurs. Il contient plusieurs exercices pratiques, incluant la saisie et l'affichage de tableaux, le calcul de sommes et de moyennes, ainsi que des opérations sur des matrices. Les exercices illustrent à la fois l'allocation statique et dynamique de mémoire en C.

Transféré par

qyxzq6bhw5
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

Thèmes abordés

  • Saisie utilisateur,
  • Valeurs négatives,
  • Tests unitaires,
  • Conditions,
  • Déploiement,
  • Boucles,
  • Environnement de développement,
  • Allocation statique,
  • Gestion de mémoire,
  • Valeurs positives
0% ont trouvé ce document utile (0 vote)
52 vues7 pages

TD4 Correction

Le document présente un cours sur l'algorithmique et la programmation en C, axé sur l'utilisation des tableaux et des pointeurs. Il contient plusieurs exercices pratiques, incluant la saisie et l'affichage de tableaux, le calcul de sommes et de moyennes, ainsi que des opérations sur des matrices. Les exercices illustrent à la fois l'allocation statique et dynamique de mémoire en C.

Transféré par

qyxzq6bhw5
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

Thèmes abordés

  • Saisie utilisateur,
  • Valeurs négatives,
  • Tests unitaires,
  • Conditions,
  • Déploiement,
  • Boucles,
  • Environnement de développement,
  • Allocation statique,
  • Gestion de mémoire,
  • Valeurs positives

Cours : Algorithmique et Programmation C – 1

Profs : L. HAMAMI
Filière : GI-MSD

TD N°4 : Les Tableaux

Allocation statique et Allocation dynamique

Objectifs

 Utilisation et manipulation des tableaux en C.


 Utilisation et manipulation des pointeurs.
 Distinction entre l’allocation statique et l’allocation dynamique.

Exercice 1 : Ecrire un programme en C qui saisit 10 entiers stockées dans d'un tableau « T »,
remplit le tableau par des valeurs entrées au clavier et affiche le tableau. Ensuite, le programme
affichera la somme des composantes du tableau « T ».
#include <stdio.h>
int main()
{
int T[10],i,S=0;
for (i=0; i<10; i++)
{
printf("Element %d : ", i+1);
scanf("%d", &T[i]);
}
printf("\nTableau donne :\n");
for (i=0; i<10; i++)
printf("%d ", T[i]);
printf("\n");
for (i=0; i<10; i++)
S += T[i];
printf("\nSomme des elements : %d\n", S);
return 0;
}

Exercice 2 : Ecrire un programme qui demande à l'utilisateur de saisir « N » notes stockées


dans un tableau (il doit s'assurer que les notes comprises entre 0 et 20). Le programme
doit également calculer et afficher la moyenne.
#include <stdio.h>
#include <stdlib.h>
main()
{
float S, *V, Moy;
int i,N;
printf("Dimension du tableau : ");

1 2024-2025
Travaux dirigés Pr. L. HAMAMI

scanf("%d", &N );
V=(float*)malloc(N*sizeof(float));
for (i=0; i<N; i++)
{
printf("enter la note %d ", i+1);
scanf("%f",V+i);
while(V[i]<0 || V[i]>20)
{
printf("saisie incorrecte!!!, enter la note %d ",i+1);
scanf("%f",V+i);
}
S=S+V[i];
}
Moy=S/i;
printf("la moyenne est :%.2f\n", Moy);
}

Exercice 3 :
1. Ecrire un programme permettant à l’utilisateur de saisir 10 entiers, qui doivent être
stockées dans un tableau T. Une fois la saisie terminée, le programme affichera le
nombre de valeurs négatives et le nombre de valeurs positives.
main() {
int tab[10];
int i, np, n;
np=0;
n=0;
for (i=0; i<=9; i++)
{
printf("tab(%d)=", i);
scanf("%d", &tab[i]);
if (tab[i]>0)
{np=np+1;}
else if (tab[i]<0)
{n=n+1;}
}
printf("le nombre de valeur + est:%d\n ", np);
printf("le nombre de valeur - est:%d\n ", n);
}
2. Modifier le programme pour qu’il puisse nous permettre de stocker « n » valeurs dans
le tableau. La valeur de « n » est saisie par l’utilisateur.
#include <stdio.h>
#include <stdlib.h>
main()
{
int *tab;
int i, d, n, np;
printf("donner la dimension du tab ");
scanf("%d", &d);
tab=(int*)malloc(d*sizeof(int)); np=0;
n=0;

2 2024-2025
Travaux dirigés Pr. L. HAMAMI

for (i=0; i<=d-1; i++)


{
printf("tab(%d)=", i);
scanf("%d", &tab[i]);
if (*(tab+i)>0)
{np=np+1;}
else if (*(tab+i)<0)
{n=n+1;}
}
printf("le nombre de valeur + est : %d\n ", np);
printf("le nombre de valeur - est : %d\n ", n);
}

Exercice 4 : Ecrire un programme qui permet à l'utilisateur de saisir « n » entiers qui doivent
être stockés dans un tableau « Tab ». Ensuite, une valeur « N » doit être supprimée du
tableau initial (la valeur de « N » est saisie par l’utilisateur). Enfin, le programme
affichera le tableau résultant (s’il n'y a pas de valeur « N », le programme devrait
afficher le tableau initial).
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, j=0,d,N;
int *T;
printf("donner la dimension : ");
scanf("%d", &d);
T=(int*)malloc(d*sizeof(int));
for (i=0; i<d; i++)
{
printf("Element %d : ", i+1);
scanf("%d", &T[i]);
}
printf("\nTableau donne : \n");
for (i=0; i<d; i++)
printf("%d ", T[i]);
printf("\n");
printf("\nDonner la valeur a sup : ");
scanf("%d", &N);
for (i=0; i<d; i++)
{
T[j] = T[i];
if (T[i]!=N)
j++;
}
printf("\nTableau resultat :\n");
for (i=0; i<j; i++)
printf("%d ", T[i]);
printf("\n");
}

3 2024-2025
Travaux dirigés Pr. L. HAMAMI

Exercice 5 : Ecrire un programme qui permet de convertir un nombre de la base 10 vers la base
2 en effectuant une allocation statique du tableau Bin avec une dimension maximale 50 (Bin
est le tableau où on stock les bits).
main()
{
int i,n, N;
int Bin[50];
printf("enter le nombre decimal ");
scanf("%d",&N);
printf("%d est code sur ", N);
n=0;
do
{
Bin[n]=N%2;
N=N/2;
n=n+1;
}while(N !=0);
printf("%d bit\n", n);
printf("le nbre dans la base 2 est: ");
for(i=n-1; i>=0; i--)
{
printf("%d",Bin[i]);
}
}

Exercice 6 : Ecrire un programme qui permet à l'utilisateur de saisir N entiers, qui doivent être
stockés dans un tableau. Ensuite, la valeur de position « pos » doit être supprimée du
tableau initial (la valeur « pos » c’est l’indice). Enfin, le programme affichera le
tableau résultant (N-1 éléments).
main()
{
int *p, pos, n, i;
printf("donner le nbre de valeurs : ");
scanf("%d", &n);
printf("\n");
p=(int*)malloc(n*sizeof(int));
for(i=0; i<n; i++)
{
printf("Entrer Element %d :", i);
scanf("%d", (p+i));
}
printf("\n");
printf("donner la position de la valeur a supprimer : ");
scanf("%d", &pos);
printf("\n");
for(i=pos; i<n-1; i++)
{
p[i]=p[i+1];
}
for(i=0; i<n-1; i++)

4 2024-2025
Travaux dirigés Pr. L. HAMAMI

{
printf("P[%d] = %d\n", i, *(p+i));
}
}

Exercice 7 : Ecrire un programme qui permet à l'utilisateur de saisir les valeurs d’une matrice
d’entier carrée (3*3). Ensuite, le programme affichera le nombre d’occurrence d’un entier N (la
valeur de N est donnée par l'utilisateur) dans la matrice M.
#include <stdio.h>
main()
{
int M[3][3], i,j, N, Nboc=0;
printf("Entrer les valeurs de la matrice: \n\n");
for (i=0; i<3; i++)
for (j=0; j<3; j++)
{
printf("Element[%d][%d] : ",i,j);
scanf("%d", &M[i][j]);
}
printf("Donner un entier : ");
scanf("%d", &N);
/* Compter le nombre d’occurrence */
for (i=0; i<3; i++)
{
for (j=0; j<3; j++)
if(M[i][j]==N)
Nboc++ ;
}
printf("\n Le nombre d'occurrence de %d est %d ", N, Nboc);
}

Exercice 8 : Ecrire un programme qui permet à l'utilisateur de saisir des valeurs pour un tableau
à deux dimensions (3 lignes et 2 colonnes). Le programme remplira et affichera ce
tableau. Ensuite, le programme affichera la somme de chaque colonne et de chaque
ligne.
#include <stdio.h>
main()
{
int T[3][2],i,j,sl=0,sc=0;
printf("Entrer les valeurs de la matrice: \n\n");
for (i=0; i<3; i++)
{
for (j=0; j<2; j++)
{
printf("Element[%d][%d] : ",i,j);
scanf("%d", &T[i][j]);
}
}

5 2024-2025
Travaux dirigés Pr. L. HAMAMI

printf("\n");
printf("Matrice donnee :\n");
for (i=0; i<3; i++)
{
for (j=0; j<2; j++)
printf("%4d", T[i][j]);
printf("\n");
}
printf("\n");
/* Calcul et affichage de la somme de chaque ligne */
for (i=0; i<3; i++)
{
sl=0;
for (j=0; j<2; j++)
sl += T[i][j];
printf("Somme de la ligne %d est : %d\n",i+1,sl);
}
printf("\n");
/* Calcul et affichage de la somme de chaque colonne */
for (j=0; j<2; j++)
{
for (sc=0, i=0; i<3; i++)
sc += T[i][j];
printf("Somme de la colonne %d est : %d\n",j+1,sc);
}
}

Exercice 9 : Ecrire un programme qui calcul et affiche le produit de deux matrices carrées M1
et M2 de même dimension. Les dimensions sont fixées soit 2x2.
#include <stdio.h>
main()
{
int M1[2][2], M2[2][2], P[2][2], i, j, k;
printf("saisir la matrice M1 : \n");
for(i=0; i<2; i++)
{
for(j=0; j<2; j++)
{
printf("M1(%d%d) = ",i+1,j+1);
scanf("%d", &M1[i][j]);
}
}
printf("saisir la matrice M2 : \n");
for(i=0; i<=1; i++)
{
for(j=0; j<2; j++)
{
printf("M2(%d%d) = ",i+1,j+1);
scanf("%d", &M2[i][j]);
}
}

6 2024-2025
Travaux dirigés Pr. L. HAMAMI

//Calcul du produit des deux matrices


printf("le produit est :");
printf("\n");
for(i=0; i<2; i++)
{
for(j=0; j<2; j++)
{
P[i][j]=0;
for(k=0; k<2; k++)
P[i][j] = P[i][j] + M1[i][k]*M2[k][j];
printf("P(%d%d)=%d\n",i+1,j+1,P[i][j]);

}
}
}

7 2024-2025

Vous aimerez peut-être aussi