« Exercices en langage C/Tableaux statiques » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Aucun résumé des modifications
 
Ligne 9 : Ligne 9 :
La fonction main d'un programme C reçoit en argument :
La fonction main d'un programme C reçoit en argument :
* un entier '''argc''' indiquant le nombre d'élément du tableau argv;
* un entier '''argc''' indiquant le nombre d'élément du tableau argv;
* un tableau de chaines de caractère '''argv''' avec :
* un tableau de chaînes de caractère '''argv''' avec :
** argv[0] : Nom d'appel du programme.
** argv[0] : Nom d'appel du programme.
** argv[i] : Valeur de l'argument de rang i.
** argv[i] : Valeur de l'argument de rang i.
Ligne 21 : Ligne 21 :
Nom : argv.c
Nom : argv.c
Auteur : Thierry46
Auteur : Thierry46
Role : Affiche le nom de lancement du programme
Rôle : Affiche le nom de lancement du programme
le nombre et les valeurs des paramètres passés passés à ce programme.
le nombre et les valeurs des paramètres passés passés à ce programme.
Paramètres :
Paramètres :
- argc : nombre de paramètres
- argc : nombre de paramètres
- argv : tableau de chaine de caractere contenant les parametre
- argv : tableau de chaînes de caractère contenant les paramètres
Code retour : 0 (EXIT_SUCCESS)
Code retour : 0 (EXIT_SUCCESS)
Pour produire un exécutable avec le compilateur libre GCC :
Pour produire un exécutable avec le compilateur libre GCC :
Ligne 43 : Ligne 43 :
(void)printf("Nom d'appel du programme (argv[0]) : %s\n", argv[0]);
(void)printf("Nom d'appel du programme (argv[0]) : %s\n", argv[0]);


// Affiche le nombre de parametre passe au programme
// Affiche le nombre de paramètres passés au programme
(void)printf("Nombre de parametre passe au programme : %d\n", argc-1);
(void)printf("Nombre de paramètres passés au programme : %d\n", argc-1);
// Affiche la valeur des parametres
// Affiche la valeur des paramètres
for (int i=1; i<argc; i++)
for (int i=1; i<argc; i++)
{
{
(void)printf("Parametre %d : %s\n", i, argv[i]);
(void)printf("Paramètre %d : %s\n", i, argv[i]);
}
}


Ligne 60 : Ligne 60 :
MacMini-TM:~/Documents/developpement/c thierry$ ./argv.exe dudule 1
MacMini-TM:~/Documents/developpement/c thierry$ ./argv.exe dudule 1
Nom d'appel du programme (argv[0]) : ./argv.exe
Nom d'appel du programme (argv[0]) : ./argv.exe
Nombre de parametre passe au programme : 2
Nombre de paramètres passés au programme : 2
Parametre 1 : dudule
Paramètre 1 : dudule
Parametre 2 : 1
Paramètre 2 : 1
</pre>
</pre>


Ligne 74 : Ligne 74 :
La fonction main :
La fonction main :
* définira et initialisera le tableau d'entier
* définira et initialisera le tableau d'entier
* récupèrera dans son tableau d'argument argv le nombre à chercher.
* récupérera dans son tableau d'argument argv le nombre à chercher.
* appellera la fonction ''position''.
* appellera la fonction ''position''.
* affichera l'indice de l'élément dans le tableau ou un message indiquant que le nombre n'a pas été trouvé.
* affichera l'indice de l'élément dans le tableau ou un message indiquant que le nombre n'a pas été trouvé.
Ligne 89 : Ligne 89 :
/*
/*
Nom : position.c
Nom : position.c
Role : Affiche le nom de lancement du programme
Rôle : Affiche le nom de lancement du programme
le nombre et les valeurs des paramètres passés passés à ce programme.
le nombre et les valeurs des paramètres passés passés à ce programme.
Paramètres :
Paramètres :
- argc : nombre de paramètres
- argc : nombre de paramètres
- argv : tableau de chaine de caractere contenant les parametres
- argv : tableau de chaînes de caractères contenant les paramètres
Code retour : 0 (EXIT_SUCCESS)
Code retour : 0 (EXIT_SUCCESS)
Pour produire un exécutable avec le compilateur libre GCC :
Pour produire un exécutable avec le compilateur libre GCC :
Ligne 121 : Ligne 121 :
{
{
(void)fprintf(stderr,
(void)fprintf(stderr,
"%s : Cherche un entier x passe en parametre\n"
"%s : Cherche un entier x passe en paramètre\n"
"usage : %s x\n",
"usage : %s x\n",
argv[0], argv[0]);
argv[0], argv[0]);
Ligne 133 : Ligne 133 :
} // if (argc != 2)
} // if (argc != 2)


// Recupere le nombre passe en parametre et le convertit
// Récupère le nombre passé en paramètre et le convertit
cr = sscanf(argv[1], "%d", &x);
cr = sscanf(argv[1], "%d", &x);
if (cr != 1)
if (cr != 1)
Ligne 143 : Ligne 143 :
} // if (cr != 1)
} // if (cr != 1)


// Appel de la fonction position et affichage du resultat.
// Appel de la fonction position et affichage du résultat.
resultat = position(tableau, taille, x);
resultat = position(tableau, taille, x);
if (resultat != -1)
if (resultat != -1)
Ligne 181 : Ligne 181 :
MacMini-TM:~/c thierry$ gcc -Wall -std=c99 -o position.exe position.c
MacMini-TM:~/c thierry$ gcc -Wall -std=c99 -o position.exe position.c
MacMini-TM:~/c thierry$ ./position.exe
MacMini-TM:~/c thierry$ ./position.exe
./position.exe : Cherche un entier x passe en parametre
./position.exe : Cherche un entier x passe en paramètre
usage : ./position.exe x
usage : ./position.exe x
Valeurs contenues dans le tableau : 2 5 45 3 9
Valeurs contenues dans le tableau : 2 5 45 3 9

Version actuelle du 28 août 2022 à 15:35

Parcours d'un tableau[modifier | modifier le wikicode]

Écrire un programme nommé argv.c qui affiche :

  • son nom de lancement (argv[0]);
  • le nombre des ces arguments;
  • la valeur de chaque argument reçu.

Rappels : La fonction main d'un programme C reçoit en argument :

  • un entier argc indiquant le nombre d'élément du tableau argv;
  • un tableau de chaînes de caractère argv avec :
    • argv[0] : Nom d'appel du programme.
    • argv[i] : Valeur de l'argument de rang i.

Position d'un élément dans un tableau[modifier | modifier le wikicode]

Écrire un programme position.c contenant une fonction principale main déterminant si un entier est contenu dans un tableau statique par l'appel à une fonction position.

La fonction main :

  • définira et initialisera le tableau d'entier
  • récupérera dans son tableau d'argument argv le nombre à chercher.
  • appellera la fonction position.
  • affichera l'indice de l'élément dans le tableau ou un message indiquant que le nombre n'a pas été trouvé.

La fonction position :

  • aura pour prototype : static int position(int t[], int taille, int x).
  • donnera l'indice d'un élément x dans le tableau t, ou -1 si x n'est pas trouvé.