306 lines
6.7 KiB
C
Executable file
306 lines
6.7 KiB
C
Executable file
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
|
|
// INTRODUCTION
|
|
/*
|
|
int main()
|
|
{
|
|
int N;
|
|
printf("Entrer la taille du tableau\n");
|
|
scanf("%d",&N);
|
|
|
|
int tableau_entiers[N];
|
|
|
|
int i;
|
|
|
|
for(i=0;i<=(N-1);i++)
|
|
{
|
|
tableau_entiers[i] = 2*i +4 ;
|
|
}
|
|
|
|
|
|
for(i=0;i<=(N-1);i++)
|
|
{
|
|
printf("\n\n tableau[%d] vaut %d et est a l'adresse %p", i, tableau_entiers[i], &tableau_entiers[i] );
|
|
//printf("\n*(tableau+%d) vaut %d et est a l'adresse %p", i, *(tableau_entiers+i), tableau_entiers+i );
|
|
// tableau_entiers se comporte comme un pointeur qui vaudrait &tableau_entiers[0]
|
|
}
|
|
|
|
|
|
char tableau_caracteres[N];
|
|
|
|
for(i=0;i<=(N-1);i++)
|
|
{
|
|
tableau_caracteres[i] = 'a' + i ;
|
|
}
|
|
|
|
|
|
|
|
printf("\n**** Meme chose avec des caracteres **** \n");
|
|
for(i=0;i<=(N-1);i++)
|
|
{
|
|
printf("\n\n tableau[%d] vaut %c et est a l'adresse %p", i, tableau_caracteres[i], &tableau_caracteres[i] );
|
|
printf("\n*(tableau+%d) vaut %c et est a l'adresse %p", i, *(tableau_caracteres+i), tableau_caracteres+i );
|
|
}
|
|
return 0;
|
|
}
|
|
*/
|
|
|
|
// EXO 1
|
|
/*
|
|
# define MAX_TAB 5
|
|
|
|
int main(void)
|
|
{
|
|
int tab[3];
|
|
int tab2[MAX_TAB] = {56,4,8};
|
|
char tab3[1];
|
|
char tab4[]= {'S','O','S'};
|
|
|
|
tab[0] = 1;
|
|
tab[1] = 9;
|
|
tab[2] = tab[1]*3;
|
|
|
|
printf("tab2[0] = %d\n", tab2[0]);
|
|
|
|
tab2[1] = tab2[2]/tab2[1];
|
|
printf("tab2[1] = %d\n", tab2[1]);
|
|
|
|
tab3[0] = 'K';
|
|
|
|
tab4[2] = tab3[0]+1;
|
|
printf("tab4[2] = %c\n", tab4[2]);
|
|
|
|
return 0;
|
|
}
|
|
*/
|
|
|
|
// EXO 2
|
|
/*
|
|
int main()
|
|
{
|
|
int N=26;
|
|
char alphabet[N];
|
|
|
|
int i;
|
|
for(i=0;i<=(N-1);i++)
|
|
{
|
|
alphabet[i] = 'A' + i ;
|
|
}
|
|
|
|
for(i=0;i<=(N-1);i++)
|
|
{
|
|
printf("\n\n alphabet[%d] vaut %c et est a l'adresse %p", i, alphabet[i], &alphabet[i] );
|
|
//printf("\n*(tableau+%d) vaut %c et est a l'adresse %p", i, *(tableau_caracteres+i), tableau_caracteres+i );
|
|
}
|
|
return 0;
|
|
}
|
|
*/
|
|
|
|
|
|
// EXO 3
|
|
/*
|
|
int trouve_min(int N, int tab_entier[]); // int trouve_min(int N, int* tab_entier);
|
|
int trouve_max(int N, int tab_entier[]);
|
|
void trouve_min_max(int N, int tab_entier[], int* p_mini, int* p_maxi);
|
|
|
|
int main(void)
|
|
{
|
|
int i, taille;
|
|
int mini, maxi;
|
|
|
|
do
|
|
{
|
|
printf("Entrer la taille du tableau : ");
|
|
scanf("%d",&taille);
|
|
}
|
|
while(taille<1);
|
|
|
|
int tab[taille];
|
|
|
|
// note sur comment avoir l'adresse du premier elmt d'un tableau
|
|
// question 3 dans le poly
|
|
printf("\ntab = %p est aussi &tab[0] = %p, &tab = %p\n\n",tab,&tab[0],&tab);
|
|
|
|
|
|
for(i=0; i<taille; i++)
|
|
{
|
|
printf("\nEntrer un entier : ");
|
|
scanf("%d",&tab[i]);
|
|
}
|
|
|
|
mini = trouve_min(taille, &tab[0]); // equivalent a mini = trouve_min(taille, tab)
|
|
// "tab"
|
|
printf("\nLe minimum est : %d",mini);
|
|
|
|
// question 5
|
|
maxi = trouve_max(taille, &tab[0]);
|
|
printf("\nLe maximum est : %d",maxi);
|
|
|
|
// question 6
|
|
// void trouve_min_max(int N, int tab_entier[], int* p_mini, int* p_maxi)
|
|
trouve_min_max(taille, &tab[0],&mini,&maxi);
|
|
printf("\n\ntouve par la fonction de la question 6");
|
|
printf("mini = %d maxi = %d",mini, maxi);
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
int trouve_min(int N, int tab_entier[]) // int trouve_min(int N, int *tab_entier) {
|
|
{
|
|
int mini = tab_entier[0], i;
|
|
|
|
for(i=1; i<N; i++)
|
|
{
|
|
if (tab_entier[i] < mini)
|
|
{
|
|
mini = tab_entier[i] ;
|
|
}
|
|
}
|
|
|
|
return mini;
|
|
}
|
|
|
|
// question 5
|
|
int trouve_max(int N, int tab_entier[]) // int trouve_min(int N, int *tab_entier) {
|
|
{
|
|
int maxi = tab_entier[0], i;
|
|
|
|
for(i=1; i<N; i++)
|
|
{
|
|
if (tab_entier[i] > maxi)
|
|
{
|
|
maxi = tab_entier[i] ;
|
|
}
|
|
}
|
|
|
|
return maxi;
|
|
}
|
|
|
|
// question 6
|
|
void trouve_min_max(int N, int tab_entier[], int* p_mini, int* p_maxi)
|
|
{
|
|
*p_mini = trouve_min(N, &tab_entier[0]);
|
|
*p_maxi = trouve_max(N, &tab_entier[0]);
|
|
}
|
|
*/
|
|
|
|
|
|
// EXO 4
|
|
/*
|
|
void saisie_tableau(int taille, int tableau_int[]);
|
|
// int* pointeur_tableau
|
|
|
|
int compter_X(int X, int taille, int tableau_int[]);
|
|
void comter_plus_ou_moins_X(int X, int taille, int tableau_int[], int* p_nb_X, int* p_nb_moinsX );
|
|
|
|
int main()
|
|
{
|
|
int N = 10;
|
|
int tableau[N];
|
|
|
|
// saisie du tableau
|
|
saisie_tableau(N,&tableau[0]);
|
|
// void saisie_tableau(int taille, int tableau_int[]);
|
|
//juste pour valider la saisie
|
|
//int i;
|
|
//for(i=0;i<N;i++)
|
|
//{
|
|
// printf("\n\n sortie de la fonction tab[i] = %d",tableau[i]);
|
|
//}
|
|
|
|
int nombre_de_zeros;
|
|
nombre_de_zeros = compter_X(0,N,&tableau[0]);
|
|
|
|
printf("\n nombre de zeros dans le tableau %d",nombre_de_zeros);
|
|
|
|
// question de fin (2 et 3)
|
|
int test;
|
|
printf("entrer la valeur a tester");
|
|
scanf("%d",&test);
|
|
int nb_plus_test, nb_moins_test;
|
|
|
|
comter_plus_ou_moins_X(test, N, &tableau[0], &nb_plus_test, &nb_moins_test);
|
|
|
|
printf("\n nombre de plus %d dans le tableau %d",test,nb_plus_test);
|
|
printf("\n nombre de moins %d dans le tableau %d",test,nb_moins_test);
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
void saisie_tableau(int taille, int tableau_int[])
|
|
{
|
|
int i;
|
|
for(i=0;i<taille;i++)
|
|
{
|
|
do
|
|
{
|
|
printf("Entrer la case [%d]",i);
|
|
scanf("%d",&tableau_int[i]);
|
|
}while( tableau_int[i]<-5 || tableau_int[i]> 5 );
|
|
//( !(tableau_int[i]>=-5 && tableau_int[i]<=5) )
|
|
}
|
|
}
|
|
|
|
int compter_X(int X, int taille, int tableau_int[])
|
|
{
|
|
int i;
|
|
int compteur = 0;
|
|
|
|
for(i=0;i<taille;i++)
|
|
{
|
|
if(tableau_int[i] == X)
|
|
{
|
|
compteur++;
|
|
}
|
|
}
|
|
return compteur;
|
|
}
|
|
|
|
void comter_plus_ou_moins_X(int X, int taille, int tableau_int[], int* p_nb_X, int* p_nb_moinsX)
|
|
{
|
|
*p_nb_X = compter_X( X,taille,&tableau_int[0]);
|
|
*p_nb_moinsX = compter_X(-X,taille,&tableau_int[0]);
|
|
}
|
|
*/
|
|
|
|
// EXO 5
|
|
|
|
//void saisir_tab_char(int taille,char tableau[]);
|
|
void saisir_tab_char(int taille,char* tableau);
|
|
|
|
int main()
|
|
{
|
|
char tableau_carac[4];
|
|
saisir_tab_char(3,&tableau_carac[0]);
|
|
// tableau_carac
|
|
int i;
|
|
for(i=0;i<3;i++)
|
|
{
|
|
//printf("%c",tableau_carac[i]);
|
|
printf("%c",*(tableau_carac+i));
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
//void saisir_tab_char(int taille,char tableau[])
|
|
void saisir_tab_char(int taille,char* tableau)
|
|
{
|
|
int i;
|
|
for(i=0;i<3;i++)
|
|
{
|
|
//scanf("%c",&tableau[i]); // tableau[i] = getchar();
|
|
scanf("%c",tableau+i);
|
|
while(getchar()!='\n'){;} // fflush(stdin);
|
|
}
|
|
}
|