Les tableaux en c exercices corrigés – Langage C
Exercice N°1 sur les Tableaux en C
Ecrire un programme qui permet de compacter les éléments du tableau tab. Cette opération consiste à supprimer les valeurs nulles du tableau.
Solution
#include<stdio.h>
#define MAX 100
void main()
{
int n,i=0,val;
int tab[MAX];
do{
printf(“Donner la taille du tableau \n”);
scanf(“%d”,&n);
}while(n<=0);
printf(“Donner T[0] \n”);
scanf(“%d”,&tab[0]);
for(i=1;i<n;i++)
{
printf(“Donner T[%d] \n”,i);
scanf(“%d”,&tab[i]);
}
for(i=0;i<n;i++)
{
printf(” %d |”,tab[i]);
}
int j=0;
i=0;
while(i<n)
{
if(tab[i]==0)
{
n–;
j=i;
while(j<n)
{
tab[j]=tab[j+1];
j++;
}
}
if (tab[i]!=0) {i++;}
}
printf(“\n”);
for(i=0;i<n;i++)
{
printf(” %d |”,tab[i]);
}
}
Exercice N°2 sur les Tableaux en C
Ecrire un algorithme permettant de saisir au clavier un indice i, en prenant soin de vérifier que cet indice est positif et inférieur au nombre d’éléments, et d’insérer une valeur v saisie au clavier à la position i (dans le cas où le nombre d’éléments reste inférieur au max), les valeurs suivantes devront alors être décalées).
Solution
#include<stdio.h>
//#include<conio.h>
void main()
{
int n=4,i,v,t[3];
t[0]=1;
t[1]=2;
t[2]=3;
t[3]=4;
printf(“%d %d %d %d \n”,t[0],t[1],t[2],t[3]);
do{
printf(“Donner i \n”);
scanf(“%d”,&i);
}while((i<0)||(i>n));
printf(“Donner une valeur \n”);
scanf(“%d”,&v);
int j=n;
while(j>(i+1))
{
t[j]=t[j-1];
j–;
}
t[i]=v;
printf(“%d %d %d %d”,t[0],t[1],t[2],t[3]);
}
Exercice N°3 sur les Tableaux en C
Ecrire un algorithme qui détermine la plus grande et la plus petite valeur dans un tableau d’entiers A. Afficher ensuite la valeur et la position du maximum et du minimum. Si le tableau contient plusieurs maxima ou minima, le programme retiendra la position du premier maximum ou minimum rencontré.
Solution
#include<stdio.h>
#define
void main()
{
int n=5,i=0,t[n];
t[0]=3;
t[1]=1;
t[2]=1;
t[3]=5;
t[4]=5;
int imax=-1,imin=-1,max=t[0];
int min=t[0];
while(i<n)
{
printf(“%d | “,t[i]);
i++;
}
printf(“\n”);
i=0;
while(i<n)
{
if (t[i]>max){ max=t[i]; imax=i;}
if(t[i]<min) {min=t[i]; imin=i;}
i++;
}
printf(“le max est %d d’indice %d \n”,max,imax);
printf(“le min est %d d’indice %d \n”,min,imin);
}
Exercice N°4 sur les Tableaux en C
Ecrire un algorithme permettant de réaliser les opérations suivantes :
- Lire au clavier les n valeurs du tableau, dans un ordre croissant, c’est à dire qu’une valeur lue est acceptée seulement si elle est supérieure à la précédente.
- Lire au clavier une valeur v.
- Insérer cette valeur dans le tableau de façon à maintenir l’ordre croissant.
Solution
#include <stdio.h>
#define MAX 100
void main()
{
int n,i=0,val;
int tab[MAX];
do{
printf(“Donner la taille du tableau \n”);
scanf(“%d”,&n);
}while(n<=0);
printf(“Donner T[0] \n”);
scanf(“%d”,&tab[0]);
for(i=1;i<n;i++)
{
do{printf(“Donner T[%d] \n”,i);
scanf(“%d”,&tab[i]);
}while(tab[i]<tab[i-1]);
}
for(i=0;i<n;i++)
{
printf(” %d |”,tab[i]);
}
printf(“\n”);
printf(“Donner une valeur \n”);
scanf(“%d”,&val);
i=0;
int m;
int j;
int test=1;
while(i<n&&val>=tab[i])
{
i++;
}
if(val<tab[i])
{
m=n;
while(m>i)
{
tab[m]=tab[m-1];
m–;
}
tab[i]=val;
n++;
}
/*while((i<n)&&(test==1))
{
if(i==0)
{
if (val<tab[0])
{
m=n+1;
while(m>0)
{
tab[m]=tab[m-1];
m–;
}
tab[0]=val;
test=0;
}
}
else
{
if((val<tab[i])&&(val>tab[i-1]))
{
m=n+1;
while(m>i)
{
tab[m]=tab[m-1];
m–;
}
tab[i]=val;
test=0;
}
else if(i==n-1)
{
if(val>tab[n-1])
{
tab[n]=val;
test=0;
}
}
}
i++;
}
n++;*/
for(i=0;i<n;i++)
{
printf(” %d |”,tab[i]);
}
}
Exercice N°5 sur les Tableaux en C
Ecrire un algorithme qui détermine si une matrice carrée est symétrique ou non. Une matrice est symétrique si Mij = Mji pour 0<=i<n et 0<=j<n.
Solution
#include<stdio.h>
#define L 100
#define C 100
void main()
{
int mat[L][C];
int l,c;
int i,j;
int test=1;
do{
printf(“Donner ne nb de Ligne et de colonne \n”);
scanf(“%d %d”,&l,&c);
}while(l!=c);
for(i=0;i<l;i++)
{
for(j=0;j<c;j++)
{
printf(“Donner mat[%d][%d]: “,i,j);
scanf(“%d”,&mat[i][j]);
}
}
for(i=0;i<l;i++)
{
for(j=0;j<c;j++)
{
printf(” %d |”,mat[i][j]);
}
printf(“\n”);
}
i=0;
j=0;
while((test==1)&&(i<l))
{
while((test==1)&&(j<c))
{if(mat[i][j]==mat[j][i])j++;
else{test=0;}
}
i++;
}
if(test==1) printf(“Symétrique”);
else
printf(” NON Symétrique”);
}
I can’t wait
I can’t wait