Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Rysowanie kwadratu (kod ASCII)

Ostatnio zmodyfikowano 2016-11-24 15:39
Autor Wiadomość
Anim
Temat założony przez niniejszego użytkownika
Rysowanie kwadratu (kod ASCII)
» 2016-11-24 00:14:33
Cześć. Mam mały problem. Chciałbym narysować w terminalu kwadrat. Przy czym kwadrat może być wykonany przy użyciu dowolnego znaku z kodu ASCII. I tutaj pojawia się w moim mniemaniu problem. Ponieważ w zależności od znaku, figura przypomina bardziej lub mniej kwadrat, a to ze względu na odstęp pomiędzy znakami - w zależności czy dotyczy to kolumny czy wiersza. Może narysuję kwadrat (teoretyczny) przy użyciu gwiazdek:

****
*   *
*   *
****

Jak widzicie narysowałem figurę 4x4, ale ona kwadratu nie przypomina. I teraz moje pytanie, czy istnieje jakaś możliwość (bez kombinowania za każdym razem spacjami), aby to faktycznie był kwadrat ;p

Pozdrawiam :)

Ps: z góry przepraszam jeśli nie ten dział, ale myślę, że to idealnie nadaje się do podstaw :D
 
P-154068
karambaHZP
» 2016-11-24 00:19:25
figura przypomina bardziej lub mniej kwadrat, a to ze względu na odstęp pomiędzy znakami
****
*  *
*  *
****


IIII
I  I
I  I
IIII


Jak widzisz znak nie ma znaczenia. W terminalu znaki mają stałą szerokość.
Deformacja figury wynika z różnicy między wysokością, a szerokością znaku w terminalu.
P-154069
Anim
Temat założony przez niniejszego użytkownika
» 2016-11-24 00:38:04
Czyli nic nie można z tym zrobić? ^^ czyli czy mi się podoba czy nie muszę mieć prostokąt zamiast kwadratu ;>

Smutek ;(
P-154070
michal11
» 2016-11-24 09:01:08
Możesz tak wyliczać "długości" boków żeby optycznie to był kwadrat, z tym, że wtedy na pewno podstawa i bok nie będą miały tyle samo znaków.
P-154071
Anim
Temat założony przez niniejszego użytkownika
» 2016-11-24 09:57:42
hm. rozumiem. to w takim  razie mi nie pomoże, ponieważ w zadaniu, które mam do zrobienia muszę mieć możliwość wybrania znaku ASCII w celu narysowania figury. Czyli myślę, że bardziej sensowne będzie wstawianie dodatkowej spacji pomiędzy znakami w wierszu. Dziękuję :)
P-154072
karambaHZP
» 2016-11-24 11:25:25
Czyli myślę, że bardziej sensowne będzie wstawianie dodatkowej spacji pomiędzy znakami w wierszu. Dziękuję :)
Możesz pokombinować z rozmiarem czcionki rastrowej w konsoli. Powinien być tam rozmiar 8x8 i wtedy będziesz miał kwadrat.
Szukaj we właściwościach konsoli.
P-154073
Veranez
» 2016-11-24 15:39:03
Możesz zrobić coś w tym stylu, można zmienić znak na dowolny inny, wysokość, szerokość, co chcesz

C/C++
#include <iostream>
#include <conio.h>   // getch()

using namespace std;

const int szerokosc = 28, wysokosc = 28;

char lg = 201; // lewy gorny rog ramki
char pg = 187; // prawy gorny rog ramki
char ld = 200; // lewy dolny rog ramki
char pd = 188; // prawy dolny rog ramki
char gd = 205; //gora, dol
char lp = 186; //lewo, prawo

int main()
{
    //rysowanie ramki
   
    cout << lg; // lewy gorny rog
    for( int i = 0; i < szerokosc; i++ ) //gora
    {
        cout << gd << gd;
    }
    cout << pg << endl; // prawy gorny rog
   
    for( int i = 0; i < wysokosc; i++ ) //lewo, prawo
    {
        cout << lp;
        for( int j = 0; j < szerokosc; j++ )
             cout << "  ";
       
        cout << lp << endl;
    }
   
    cout << ld; // lewy dolny rog
    for( int i = 0; i < szerokosc; i++ )
    {
        cout << gd << gd;
    }
    cout << pd;
   
   
    getch();
    return 0;
}

A jak trzeba to masz jeszcze kod pokazujący znaki ASCII, można zawsze sprawdzić w necie, ale co tam :P

C/C++
#include <iostream>
#include <conio.h>   // getch()

using namespace std;

int main()
{
    for( int i = 0; i < 270; i++ )
         cout << i << " " <<( char ) i << endl;
   
    getch();
    return 0;
}
P-154083
« 1 »
  Strona 1 z 1