Banner v C

Programovacie jazyky, rady, poradňa...
nitrox
Light Star
Light Star
Príspevky: 239
Registrovaný: 26 dec 2006, 21:18
Bydlisko: BJ
Kontaktovať používateľa:

Banner v C

Príspevok od používateľa nitrox »

Zdravým, vedel by mi niekto povedať ako mám vytvoriť banner v jazyku C.
Malo by to fungovať tak, že načíta pole znakov z klávesnice a následne ho vypíše ako pole znakov.

príklad: ak zadám pole : SLON
vypíše : SLON vytvorené z * (hviezdičiek)

a tak ďalej. Skúste aspoň pomôcť z vývojakom, nakodiť to následne už nebude taký problém....
konyk87
King
King
Používateľov profilový obrázok
Príspevky: 1709
Registrovaný: 24 okt 2007, 15:56

Príspevok od používateľa konyk87 »

nedavno sme v skole robili podobny priklad v Jave..z textoveho suboru (vid priloha), sme si nacitali retazce do dvojrozmerneho pola (kazde pismeno musi mat vyhradeny rovnaky pocet riadkov v textovom subore a pre kazde bol vyhradeny jeden riadok pola), potom sme vypisovali pole po stlpcoch do riadku, tie pismena, ktore sme potrebovali..

takze najskor si vytvor nejaky txt subor z ktoreho budes nacitavat pismena..prikladam ti aj zdrojak, snad ti to aspon trochu pomoze.. :)

Kód: Vybrať všetko

       try {
            BufferedReader br = new BufferedReader(new FileReader("font.txt"));
            
            String vstup = JOptionPane.showInputDialog("Vstup: ");
            vstup = vstup.toLowerCase();
            String[][] pole = new String[26][7];
            
            for(int i=0; i<26; i++) {
                for(int j=0; j<7; j++) {
                    pole[i][j] = br.readLine();
                }
            }
            
                     
            int[] znaky = new int[vstup.length()];
            for(int i=0; i<vstup.length(); i++) {
                if(vstup.charAt(i) == ' ')
                    znaky[i] = -1;
                else
                    znaky[i] = vstup.charAt(i) - 97;
            }
                
            for(int j=0; j<7; j++) {
                for(int k=0; k<znaky.length; k++) {
                    if(znaky[k] == -1)
                        System.out.print("         ");
                    for(int i=0; i<26; i++) {
                        if(znaky[k] == i)
                            System.out.print(pole[i][j] + "  ");
                        
                    }
                }
                System.out.println();
            }
            
                
            br.close();
        }
        
        catch(IOException e) {
            System.out.println(e.getMessage());
        }
Prílohy
font.rar
(387 Bajtov) 24 stiahnutí
nitrox
Light Star
Light Star
Príspevky: 239
Registrovaný: 26 dec 2006, 21:18
Bydlisko: BJ
Kontaktovať používateľa:

Príspevok od používateľa nitrox »

podarilo sa mi nakodiť niečo také, len ešte to potrebujem ešte spraviť, aby mi vypísalo znaky vedľa seba, a nie pod seba.... ako to mám spraviť ???

Kód: Vybrať všetko

#include <stdio.h>
#include <stdlib.h>

char pismena[26][6][7] = 
{
     { 
     " **** ",
     "******",
     "**  **",
     "******",
     "**  **",
     "**  **"
     },
.
.
.
           {
           "******",
           "    **",
           "   ** ",
           "  **  ",
           "**    ",
           "******"  
           },
};
     
void vypis(char c);
int main()
{
    int i;
    char vstup[100];
    printf("\n Zadaj retazec zlozeny z malych znakov bez medzery: ");
    scanf("%s",vstup);
    printf("\n");
    for (i=0; i<strlen(vstup); i++)
    {
	 vypis(vstup[i]);
	}
    system("pause");
}

void vypis(char c)
{
     int i;
     char znak = c-'a';
     if ((znak>25)||(znak<0))
        {
        printf("\n -------------------------------- ");
        printf("\n|Chyba, bol zadany VELKY znak.   |");
        printf("\n -------------------------------- \n\n");
        return 0;
        }
        
    
     for (i=0;i<6;i++)
     {
         printf("%s\n",pismena[znak][i]);
     }
     printf("\n");
}
piton
King
King
Používateľov profilový obrázok
Príspevky: 1902
Registrovaný: 02 aug 2005, 0:31
Bydlisko: Hnojisko

Príspevok od používateľa piton »

Funkcia vypis by mala vyzerat nejako takto:

Kód: Vybrať všetko

void vypis(char string[100]) 
{ 
   int i,j,k;    
   int znak;
   for ( j = 0; j < 6; j++ ) { 
         for ( k = 0; k < strlen(string); k++ ) {
              znak = string[k] - 'a';
              printf("%s   ", pismena[znak][j]);
         }
         putchar('\n');                   
      }
      putchar('\n');
}
Ale nieje tam ziadna kontrola medzi, ked prekrocis sirky konzoly, tak to zacne vypisovat bludy ;-)
A vstupny parameter fcie je cely ten retazec... Mozes tam dorobit kontrolu ci je vstup malymi pismenami.
Napísať odpoveď