IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Go Discussion :

Problème en Go


Sujet :

Go

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème en Go
    Bonjour,
    Je suis étudiant en informatique en première année, j'apprend le language golang, et pour les cours je dois faire un programme ascii-art qui doit print la phrase qu'on lui demande. Mon programme fonctionne cependant j'ai un soucis d'affichage lorsque la lettre est moins large comme un "i" par exemple, est-ce que quelqu'un pourrait m'aider ? Merci
    Nom : print.png
Affichages : 134
Taille : 5,8 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    package main
     
    import (
    	"bufio"
    	"fmt"
    	"log"
    	"os"
    )
     
    func main() {
    	args := os.Args[1:]
    	lenArgs := len(args)
    	result := []string{}
     
    	if lenArgs != 1 {
    		return
    	}
     
    	phrase := []rune(args[0])
     
    	for _, k := range phrase {
    		if k >= 32 && k <= 126 {
    			startKey := int(k)
    			compt := 0
    			f, err := os.Open("standard.txt")
    			if err != nil {
    				log.Fatal(err)
    			}
    			defer f.Close()
    			scanner := bufio.NewScanner(f)
     
    			for scanner.Scan() {
    				if compt >= (startKey-32)*9 && compt <= (startKey-32)*9+8 {
    					charSet := scanner.Text()
    					result = append(result, charSet)
     
    				}
    				compt++
    			}
    			if err := scanner.Err(); err != nil {
    				log.Fatal(err)
    			}
    		}
    	}
    	resultat(result, len(phrase))
    }
     
    func resultat(input []string, cols int) {
    	rows := (len(input) + cols - 1) / cols
    	for row := 0; row < rows; row++ {
    		for col := 0; col < cols; col++ {
    			i := col*rows + row
    			fmt.Printf("%-8s\b", input[i])
    		}
    		fmt.Println()
    	}
    }

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Bonjour
    Je ne connais strictement rien à Go mais je pense que le problème vient du"%-8s\b", Comme toutes les lettres n'ont pas la même largeur, c'est là que ça pêche.
    Il faut trouver un moyen en Go pour associer une certaine largeur aux lettres. C'est tout.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 100
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Bonjour
    Je ne connais strictement rien à Go mais je pense que le problème vient du"%-8s\b", Comme toutes les lettres n'ont pas la même largeur, c'est là que ça pêche.
    Il faut trouver un moyen en Go pour associer une certaine largeur aux lettres. C'est tout.
    Tout à fait.

    au lieu d'un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fmt.Printf("%-8s\b", input[i])
    il faudrait un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fmt.Printf("%-*s\b", input[i].width, input[i].ascii)
    en rajoutant un .width et un .ascii pour prédéfinir la largeur du caractère. Il faudrait pouvoir rajouter cette info dans ton fichier standard.txt.
    Peut être transformer ce fichier standard.txt en un standard.json pour le structurer, ou trouver une astuce pour rajouter cette info (la première ligne du fichier pourrait contenir la largeur du caractère en dessous).

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo