[C] Program z czcionką kalkulatorową

teusiek
Użytkownik
Użytkownik
Posty: 76
Rejestracja: 14 gru 2016, o 17:02
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 15 razy
Pomógł: 2 razy

[C] Program z czcionką kalkulatorową

Post autor: teusiek »

Zadanie. Napisz program (w języku C), który wprowadzane z klawiatury lub z pliku liczby całkowite wyświetla na ekranie wykorzystując czcionkę kalkulatorową tzn. znaki.

Każdy ze znaków stworzyłem za pomocą funkcji if. Program, który napisałem potrafi wyświetlić na ekranie jedną liczbę w tej czcionce, która została wpisana z klawiatury. Potrzebuję pomocy, nie wiem jak zrobić aby program wczytywał z klawiatury dowolną ilość cyfr oraz jak zrobić żeby wczytywał liczby z pliku i wyświetlał je w tej czcionce. Byłbym wdzięczny za pomoc
Ostatnio zmieniony 20 gru 2016, o 11:34 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Program z czcionką kalkulatorową

Post autor: kalwi »

Wstaw kod może na początek?
teusiek
Użytkownik
Użytkownik
Posty: 76
Rejestracja: 14 gru 2016, o 17:02
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 15 razy
Pomógł: 2 razy

[C] Program z czcionką kalkulatorową

Post autor: teusiek »

Kod: Zaznacz cały

