Tableau C

Résolu/Fermé
MissRobet Messages postés 4 Date d'inscription mercredi 14 novembre 2018 Statut Membre Dernière intervention 20 novembre 2018 - 14 nov. 2018 à 09:37
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 15 nov. 2018 à 09:14
salut, je veux avoir un affichage bien ordonnée comme un tableau de donnée mais voila ce que affiche mon programme et je ne sais pas pourquoi cette affichage retour a la ligne pour afficher les 0 et quelques autres variables alors que j'ai saisit le \n seulement a la fin de l'affichage de chaque ligne ! pouvez vous m'aidez a trouver une solution s'il vous plait !!


printf("ID reservation\t\tNumero Passeport\t\tNom du voyageur\t\tDate de Naissance\t\tDepartArrivee\t\tVille de destination\t\tPays de destination\t\tVoyage en groupe: choisir 0 ou 1\t\tNumero du Groupe\n");

for (i=0;i<=Nbr_de_Voyages;i++)
{

printf("%i\t\t",Reservation[i]);
printf("%s\t\t",NumPasseport[i]);
printf("%s\t\t",NomVoyageur[i]);
printf("%s\t\t",DateNaisVgr[i]);
printf("%s\t\t",DateDpt[i]);
printf("%s\t\t",DateArv[i]);
printf("%s\t\t",VilleDest[i]);
printf("%s\t\t",PaysDest[i]);
printf("%i\t\t",Grp_V_F[i]);
printf("%i\t\t",NumGrp[i]);

printf("\n");


il n y a le ligne en rouge affichée sous la forme que j'ai attendu


}

1 réponse

[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié le 14 nov. 2018 à 13:13
Au lieu d'utiliser des tabulations pour aligner le contenu de tes colonnes, tu pourrais utiliser printf avec un spécificateur de taille.

Par exemple
printf("%7s ",NumPasseport[i]);
si tu sais que tes numéros de passeport ne vont pas dépasser 7 caractères. Tu devrais aussi utiliser des intitulés de colonnes moins longs, et qui soient fonction de la largeur des données de la colonne, sinon, cela ne va rien donner de terrible, et les aligner selon la même méthode.

Dal
2
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié le 14 nov. 2018 à 13:48
Il est aussi possible de mettre la valeur du spécificateur de taille en paramètre de printf, avec la notation suivante :
int lmax = 7;
printf("%*s ", lmax, NumPasseport[i]);

avec cette façon de faire, et en faisant en sorte que ton programme analyse les données d'une colonne avant d'en afficher le contenu, pour déterminer la plus grande largeur nécessaire, tu peux faire un programme qui ajuste automatiquement la largeur au lieu de coder la largeur en dur.
0
MissRobet Messages postés 4 Date d'inscription mercredi 14 novembre 2018 Statut Membre Dernière intervention 20 novembre 2018
14 nov. 2018 à 13:53
j'ai essayé de utiliser les 2 : %7s et le \t mais les données ne sont pas écrites sous leurs titres (le premier ligne )



alors que lorsque j'ai utiliser seulement le %.7s ... le resultat était comme suit

0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
15 nov. 2018 à 09:14
7 est un exemple de largeur de colonne convenant pour la colonne numéro de passeport au vu des données que tu y mets, avec un espace en plus comme dans mon exemple (ou une tabulation si tu préfères, mais un ou plusieurs espaces me paraissent mieux, car tu auras ainsi le même espacement entre chaque colonnes) et sous réserve que l'intitulé de la colonne lui-même ne dépasse pas 7 caractères avec un espace (ou tabulation), donc un intitulé comme "N° Pass" par exemple et non pas "Numero Passeport" qui est trop long.

Je te donne des indications sous forme d'exemples comme indiqué à plusieurs reprises. C'est à toi de faire l'exercice, pas moi :-)

La taille pour le nom du voyageur, dans ton cas, utilise jusqu'à 20 caractères. Bien sûr, si tu y appliques un formatage %7s tu n'auras pas le résultat attendu...
0