Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [c]domino

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383

    [c]domino

    Ciao,
    avevo iniziato a scrivere un programma che mi visualizzasse sullo schermo i numeri che sono rappresentati nelle tessere del domino.
    Io per esempio vorrei che stampasse un determinato pezzo che ho scelto:

    | *
    * | *
    | *

    I numeri sarebbero questi:

    * * * * * * * *
    (vuoto) * * * * *
    * * * * * * * *

    cioe gli asterischi riempirebbero uno spazio di 9 caselle:

    Per esempio per stampare la prima tessera , l'idea che mi era venuta era quella di associare ad ogni numero una funzione che la stampasse.Ma il problema comunque e' che il c e la printf stampano su righe.

    Posto il codice che ho scritto fino ad ora:
    codice:
    #include <stdio.h>
    
    main()
    {
     printf("\n*** PROGRAMMA PER LA STAMPA DEI NUMERI RAPPRESENTATI SUI PEZZI DEL DOMINO ***\n");
     printf("\nPremere:\n1- Per visualizzare una tessera in particolare\n2- Per visualizzare l'intero set di tessere\n\n");
      
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Il codice che hai postato non serve a nulla rispetto al problema della visualizzazione ...

    Per il resto, non ho capito come dovresti visualizzare le tessere ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Arghh! Strano, ma se invio il messaggio o faccio anteprima mi ritrovo tutti i caratteri scombinati rispetto a come li avevo messi io.Non si mettono a posto neanche se li metto sotto il tag code.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Forse ho trovato il modo di visualizzare(qui sul forum) i numeri:

    _ _ _ _| _ * _ _ |
    _ * _ _| _ _ _ _ |
    _ _ _ _| _ _ * _ |

    ____________*____*_________*____*___*____*_____*__ __*
    (vuoto)___*_________*__________________*_______*__ __*
    _________________*_____*___*____*___*____*_____*__ __*

    [/code
    questo e' l'unico modo che ho trovato
    (al posto del simbolo _ c'e' uno spazio)

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    il problema maggiore del programma e' quello di far stampare i numeri delle tesssere.
    Non ho idea di come fare!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    nel primo caso,cioe' di far vedere una tessera alla volta,avevo pensato di aggiungere questo al codice:

    printf("primo numero: ");
    scanf("%d",&n1);
    printf("secondo numero: ");
    scanf("%d",&n2);

    ovviamente e' ancora una bozza.

    Per quanto riguarda il disegno dei numeri,avevo pensato di scrivere una funzione per ogni numero, piu quello vuoto, quindi in tutto sette.Il problema e' sempre che il c lavora su righe, ostacolo che sembra insuperabile.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Il C non lavora su righe ... anzi, non ha senso questa affermazione ...

    Se hai scritto un progetto console, e' ovvio che le printf lavorano riga per riga, ma solamente perche' tu non controlli la posizione del cursore, cosa che puoi fare con le API del sistema (per Windows quelle del controllo della Console).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    ho scritto una bozza di codice senza usare API che riguarda la parte in cui si sceglie di visualizzare una tessera in particolare:

    codice:
    int t1,t2
    ...
    if (t1==0 || t1==1) printf("   ");
    if (t1==2 || t1==3) printf("*  ");
    if (t1==4 || t1==5 || t1==6) printf("* *");
    printf(" | ");
    if (t2==0 || t2==1) printf("   ");
    if (t2==2 || t2==3) printf("*  ");
    if (t2==4 || t2==5 || t2==6) printf("* *");
    printf("\n");
    if (t1==1 || t1==3 || t1==5) printf(" * ");
    if (t1==0 || t1==2 || t1==4) printf("   ");
    if (t1==6) printf("* *");
    printf(" | ");
    if (t2==1 || t2==3 || t2==5) printf(" * ");
    if (t2==0 || t2==2 || t2==4) printf("   ");
    if (t2==6) printf("* *"); 
    printf("\n");
    if (t1==0 || t1==1) printf("   ");
    if (t1==2 || t1==3) printf("  *");
    if (t1==4 || t1==5 || t1==6) printf("* *");
    printf(" | ");
    if (t2==0 || t2==1) printf("   ");
    if (t2==2 || t2==3) printf("  *");
    if (t2==4 || t2==5 || t2==6) printf("* *"); 
    printf("\n");
    mi sembra che sia giusto e valido per tutte le piattaforme,no?

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Ho inserito le modifiche di cui sopra ed ho riadattato il codice per quanto riguarda la prima opzione(la piu' facile).
    codice:
    #include <stdio.h>
    
    main()
    {
     int t1,t2;
     printf("\n   *** PROGRAMMA PER LA RAPPRESENTAZIONE DELLE TESSERE DEL DOMINO ***\n\n");
     printf("\nPremere:\n1- Per visualizzare una tessera in particolare\n2- Per visualizzare l'intero set di tessere\n\n");
     printf("// l'utente dovrà inserire una coppia di cifre che rappresentano i numeri\n// presenti sulla superficie della tessera che si vuole visualizzare\n\n");
     printf("prima cifra(da 0 a 6): ");
     scanf("%d",&t1);
     printf("seconda cifra(da 0 a 6): ");
     scanf("%d",&t2);
     if ((t1>=0 && t1<=6) && (t2>=0 && t2<=6)) {
         printf("\n"); 
         if (t1==0 || t1==1) printf("   ");
         if (t1==2 || t1==3) printf("*  ");
         if (t1==4 || t1==5 || t1==6) printf("* *");
         printf(" | ");
         if (t2==0 || t2==1) printf("   ");
         if (t2==2 || t2==3) printf("*  ");
         if (t2==4 || t2==5 || t2==6) printf("* *");
         printf("\n");
         if (t1==1 || t1==3 || t1==5) printf(" * ");
         if (t1==0 || t1==2 || t1==4) printf("   ");
         if (t1==6) printf("* *");
         printf(" | ");
         if (t2==1 || t2==3 || t2==5) printf(" * ");
         if (t2==0 || t2==2 || t2==4) printf("   ");
         if (t2==6) printf("* *"); 
         printf("\n");
         if (t1==0 || t1==1) printf("   ");
         if (t1==2 || t1==3) printf("  *");
         if (t1==4 || t1==5 || t1==6) printf("* *");
         printf(" | ");
         if (t2==0 || t2==1) printf("   ");
         if (t2==2 || t2==3) printf("  *");
         if (t2==4 || t2==5 || t2==6) printf("* *"); 
         printf("\n\n"); 
     }
    }
    Un risultato di quanto e' scritto e' questo:
    codice:
       *** PROGRAMMA PER LA RAPPRESENTAZIONE DELLE TESSERE DEL DOMINO ***
    
    
    Premere:
    1- Per visualizzare una tessera in particolare
    2- Per visualizzare l'intero set di tessere
    
    // l'utente dovrà inserire una coppia di cifre che rappresentano i numeri
    // presenti sulla superficie della tessera che si vuole visualizzare
    
    prima cifra(da 0 a 6): 4
    seconda cifra(da 0 a 6): 3
    
    * * | *  
         |   * 
    * * |     *
    (ovviamente in output il disegno non mi viene sfasato come qui sul forum)

    Per la seconda opzione del programma avevo pensato di fare una cosa simile a questa.
    Solamente che si e' presentato un dubbio per un problema.
    In questo caso sembrerebbe piu facile,perche' potrei fare a meno degli if e magari forse mettere qualche ciclo.
    L'idea e' quella di mettere le tessere l'una accanto all'altra e quando finisce lo spazio nella finestra della console
    fare in modo di andare a capo e andare avanti cosi fino a che non finiscono le tessere.
    Quindi occorre sapere a priori quante tessere prevedere per ogni fila credo, in modo da non avere degli obbrobri, cioe' tessere che per mancanza di spazio stanno in parte su una fila e parte in un'altra.

    Ma il numero di caratteri per riga della finestra della console dipende dalla finestra del programma in cui si e' eseguito il sorgente c, e non e' detto che siano tutte uguali,anzi temo che dipenda ogni volta.
    Percio' questo crea un problema nella programmazione, perche' io devo saperlo a priori quando scrivo il codice.

    Spero di essermi fatto capire in qualche modo.

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    io ho pensato ad una standard da 80 caratteri.
    Ma come puo fare il programma a vedere quando ha terminato gli 80 caratteri disponibili?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.