Czas - formatowanie wyjścia

Czas - formatowanie wyjścia
MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0

Witam mam problem z programem dotyczącym czasu, nie mogę sformatować wyjścia :

Kopiuj

#include <iostream>

using namespace std;
class czas{
private:
   int godzina;
   int minuta;
public:
//czas();
czas(int h,int m){
godzina=h%24;
minuta=m%60;
}
void dodaj(int m){
minuta+=m;
godzina+=minuta/60;
minuta=minuta%60;
godzina=godzina%24;
}
int podajczas(){

cout<<godzina/10<<godzina%10<<":"<<minuta/10<<minuta%10<<endl;
}
};




int main()
{   char tmp[5];
    cin>>tmp;
    czas x((((int)tmp[0]-48)*10+(int)tmp[1]-48),(((int)tmp[3]-48)*10+(int)tmp[4]-48));
    int y,i=0;
    int tab[100];
    while(cin>>y){
        x.dodaj(y);
     tab[i]=x.podajczas();
        i++;
    }




    return 0;
}

Tak wygląda kod, lecz nie wiem jak zmienić sposób wprowadzania danych, muszę zrobić aby było tak:
21:14
15
10
14

Wyjście :21:53
W jaki sposób to policzyć?

edytowany 1x, ostatnio: Ktos
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 dni
  • Postów:3561
1

Ja mam wszystko na nie.

Zmiatanie overflołów pod dywan, zakres odpowiedzialności klas, magiczne stałe, zbędne elementy wynikające z nieznajomości języka, main() który nie wiadomo co ma pokazywać.
Nawet nie chce mi się ułożyć moich własnych zarzutów w kategoriach.


Bo C to najlepszy język, każdy uczeń ci to powie
MI
Naprawdę dopiero się uczę, tak napisałem, inaczej nie potrafię:/
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 23 godziny
  • Lokalizacja:Szczecin
1

Zacznij od formatowania kodu, potem przejdź do wyjścia. Takiego bloba to się czytać nie chce.


AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 dni
  • Postów:3561
0

Implementacja po to jest prywatna, abyś miał wolność JAK to zrobisz.
Jeśli dwa pola uwierają (a chyba tak), to możesz zmienić prywatną implementację na jedno pole MINUTY, w interpretację dwupolową (godziny / minuty 0-59) zrobić tylko na wyjściu.

UPDATE:
nie napisałem na liście zarzutów, że chyba nazwa klasy kłamie.
Więc to jest "obiektywny czas z zegarka" czy "różnica czasu, delta, odstęp"


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 2x, ostatnio: AnyKtokolwiek
MI
Czyli tak nie może być ? Nie wiem prawie nic o programowaniu obiektowym, a w internecie większość kursów jest słaba
MI
@AntKtokolwiek Pomógł byś mi ? Kod działa tak jak powinien, chciałbym tylko jakoś inaczej te dane wprowadzać i wyświetlać
MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0
Kopiuj
#include <iostream>

using namespace std;
class roznica_czasu{
private:
   int godzina;
   int minuta;
public:
//czas();
    roznica_czasu(int h,int m){
    godzina=h%24;
    minuta=m%60;
    }
    void dodaj(int m){
        minuta+=m;
        godzina+=minuta/60;
        minuta=minuta%60;
        godzina=godzina%24;
        }
    int podajczas(){
        cout<<godzina/10<<godzina%10<<":"<<minuta/10<<minuta%10<<endl;
}
};




int main()
{   char tmp[5];
    cin>>tmp;
    roznica_czasu x((((int)tmp[0]-48)*10+(int)tmp[1]-48),(((int)tmp[3]-48)*10+(int)tmp[4]-48));
    int y,i=0;
    int tab[100];
        while(cin>>y){
            x.dodaj(y);
            x.podajczas();
            i++;
            }



    return 0;
}

edytowany 3x, ostatnio: mikko
MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
1

Trochę poprawiłem formatowanie, kod działa i chciałbym go zostawić w tej formie, tylko nie mam pojęcia jak poprawić dane wyjściowe

MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0
Kopiuj

#include <iostream>

using namespace std;
class roznica_czasu {
private:
    int godzina;
    int minuta;

public:
    //czas();
    roznica_czasu(int h, int m)
    {
        godzina = h % 24;
        minuta = m % 60;
    }
    void dodaj(int m)
    {
        minuta += m;
        godzina += minuta / 60;
        minuta = minuta % 60;
        godzina = godzina % 24;
    }
    int podajczas()
    {

        cout << godzina / 10 << godzina % 10 << ":" << minuta / 10 << minuta % 10 << endl;
    }
};

