IUT R&T - 1ère année - Informatique
Programmation et algorithmique 2
TD n°4 - Adressages et pointeurs
EXERCICE 1 (à résoudre pour le TD suivant)
On crée le programme suivant que l'on le compile avec : gcc -std=c99 court.c
.
On l'exécute ensuite pour s'apercevoir qu'il n'affiche rien...
/* Programme court.c */
#include <stdio.h>
int main()
{ for (int i=0; i++; i<10) printf("*%p=%d \n",&i,i); }
1.1. Pourquoi ce programme n'affiche-t-il rien ?
1.2. Corriger ce programme pour que l'affichage se fasse. Qu'est-ce qui sera affiché ?
EXERCICE 2
2.1. Ecrire un algorithme saisir
qui remplit un tableau T avec n entiers non nuls saisis, n ne devant pas dépasser une valeur limite taillemax. La fin de la saisie sera indiquée par l'utilisateur par la valeur 0 (à ne pas mettre dans le tableau). A la fin de l'algorithme, on disposera de la valeur de n et du tableau rempli de n valeurs entières non nulles.
2.2. Ecrire un algorithme afficher
qui affiche un tableau T de n entiers.
2.3. Ecrire un programme C qui transcrit ces deux algorithmes pour enregistrer les éléments d'un tableau, puis les afficher.
Le programme devra commencer ainsi :
#include <stdlib.h>
#include <stdio.h>
/* choix d'une valeur pour taillemax */
#define taillemax 100
int Tableau[taillemax]={0};
int taille;
void saisir(int T[], int limite, int *n);
void afficher(int *T, int n);
int main() {
2.4. Compte-tenu de la manière dont on remplit le tableau, comment pourrait-on éviter de passer en paramètre la taille n du tableau dans la fonction afficher
?
EXERCICE 3
On donne la fonction suivante :
int truc(char* S) {
int n=0;
if (S==NULL) return (-1);
while ((*(S+n))!='\0') n++;
return n;
}
3.1. Que fait cette fonction ? Sur quel principe repose-t-elle ?
3.2. Ecrire un algorithme, puis la fonction correspondante en C, qui effectue sur le même principe que ci-dessus la copie d'une chaine A de p caractères vers une autre chaine B de q caractères. La fonction C retournera le nombre de caractères effectivement copiés.
N.B. On n'utilise donc pas la fonction strcpy
.