Les tableaux en c exercices corrigés – Langage C
Ecrire un programme qui permet de compacter les éléments du tableau tab. Cette opération consiste à supprimer les valeurs nulles du tableau.
#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]);
}
}
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).
#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]);
}
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é.
#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);
}
Ecrire un algorithme permettant de réaliser les opérations suivantes :
#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]);
}
}
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.
#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”);
}
View Comments
I can't wait
I can't wait