int main()
{
    char tmp[5];
    cin >> tmp;
    roznica_czasu x((((int)tmp[0] - 48) * 10 + (int)tmp[1] - 48), (((int)tmp[3] - 48) * 10 + (int)tmp[4] - 48));
    int y, i = 0;
    int tab[100];
    while (cin >> y) {
        x.dodaj(y);
        x.podajczas();
        i++;
    }

    return 0;
}

MI
jeśli to wiele zmieniło to program poprawił za mnie
TomaszLiMoon
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 18 godzin
  • Postów:530
2

Zamiast męczyć się, skorzystaj z już istniejących bibliotek np. chrono
Możesz to przecież napisać w prostszy sposób:

Kopiuj
#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>

using namespace std;

struct timef
{
    int hours {0};
    int minutes {0};
    int seconds {0};

    timef( int hours_ , int minutes_ , int seconds_ )
    : hours {abs(hours_)%24} , minutes {abs(minutes_)%60} , seconds {abs(seconds_)%60}
    {}

    operator chrono::system_clock::time_point()
    {
       chrono::system_clock::time_point set_time_point {chrono::seconds(hours*60*60+minutes*60+seconds)};
       return set_time_point;
    }
};


class TimeManager
{

private:

    chrono::system_clock::time_point time_point {chrono::system_clock::now()};

public:

    TimeManager() = default;
    TimeManager( chrono::system_clock::time_point time_point_ ): time_point {time_point_} {}

    TimeManager& operator=( chrono::system_clock::time_point time_point_ )
    {
       time_point = time_point_;
       return *this;
    }

    template< typename T >
    TimeManager operator+( T value )
    {
        TimeManager tm {time_point};
        tm.time_point += value;
        return tm;
    }

    friend ostream& operator<<( ostream& os , const TimeManager& tm )
    {
        time_t time = chrono::system_clock::to_time_t(tm.time_point);
        os << "Time is = " << put_time(gmtime(&time), "%H:%M:%S") << '\n';
        return os;
    }
};

int main()
{
    TimeManager time {timef{5,20,21}};

    cout << time;
    cout << time + 120s;
    cout << time + 30min;
    cout << time + 1h;

    time = time + 12min;
    cout << time;

    time = timef{21,13,51};
    cout << time;
}
edytowany 13x, ostatnio: TomaszLiMoon
MI
Wygląda bardziej skomplikowanie, mój kod działa poprawnie, i liczy wszystko tak jak powinien, ale nie wiem jak sformatować wyjście
MI
Program pięknie działa, ale nadal jest ten sam problem co u mnie Wejście: 23:47 15 12 10 Wyjście: 23:47 00:02 00:14 00:24
AK
Czyli jednak nie "działa" ....
AK
Prawdopodobnie obaj trudność z północą zamiatacie pod dywan.
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 dni
  • Postów:3561
0
mikko napisał(a):

Trochę poprawiłem formatowanie, kod działa i chciałbym go zostawić w tej formie, tylko nie mam pojęcia jak poprawić dane wyjściowe

Potrafię uwierzyć, że input (wejście) bywa trudny, mogą być dopasowania się do wymogów wymagające chwili zatrzymania i pomyślenia.

Ale output po prostu się siada, i się robi. Dostałeś we własnych wątkach sporo ciekawego i prawidłowego kodu nt wyjścia. Nie mam pojęcia, jakie w tym mogą być problemy.

Jakie masz cele i jakie próby robiłeś?


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 dni
  • Postów:3561
0

Program pięknie działa, ale nadal jest ten sam problem co u mnie Wejście: 23:47 15 12 10 Wyjście: 23:47 00:02 00:14 00:24 - mikko 30 minut temu

Arytmetyka w dodaj() wywołuje moją niepewność i bezradność.. A racjonalność nie chce tego czytać. Właśnie wyznałem to psychoanalitykowi.

Moja propozycja już padła: przejście na jedną liczbę (minut / sekund, obojętne), i zrobienie extra geterów do godzin i minut. Dla intelektualnej uczciwości geter do dób.
(Tylko nie myśleć o d..ch, ciurlać wam się zachciewa)


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 dni
  • Postów:3561
0
TomaszLiMoon napisał(a):
cout << time + 120s;

Tomasz, ten literał mnie (pozytywnie) męczy.
Widziałem coś podobnego w Groovym (jest to częścią oficjalnej dokumentacji), ale tam jest pisownia 30.min (czyli mówiąc po cplusowemu przeciążenie operatora kropka).
Jakie są podstawy, że to w ogóle jest legalne? Bo widzę, że jest.
MSVC wymagało dodania #define _CRT_SECURE_NO_WARNINGS ale bez związku z pytaniem, na gmttime


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
TomaszLiMoon
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 18 godzin
  • Postów:530
0

Jakie są podstawy, że to w ogóle jest legalne?