#include <stdio.h>
int main()
{
    int x;
    printf("Wprowadz liczby: ");
    scanf("%d, %d ",&x);
    if(x==0)
        {printf(" _
");
         printf("| |
");
         printf("|_|
");}
    if(x==1)
        {printf(" |
");
         printf(" |
");}
    if(x==2)
        {printf(" _
");
         printf(" _|
");
         printf("|_
");}
    if(x==3)
        {printf(" _
");
         printf(" _|
");
         printf(" _|
");}
    if(x==4)
        {printf("|_|
");
         printf("  |
");}
    if(x==5)
        {printf(" _
");
         printf("|_
");
         printf(" _|
");}
    if(x==6)
        {printf(" _
");
         printf("|_
");
         printf("|_|
");}
    if(x==7)
        {printf(" _
");
         printf("  |
");
         printf("  |
");}
    if(x==8)
        {printf(" _
");
         printf("|_|
");
         printf("|_|");}
    if(x==9)
        {printf(" _
");
         printf("|_|
");
         printf(" _|
");}
}
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Program z czcionką kalkulatorową

Post autor: kalwi »

1)

Kod: Zaznacz cały

 scanf("%d, %d ",&x);
to nie zadziała poprawnie

2) jest coś takiego jak

Kod: Zaznacz cały

else if
poczytaj sobie o tym

3) na końcu powinno być

Kod: Zaznacz cały

return 0
4) formatowanie kodu do poprawy

5) wpisujesz od razu całą liczbę, np. 44

Kod: Zaznacz cały

#include <stdio.h>

void fun(unsigned);

int main()
{
    long long unsigned x;
    unsigned liczba_cyfr;
    char buffer[100];
    printf("Wprowadz liczbe ktora chcesz wyswietlic: ");
    scanf("%llu", &x);
    liczba_cyfr = sprintf(buffer, "%llu", x);

    for (unsigned i = 0; i < liczba_cyfr; ++i)
        fun(buffer[i] - '0');

    return 0;
}

void fun(unsigned x)
{
    if (x == 0)
    {
        printf(" _\n");
        printf("| |\n");
        printf("|_|\n");
    }
    else if (x == 1)
    {
        printf("\n");
        printf(" |\n");
        printf(" |\n");
    }
    else if (x == 2)
    {
        printf(" _\n");
        printf(" _|\n");
        printf("|_\n");
    }
    else if (x == 3)
    {
        printf(" _\n");
        printf(" _|\n");
        printf(" _|\n");
    }
    else if (x == 4)
    {
        printf("\n");
        printf("|_|\n");
        printf("  |\n");
    }
    else if (x == 5)
    {
        printf(" _\n");
        printf("|_\n");
        printf(" _|\n");
    }
    else if (x == 6)
    {
        printf(" _\n");
        printf("|_\n");
        printf("|_|\n");
    }
    else if (x == 7)
    {
        printf(" _\n");
        printf("  |\n");
        printf("  |\n");
    }
    else if (x == 8)
    {
        printf(" _\n");
        printf("|_|\n");
        printf("|_|\n");
    }
    else
    {
        printf(" _\n");
        printf("|_|\n");
        printf(" _|\n");
    }
}
a tak to wygląda:
teusiek
Użytkownik
Użytkownik
Posty: 76
Rejestracja: 14 gru 2016, o 17:02
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 15 razy
Pomógł: 2 razy

[C] Program z czcionką kalkulatorową

Post autor: teusiek »

Dziękuję bardzo, właśnie o to mi chodziło mam jeszcze kilka pytań:
Jak zrobić żeby te liczby były wyświetlane obok siebie a nie w kolejnych wierszach? Tak żebym mógł wypisywać liczby kilku cyfrowe.
Chciałbym wprowadzić także znak minus, aby wyświetlać liczby ujemne. Nie wiem za bardzo jak go stworzyć
athame
Użytkownik
Użytkownik
Posty: 576
Rejestracja: 2 lut 2012, o 21:42
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 1 raz
Pomógł: 64 razy

[C] Program z czcionką kalkulatorową

Post autor: athame »

Usuń
teusiek
Użytkownik
Użytkownik
Posty: 76
Rejestracja: 14 gru 2016, o 17:02
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 15 razy
Pomógł: 2 razy

[C] Program z czcionką kalkulatorową

Post autor: teusiek »

To nie takie proste, bo jeden znak z czcionki kalkulatorowej zajmuje 3 wiersze..
athame
Użytkownik
Użytkownik
Posty: 576
Rejestracja: 2 lut 2012, o 21:42
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 1 raz
Pomógł: 64 razy

[C] Program z czcionką kalkulatorową

Post autor: athame »

Jaki kompilator i system operacyjny?

Jeśli nie chcesz korzystać z bibliotek zależnych od środowiska, to najprościej będzie utworzyć tablice zawierające kolejno pierwszy, drugi i trzeci wiersz liczby, a następnie wyświetlanie całych wierszy (liczby „rysowane” nie jedna po drugiej, a od góry do dołu).
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Program z czcionką kalkulatorową

Post autor: kalwi »

Kod: Zaznacz cały

#include <stdio.h>
#include <string.h>

void fun(char *, char *, char *, char *, const char tablica[10][3][5], unsigned);

const size_t SZEROKOSC = 80;

int main()
{
	const char tablica[10][3][5] = 
	{
		{
			" _  ",
			"| | ",
			"|_| "
		},
		{
		 	"    ",
     		" |  ",
  			" |  ",
		},
		{
			" _  ",
			" _| ",
			"|_  "
		},
		{
			" _  ",
			" _| ",
			" _| "
		},
		{
			"    ",
			"|_| ",
			"  | "
		},
		{
			" _  ",
			"|_  ",
			" _| "
		},
		{
			" _  ",
			"|_  ",
			"|_| "
		},
		{
			" _  ",
			"  | ",
			"  | "
		},
		{
			" _  ",
			"|_| ",
			"|_| "
		},
		{
			" _  ",
			"|_| ",
			" _| "
		}
	};
	
    long long unsigned x;
    unsigned liczba_cyfr;
    char buffer[100];
    printf("Wprowadz liczbe ktora chcesz wyswietlic: ");
    scanf("%llu", &x);
    liczba_cyfr = sprintf(buffer, "%llu", x);

    char wiersz0[SZEROKOSC], wiersz1[SZEROKOSC], wiersz2[SZEROKOSC];
    fun(buffer, wiersz0, wiersz1, wiersz2, tablica, liczba_cyfr);

    return 0;
}

void fun(char *buffer, char * wiersz0, char *wiersz1, char *wiersz2, const char tablica[10][3][5], unsigned liczba_cyfr)
{
	for(size_t i = 0; i < SZEROKOSC; ++i)
	{
		wiersz0[i] = '\0';
		wiersz1[i] = '\0';
		wiersz2[i] = '\0';
	}
	strcpy(wiersz0, tablica[buffer[0] - '0'][0]);
	strcpy(wiersz1, tablica[buffer[0] - '0'][1]);
	strcpy(wiersz2, tablica[buffer[0] - '0'][2]);
	for(size_t i = 1; i < liczba_cyfr; ++i)
	{
		strcat(wiersz0, tablica[buffer[i] - '0'][0]);
		strcat(wiersz1, tablica[buffer[i] - '0'][1]);
		strcat(wiersz2, tablica[buffer[i] - '0'][2]);
	}
	printf("%s\n%s\n%s\n\n", wiersz0, wiersz1, wiersz2);
}
output:

Kod: Zaznacz cały

Wprowadz liczbe ktora chcesz wyswietlic: 9876543210
 _   _   _   _   _       _   _       _
|_| |_|   | |_  |_  |_|  _|  _|  |  | |
 _| |_|   | |_|  _|   |  _| |_   |  |_|
minusa sobie sam wymyśl jak zrobić...

teusiek
Użytkownik
Użytkownik
Posty: 76
Rejestracja: 14 gru 2016, o 17:02
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 15 razy
Pomógł: 2 razy

[C] Program z czcionką kalkulatorową

Post autor: teusiek »

Wielkie dzięki
teusiek
Użytkownik
Użytkownik
Posty: 76
Rejestracja: 14 gru 2016, o 17:02
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 15 razy
Pomógł: 2 razy

[C] Program z czcionką kalkulatorową

Post autor: teusiek »

Mam jeszcze jeden problem, a mianowicie z wypisywaniem w tej czcionce liczb wczytanych z pliku. Program wypisuje te liczby ale nie w tej czcionce w której bym chciał. Proszę o pomoc.

Kod: Zaznacz cały

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

void fun(char *, char *, char *, char *, const char tablica[10][3][5], unsigned);

const size_t SZEROKOSC = 80;

int main()
{
   const char tablica[10][3][5] =
   {
      {
         " _  ",
         "| | ",
         "|_| "
      },
      {
          "    ",
           " |  ",
           " |  ",
      },
      {
         " _  ",
         " _| ",
         "|_  "
      },
      {
         " _  ",
         " _| ",
         " _| "
      },
      {
         "    ",
         "|_| ",
         "  | "
      },
      {
         " _  ",
         "|_  ",
         " _| "
      },
      {
         " _  ",
         "|_  ",
         "|_| "
      },
      {
         " _  ",
         "  | ",
         "  | "
      },
      {
         " _  ",
         "|_| ",
         "|_| "
      },
      {
         " _  ",
         "|_| ",
         " _| "
      }
   };

    long long unsigned x;
    unsigned liczba_cyfr;
    char buffer[100];

    int t;
    printf("1.Wczytaj liczby z klawiatury\n2.Wczytaj liczby z pliku\n");
    printf("Wybierz operacje: ");
    scanf("%d",&t);
    if(t==1)
    {
    printf("Wprowadz liczbe ktora chcesz wyswietlic: ");
    scanf("%llu", &x);
    liczba_cyfr = sprintf(buffer, "%llu", x);

    char wiersz0[SZEROKOSC], wiersz1[SZEROKOSC], wiersz2[SZEROKOSC];
    fun(buffer, wiersz0, wiersz1, wiersz2, tablica, liczba_cyfr);


    }
    if(t==2)
        {
            FILE *plik = fopen("liczby.txt", "r");
            long long n;
            if (plik == NULL)
            {
                printf("Otwarcie nieudane");
                exit(-1);
            }
            while (fscanf(plik, "%d", &n) != EOF)
            {
                printf("%d\n", n);
            }
            fclose(plik);
        }
    return 0;
}

void fun(char *buffer, char * wiersz0, char *wiersz1, char *wiersz2, const char tablica[10][3][5], unsigned liczba_cyfr)
{
    size_t i;
   for(i=0; i<SZEROKOSC; ++i)
   {
      wiersz0[i] = '\0';
      wiersz1[i] = '\0';
      wiersz2[i] = '\0';
   }
   strcpy(wiersz0, tablica[buffer[0] - '0'][0]);
   strcpy(wiersz1, tablica[buffer[0] - '0'][1]);
   strcpy(wiersz2, tablica[buffer[0] - '0'][2]);

   for(i = 1; i < liczba_cyfr; ++i)
   {
      strcat(wiersz0, tablica[buffer[i] - '0'][0]);
      strcat(wiersz1, tablica[buffer[i] - '0'][1]);
      strcat(wiersz2, tablica[buffer[i] - '0'][2]);
   }
   printf("%s\n%s\n%s\n\n", wiersz0, wiersz1, wiersz2);
}
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Program z czcionką kalkulatorową

Post autor: kalwi »

nic dziwnego, linijka 95 jest bez sensu
ODPOWIEDZ