Dans le programme suivant, le but est d'utiliser la fonction swap
pour intervertir les valeurs du
tableau meas
void swap(int* val1, int* val2){
const int tmp = *val1;
*val1 = *val2;
*val2 = tmp;
}
int main(){
int meas[2] = {1,2};
swap(...);
printf("Ind 0 : %d\n", ...);
printf("Ind 1 : %d\n", ...);
return 0;
}
Remplacer les ...
pour faire l'appelle à la fonction et l'affichage des valeurs
Est-ce que l'opération ci-dessous est valide ?
char c[] = {1,2,3};
char c1[] = c;
Écrire une fonction qui copie un tableau
La fonction ci-dessous doit copier les valeurs de c
dans c1
void copy(...){
...
}
int c[] = {1,2,3,4,5};
int c1[5];
copy(...);
Quel est le danger de la fonction développée à l'ex 2 ?
char c[] = "Bonjour";
- 4.1 : Quelle est le type et la valeur de c[0] :
- 4.2 : Quelle est le type et la valeur de c[7] :
- 4.3 : Quelle est le type et la valeur de c[8] :
Quel est le danger avec le programme suivant :
double tab[] = {1.2, 2.3};
tab[2] = 0.0;
Dans la fonction copy
de l'exercice 2 :
- 6.1 : Pourquoi le premier
const
est important dans la fonction ci-dessous ? - 6.2 : Pourquoi est-ce que l’on n’a pas besoin de mettre un
const
avec le dernier paramètreint
?
Écrire une fonction qui calcule la valeur moyenne
des éléments du tableau.
Cette fonction doit aussi retourner la valeur max
qui est dans le tableau.
Cette fonction n'a pas de valeur de retour, c'est uniquement des paramètres.
L'affichage du programme ci-dessous est :
La moyenne : 3.50
La valeur max : 6
#include <stdio.h>
void mean(...){
}
int main(void)
{
int tab[] = {1,2,3,4,5,6};
size_t size = 6;
int max_tab;
double mean_tab;
mean(...);
printf("La moyenne : %.2f\n", mean_tab);
printf("La valeur max : %d\n", max_tab);
}
void swap(int* val1, int* val2){
const int tmp = *val1;
*val1 = *val2;
*val2 = tmp;
}
int main(){
int meas[2] = {1,2};
swap(&meas[0], &meas[1]);
printf("Ind 0 : %d\n", meas[0]);
printf("Ind 1 : %d\n", meas[1]);
return 0;
}
Non, on ne peut pas copier un tableau avec l'opérateur d'assignation.
void copy(const int c[], int c1[], size_t size){
for(size_t i=0; i<size; i++){
c1[i] = c[i];
}
}
int main(int argc, char* argv[])
{
int c[] = {1,2,3,4,5};
int c1[5] = {0};
copy(c, c1, 3);
}
Si le paramètre size
est plus grand que la taille du tableau.
- 4.1 : char B
- 4.2 : char \0
- 4.3 : char undifined
On accède à un indice du tableau qui est en dehors du tableau.
#include <stdio.h>
void mean(int tab[], size_t size, int* max, double* mean){
double sum = 0.;
*max = 0;
for(size_t i=0; i<size; i++){
sum += tab[i];
if( *max < tab[i] )
*max = tab[i];
}
*mean = sum / size;
}
int main(void)
{
int tab[] = {1,2,3,4,5,6};
int max_tab;
double mean_tab;
mean(tab, 6, &max_tab, &mean_tab);
printf("La moyenne : %.2f\n", mean_tab);
printf("La valeur max : %d\n", max_tab);
}