Od C++11 są dostępne user-defined literals. Ja skorzystałem z już predefiniowanych w bibliotece <chrono>.

JV
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 miesiące
  • Postów:242
0

```cpp <- dawaj to przy wklejaniu kodu to będzie numeracja w poście i precyzyjniej ktoś może wskazać błąd

zamiast robić jakieś modulo i dzielenia przy wyświetlaniu, przekaż manipulatory do strumienia:

Kopiuj
#include <iomanip>
    int podajczas() {
        cout << setw(2) << setfill('0') << godzina << ':'
             << setw(2) << setfill('0') << minuta << endl;

poza tym ten kod się nie kompiluje int podajczas() nie ma returna, więc mówisz o działającym kodzie a pokazujesz inną wersję

Jeżeli chodzi o formatowanie kodu to chyba tylko notatnik tego nie ma. Jest AStyle, a przy instalacji clang dodatkowo dostajemy clang-format w pakiecie, więc wystarczy clang-format -i -style=google main.cpp i gotowe. Wklejanie niesformatowanego kodu to trochę jak pójście do dentysty z nieumytymi zębami.

Jak program jest interaktywny to trzeba użytkownika informować co się od niego oczekuję. Uruchomiłem go, zobaczyłem czarny ekran i nie wiem czy się zawiesił, czy ostro pracuje? Jakiś prompt musi być, chciałbym widzieć coś w tym stylu:

Kopiuj
Podaj czas (HH:MM):
23:45
ok, podano czas 23:45
podaj roznice czasu w minutach:
16
ok, podano 16, biezacy czas 23:45, roznica 00:01

EDIT:
odczytanie z wejścia czasu można zrobić trochę inaczej i pozbyć się tego potworka w mainie:

Kopiuj
    string input;
    cin >> input;

    stringstream ss(input);

    int godzina;
    char separator;
    int minuta;

    ss >> godzina >> separator >> minuta;

    roznica_czasu x(godzina, minuta);
edytowany 1x, ostatnio: jvoytech
MI
Niestety w moim przypadku nie może być tego ponieważ mam specjalnego bota sprawdzającego to, dane wejściowe i wyjściowe muszą się pokrywać wraz z jego ,, nauczonymi" odpowiedziami
MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0
Kopiuj

#include <iostream>
#include <iomanip>

using namespace std;
class roznica_czasu {
private:
    int godzina;
    int minuta;

public:
    // czas();
    roznica_czasu(int h, int m)
    {
        godzina = h % 24;
        minuta = m % 60;
    }
    void dodaj(int m)
    {
        minuta += m;
        godzina += minuta / 60;
        minuta = minuta % 60;
        godzina = godzina % 24;
    }
    int podajczas()
    {
        cout << setw(2) << setfill('0') << godzina << ':' << setw(2) << setfill('0')
             << minuta << endl;
    }
};

int main()
{
    int tmp;
    string input;
    cin >> input;

    stringstream ss(input);

    int godzina;
    char separator;
    int minuta;

    ss >> godzina >> separator >> minuta;

    roznica_czasu x(godzina, minuta);

    int y, i = 0;
    int tab[100];
    while (cin >> y) {
        x.dodaj(y);
        i++;
        ;
    }
    cout << input << endl;
    x.podajczas();
    return 0;
}


Teraz już mam w ładniejszy sposób wczytywanie oraz wyświetlanie czasu, jak mogę przechwycić poszczególne godziny pomiędzy operacjami, aby móc wszystkie później wypisać ?

JV
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 miesiące
  • Postów:242
0

przed while stwórz sobie vector<roznica_czasu> etapy, a w pętli po uaktualnieniu czasu o wczytane minuty dodaj etap do wektora etapy.push_back(x). Wyświetlenie później etapów będzie banalnie proste:

Kopiuj
for (auto etap : etapy) {
    etap.podajczas();
}

Zastanów się nad zmianą roznica_czasu na np. po prostu Czas, poza tym klasy zwykle zaczyna się z dużej litery. Zamiast podajczas zastosuj przeciążenie operatora <<. Metoda dodaj(int) może lepiej żeby się nazywała dodajMinuty, albo powinna akceptować jako parametr nie int a np. obiekt typu Minuty.

MI
Bardzo Panu dziękuję, widzę że nie dodał się mój komentarz, wszystko pięknie działa, lecz niestety nie może być c++11 Można w inny sposób wyświetlić te auto etap ?
BO
Zamiast auto użyj po prostu nazwy twojego obiektu, czyli roznica_czasu.
MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0

Niestety takie błedy sypie screenshot-20200416205854.png

Kod aktualnie wygląda tak:

Kopiuj

#include <iostream>
#include <iomanip>
#include <vector>

using namespace std;

class roznica_czasu {
private:
    int godzina;
    int minuta;

public:
    // czas();
    roznica_czasu(int h, int m)
    {
        godzina = h % 24;
        minuta = m % 60;
    }
    void dodaj(int m)
    {
        minuta += m;
        godzina += minuta / 60;
        minuta = minuta % 60;
        godzina = godzina % 24;
    }
    int podajczas()
    {
        cout << setw(2) << setfill('0') << godzina << ':' << setw(2) << setfill('0')
             << minuta << endl;
    }
};

int main()
{
    int tmp;
    string input;
    cin >> input;

    stringstream ss(input);

    int godzina;
    char separator;
    int minuta;

    ss >> godzina >> separator >> minuta;

    roznica_czasu x(godzina, minuta);

    int y, i = 0;
    int tab[100];

    vector<roznica_czasu> etapy;
    while (cin >> y) {
        x.dodaj(y);
        etapy.push_back(x);
        i++;
    }
    cout << input << endl;
    for (auto etap : etapy) {
        etap.podajczas();
    }
    return 0;
}
JV
w main możesz usunąć zmienne tmp, tab, i bo są nieużywane. oprócz <sstream> którego już ci zasugerował kq możesz dodać jeszcze <string>. int podajczas zmień na void wyswietlczaswtedy nazwa będzie odpowiednia do tego co ta funkcja faktycznie robi
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 23 godziny
  • Lokalizacja:Szczecin
0

#include <sstream>


MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0

screenshot-20200416224536.png
dziękuję za rady, już prawie jest zamierzony efekt, niestety krzyczy odnośnie roznica_czasu

JV
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 miesiące
  • Postów:242
0
Kopiuj
    for (vector<roznica_czasu>::iterator it = etapy.begin(); it != etapy.end(); ++it) {
        it->podajczas();
    }

albo dodaj do opcji kompilacji -std=c++11 lub c++14 a nawet c++17

MI
-std+c++11 nie mogę dodać do kodu, czyż nie ? To musi być w ustawieniach kompilatora, zgadza się ?
JV
tak, w ustawieniach kompilacji to gdzieś powinno być jako checkerbox do odhaczenia, albo w polu tekstowym do kompilatora trzeba dopisać -std=c++17
MI
Chyba gdzies literówka jest ale nie widzę :( po wpisaniu godziny następne godziny to 15 zawsze a minuty dodaje poprawnie
MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0

screenshot-20200416233520.png

BO
U mnie przy tych samych danych działa dobrze.
JV
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 miesiące
  • Postów:242
0

nie wklejaj obrazków, wystarczy tekst skopiować z konsoli. Pokaż ostateczny kod bo nie jestem jasnowidzem, jedynie co mogę teraz napisać to "u mnie działa"

MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0
Kopiuj
#include <iostream>
#include <iomanip>
#include <vector>

using namespace std;

class roznica_czasu {
private:
    int godzina;
    int minuta;

public:
    // czas();
    roznica_czasu(int h, int m)
    {
        godzina = h % 24;
        minuta = m % 60;
    }
    void dodaj(int m)
    {
        minuta += m;
        godzina += minuta / 60;
        minuta = minuta % 60;
        godzina = godzina % 24;
    }
    int podajczas()
    {
        cout << setw(2) << setfill('0') << godzina << ':' << setw(2) << setfill('0')
             << minuta << endl;
    }
};

int main()
{
    int tmp;
    string input;
    cin >> input;

    //stringstream ss(input);

    int godzina;
    char separator;
    int minuta;

   // ss >> godzina >> separator >> minuta;

    roznica_czasu x(godzina, minuta);

    int y=0, i = 0;
    int tab[100];

    vector<roznica_czasu> etapy;
    while (cin >> y) {
        x.dodaj(y);
        etapy.push_back(x);
        i++;
    }
    cout << input << endl;
   for (vector<roznica_czasu>::iterator it = etapy.begin(); it != etapy.end(); ++it) {
        it->podajczas();
    }
    return 0;
}

Zobacz pozostałe 2 komentarze
JV
no ale poprzednio @kq ci napisał, żebyś dołączył nagłówek <sstream>
MI
Przepraszam, pracuję na 3 komputerach, i gdzieś na jednym zmienię na innym nie, teraz faktycznie wszysko jest oki, Bardzo, bardzo dziękuję za pomoc
JV
to super, ale domyślasz się może dlaczego wyświetlały ci się takie dziwne godziny gdy te linie były zakomentowane?
MI
Szczerze, na innym komputerze z zakomentowanym działa :D nie wiem dlaczego
JV
ale czy działa poprawnie? dodaj do opcji kompilacji -Wall -Wextra -pedantic to dostaniesz podpowiedź w warningach co jest nie tak. Przy następnych programach lepiej je sobie dodaj a jak jesteś odważny to dodatkowo -Werror
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)