Un programme
Fermé
zack
-
Modifié le 13 déc. 2020 à 17:15
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 14 déc. 2020 à 21:10
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 14 déc. 2020 à 21:10
A voir également:
- Un programme
- Programme demarrage windows 10 - Guide
- Desinstaller un programme - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Mettre en veille un programme - Guide
7 réponses
[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 déc. 2020 à 15:11
Modifié le 14 déc. 2020 à 15:11
Salut zack,
Sous Linux, il y a un petit utilitaire qui fait cela et permet d'afficher des bannières de texte passé en ligne de commande.
Cela s'appelle "banner" ou "sysvbanner".
Tu as le code source d'origine disponible là, par exemple dans le fichier sysvbanner_1.0.orig.tar.gz
https://packages.debian.org/buster/sysvbanner
(le code original date de 1988 et est remarquable d'efficacité)
En regardant le source, tu vois comment le concepteur a créé une seule chaîne de caractères C, stockant les glyphes des lettres de l'alphabet sous la forme de blocs de 7x7 caractères #, en majuscules et minuscules, et de la ponctuation, dans l'ordre des codes ASCII des caractères correspondants, dans une chaîne du type :
Tu devrais procéder de façon similaire : séparer les données représentant les lettres (glyphes) du code.
Ensuite, le code calcule, en fonction du code ASCII, le début de chaque lettre, affiche la première ligne de 7 caractères, et calcule l'emplacement de chacune des 6 autres lignes sachant que les caractères ont une largeur de 7 et sont stockés par rangées de 8. Si des caractères avec des codes ASCII non présents dans les glyphes sont saisis, ils sont remplacés par un bloc vide.
Avec ce procédé, le code lui même tient en 30 lignes.
Dal
Sous Linux, il y a un petit utilitaire qui fait cela et permet d'afficher des bannières de texte passé en ligne de commande.
Cela s'appelle "banner" ou "sysvbanner".
Tu as le code source d'origine disponible là, par exemple dans le fichier sysvbanner_1.0.orig.tar.gz
https://packages.debian.org/buster/sysvbanner
(le code original date de 1988 et est remarquable d'efficacité)
En regardant le source, tu vois comment le concepteur a créé une seule chaîne de caractères C, stockant les glyphes des lettres de l'alphabet sous la forme de blocs de 7x7 caractères #, en majuscules et minuscules, et de la ponctuation, dans l'ordre des codes ASCII des caractères correspondants, dans une chaîne du type :
char * glyphs[] = { "# # #*# ## # # # ## ########", "# # # ## # # ## #### ## #", "# # # ## # # # # # ## # ## #", "####### # #### # # # ## # ## #", "# # # # ## # # # ## # ## #", "# # # # ## # # # ## ### #", "# # ### ##### # # ######## ## ########" };
Tu devrais procéder de façon similaire : séparer les données représentant les lettres (glyphes) du code.
Ensuite, le code calcule, en fonction du code ASCII, le début de chaque lettre, affiche la première ligne de 7 caractères, et calcule l'emplacement de chacune des 6 autres lignes sachant que les caractères ont une largeur de 7 et sont stockés par rangées de 8. Si des caractères avec des codes ASCII non présents dans les glyphes sont saisis, ils sont remplacés par un bloc vide.
Avec ce procédé, le code lui même tient en 30 lignes.
Dal
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 341
13 déc. 2020 à 17:15
13 déc. 2020 à 17:15
Bonjour,
C'est pour quand ?
C'est pour quand ?
2,3 jours enfin comme vous voulez merci
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 341
13 déc. 2020 à 17:46
13 déc. 2020 à 17:46
Alors...
Petit rappel :
CCM ne fait pas les exercices. Une aide peut être donnée si un travail personnel est démontré.
Petit rappel :
CCM ne fait pas les exercices. Une aide peut être donnée si un travail personnel est démontré.
int n; char mes; printf("veuilleztaper votre message\n"); scanf("%c",&mes); if(mes='A' ) { printf("1\n"); if(n=1){ printf(" * \n"); printf("***\n"); printf("* *\n");} else { printf("error"); } } else { printf(" error"); }
bnj c est mon essaye ya plein des faute mais j arrive pas a fixée ,la dernière session était ma 6 ème session, c'est pourquoi j'ai besoin d'aide ,j ai essayer de le faire , j ai fait des recherches sur intrnet pendant 3 jours mais pour rien, si vous pouvez m'aider à faire l'algorithme ou me donnez certaines techniques pour le faire ou pour minimiser les lignes, merci beaucoup(mon idée etait de transformer les lettres en chiffre aprés en étoile mais cest trops et un peux compliquer et je sais pas comment faire pour un mot ou un message )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
14 déc. 2020 à 16:30
14 déc. 2020 à 16:30
Bonjour,
Pour faire ce genre de code, cela n'est pas si simple. Il faut connaître les tableaux et les fonctions sinon ça devient trop lourd.
En lisant ton code, tu as une double erreur ligne 5 et ligne 6 où tu effectues des assignations dans un
Pour faire ce genre de code, cela n'est pas si simple. Il faut connaître les tableaux et les fonctions sinon ça devient trop lourd.
En lisant ton code, tu as une double erreur ligne 5 et ligne 6 où tu effectues des assignations dans un
ifau lieu de faire des comparaisons (en utilisant le double
==). Est-ce une faute d'inattention ou sinon c'est qu'il te manque les bases pour effectuer ce type de code?
Bonjour
merci pour l'aide , c'est une faute d'inattention et de base ( je suis un débutant) et en plus c'est ma première fois que je utilise les char dans un exercice . de quelles tableaux et les fonctions tu parle ( j'ai pas compris)
merci pour l'aide , c'est une faute d'inattention et de base ( je suis un débutant) et en plus c'est ma première fois que je utilise les char dans un exercice . de quelles tableaux et les fonctions tu parle ( j'ai pas compris)
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
14 déc. 2020 à 21:10
14 déc. 2020 à 21:10
Il te faut créer des fonctions intermédiaires pour gérer des morceaux de ton code. Et j'envisageai que tu utilises des tableaux qui seraient indexés par le code ASCII de tes char. Si tu connais à peine les char, ton exercice est un effort important à faire.
Un exemple, avec des lettres de 5x5:
On doit écrire les caractères une ligne après l'autre, la première ligne est:
Vois tu pourquoi? Puis les quatre autres :
Un exemple, avec des lettres de 5x5:
"**** " " *** " " ****" "* *" " * " "* " Lettre B "**** " Lettre I " * " Lettre G "* ***" "* *" " * " "* *" "**** " " *** " " *** "
On doit écrire les caractères une ligne après l'autre, la première ligne est:
**** *** ****
Vois tu pourquoi? Puis les quatre autres :
* * * * **** * * *** * * * * * **** *** ***Je te propose d'écrire 2 fonctions. Une qui s'appelle
void ecrireLaIemeLigneDuChar(int i, char car);. Vois-tu ce qu'il faut faire pour déjà écrire la première ligne en utilisant cette fonction? Tu peux alors écrire la fonction qui écrit tout le mot :
void ecrireMot(char* mot);.