Obżartuchy SPOJ

Obżartuchy SPOJ
CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0

Link do zadania>> https://pl.spoj.com/problems/GLUTTON/

Kopiuj
#include <iostream>

using namespace std;

double obliczanie() {
	double n, m, wynik;
	cout << "podaj n (liczba zaproszonych obzartuchow <10.000)i m (liczba ciastek w jednym pudelku)" << endl;
	cin >> n >> m;
	cout << endl;
	cout << "Podaj czas jedzenia ciastka przez kolejnego obzartucha " << endl;
	double* czasy = new double[n];
	double* wynik1 = new double[n];
	for (int i = 0; i < n; i++) {
		cin >> czasy[i];
	}
	double iloscpudelek = 0;
	for (int i = 0; i < n; i++) {
		
		wynik= czasy[i] * m;
		cout << wynik << "  << czas na zjedzenie pelnego pudelka" << endl;
		wynik1[i] = 86400 / wynik;
		cout << wynik1[i] << " ile pudelek mozna zjesc w dzien" << endl;
		iloscpudelek = wynik1[i] + iloscpudelek;
		cout << "suma wynosi: " << iloscpudelek;
		
	}
	return (int)iloscpudelek;
}



int main() {

	int iletestow;
	cin >> iletestow;
	for (int i = 0; i < iletestow; i++)
	{
		obliczanie();
	}
	

}

wynik pokazuje poprawny 7.2, lecz nie da się kupić 7.2 pudełek, trzeba kupić ich 8.
jak to napisać? bo nie mam pomysłu? myslalem coś o modulo i rzutowaniu na int, ale nie daję rady

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
1

Nie wiem czy to wystarczy, ale zamień

Kopiuj
return (int)iloscpudelek;

na

Kopiuj
return (int)(iloscpudelek + 0.5);
CZ
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Postów:2294
0

Spróbuj tej funkcji: std::ceil
https://en.cppreference.com/w/cpp/numeric/math/ceil

Ona Ci podaną liczbę zmiennoprzecinkową zaokrągla do wyższej wartości, która jest liczbą całkowitą. Czyli:
std::ceil(+7,2) zwróci 8.

CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0

output jest 7.2, nawet jak zmienilem

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:12 minut
  • Postów:4896
3

Żadnych double, musisz znaleźć liczbę wszystkich ciastek jakie zjedzą obżartuchy; w pętli, po ich ilości, dla każdego podzielić liczbę sekund doby przez czas (w sekundach), w jakim obżartuch zjada ciastko bez reszty, np:

Kopiuj
    int div(int a, int b) {
       return (int) (a / b);
     }

Uzyskaną liczbę ciastek podzielić z resztą przez liczbę ciastek w pudełku, gdy reszta wieksza od zera dodać jeden do wyniku.


edytowany 2x, ostatnio: lion137
_13th_Dragon
"gdzy reszta wieksza od zera dodać jeden do wyniku" => ceil()
lion137
Tak, tak, ale dla porządku, całe rozumowanie w liczbach całkowitych.
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:10 minut
2

Podstawowy błąd początkującego na SPOJ:
wypisywanie zachęt użytkownika, które nie są opisane w treści zadania.
Rozwiązanie ocenia maszyna nie człowiek, więc wypisywać masz tylko to co jest dokładnie opisane w treści.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
CR
jak już mówiłem, to jest dla mnie gdy pisze zadanie, bym lepiej mógł zrozumieć, co dostaje na outpucie a co wpisuje. Gdy wysyłam, usuwam zbędne dodatki
enedil
@crypton: to do takich komunikator używaj cerr zamiast cout
CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0
Kopiuj
#include <iostream>

using namespace std;

double obliczanie() {
	double n, m, wynik;
	cout << "podaj n (liczba zaproszonych obzartuchow <10.000)i m (liczba ciastek w jednym pudelku)" << endl;
	cin >> n >> m;
	cout << endl;
	cout << "Podaj czas jedzenia ciastka przez kolejnego obzartucha " << endl;
	double* czasy = new double[n];
	double* wynik1 = new double[n];
	for (int i = 0; i < n; i++) {
		cin >> czasy[i];
	}
	double iloscpudelek = 0;
	for (int i = 0; i < n; i++) {
		
		wynik= czasy[i] * m;
		cout << wynik << "  << czas na zjedzenie pelnego pudelka" << endl;
		wynik1[i] = 86400 / wynik;
		cout << wynik1[i] << " ile pudelek mozna zjesc w dzien" << endl;
		iloscpudelek = wynik1[i] + iloscpudelek;
		cout << "suma wynosi: " << iloscpudelek;
		
	}
	return ceil(iloscpudelek);
}



int main() {

	int iletestow;
	cin >> iletestow;
	for (int i = 0; i < iletestow; i++)
	{
		obliczanie();
	}
	

}

https://zapodaj.net/0ffed83f334a2.png.html
to jest output jaki dostaje, przy dodaniu tej funkcji ceil

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
1
Kopiuj
#include <cstdio>
using namespace std;

int main()
  {
   unsigned T,N,M,X;
   unsigned long long sum;
   for(scanf("%u",&T);T--;printf("%llu\n",(sum+M-1)/M)) for(sum=0,scanf("%u%u",&N,&M);N--;sum+=24*60*60/X) scanf("%u",&X);
   return 0;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0

ktos ma pomysł odnosnie tego zaokraglania?

_13th_Dragon
Przecież masz w poście wyżej działający kod.
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:12 minut
  • Postów:4896
0

Co zaokrąglać, podałem Ci algorytm rozwiązujący zadanie; powyżej jego implementacja.


CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0

ale ja go totalnie nie rozumiem, sam bym tego nie napisał, więc jaki sens by wklejać to na SPOJ?
chciałbym byś pomógł mi udoskonalić tak mój kod, by przy użyciu tego co już mam, ostateczny wynik był zaokrąglany

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:12 minut
  • Postów:4896
1

Spróbuj przepisać swoje rozwiązanie na nowo, według przepisu, który podałem; żadnych double i zaokrągleń, przejdzie, bo @_13th_Dragon przechodzi.


CR
zamienić wszelkie double na inty?
enedil
@crypton: tak, zamień na inty
CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0

zamieniając każdego double na int, przy takim outpucie jak poprzednio https://zapodaj.net/0ffed83f334a2.png.html
da mi wynik 6 co jest totalnie błędne.

CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0
Kopiuj
#include <iostream>
#include <cmath>


using namespace std;

double obliczanie() {
    double n, m, wynik;
    cout << "podaj n (liczba zaproszonych obzartuchow <10.000)i m (liczba ciastek w jednym pudelku)" << endl;
    cin >> n >> m;
    cout << endl;
    cout << "Podaj czas jedzenia ciastka przez kolejnego obzartucha " << endl;
    double* czasy = new double[n];
    double* wynik1 = new double[n];
    for (int i = 0; i < n; i++) {
        cin >> czasy[i];
    }
    double iloscpudelek = 0;
    for (int i = 0; i < n; i++) {

        wynik = czasy[i] * m;
        cout << wynik << "  << czas na zjedzenie pelnego pudelka" << endl;
        wynik1[i] = 86400 / wynik;
        cout << wynik1[i] << " ile pudelek mozna zjesc w dzien" << endl;
        iloscpudelek = wynik1[i] + iloscpudelek;
        cout << "suma wynosi: " << iloscpudelek << endl;

    }
    return ceil(iloscpudelek);
}

int main() {

    int iletestow;
    cin >> iletestow;
    for (int i = 0; i < iletestow; i++)
    {
        cout<<obliczanie();
    }

}

kod wygląda tak
output tak:https://zapodaj.net/0718a39a3ecb3.png.html
a powinno tak: https://pl.spoj.com/problems/GLUTTON/ w czym problem?

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0

Po kiego ci ta tablica?
Którą na dodatek nie zwalniasz.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
CR
rozumiem, że można to napisać na 30 innych sposobów, ja niestety rozumiem jedynie ten i chciałbym się go trzymać. Co do zwalniania, sluszna uwaga, już to modyfikuje, lecz to nie zmieni błędu
_13th_Dragon
Błąd wskazano ci kilkakrotnie, - używasz liczb zmiennoprzecinkowych a trzeba stosować tylko i wyłącznie liczby całkowite
SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 8 godzin
0

To zadanie jest dość czułe na zaokrąglanie, trzymaj

Kopiuj
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    int testy = 0;
    cin >> testy;
    while (testy--)
    {
        int ile_las = 0, wpud = 0, wynik = 0;
        cin >> ile_las >> wpud;
        for (int i =0; i < ile_las;i++)
        {
            int czas = 0;
            cin >> czas;
            wynik = wynik + (86400 / czas);
        }
        cout << ceil(float(wynik) / float(wpud)) << "\n";
    }
    return 0;
}

CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0

nie chce gotowego rozwiazania, chce pomocy w rozbudowaniu wlasnego.

S7
  • Rejestracja:prawie 5 lat
  • Ostatnio:16 dni
  • Postów:354
0

Tu nie chodzi o to żebyś kopiował kod od innych osób z forum, tylko przeanalizował co robi poprawny kod a czego nie robi twój


Competitive Google searcher
edytowany 1x, ostatnio: Suchy702
enedil
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 14 godzin
  • Postów:1027
1

Taka ogólna uwaga się nasuwa: w zadaniach algorytmicznych bardzo nieczęsto użycie floatów/double ma sens, i gdy to się dzieje, to lepiej żebyś miał bardzo dobry powód.

CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0
Kopiuj
#include <iostream>
#include <cmath>

using namespace std;

int obliczanie() {
    int n, m, wynik;
    cout << "podaj n (liczba zaproszonych obzartuchow <10.000)i m (liczba ciastek w jednym pudelku)" << endl;
    cin >> n >> m;
    cout << endl;
    cout << "Podaj czas jedzenia ciastka przez kolejnego obzartucha " << endl;
    int* czasy = new int[n];
    int* wynik1 = new int[n];
    for (int i = 0; i < n; i++) {
        cin >> czasy[i];
    }
    double iloscpudelek = 0;
    for (int i = 0; i < n; i++) {

        wynik = czasy[i] * m;
        cout << wynik << "  << czas na zjedzenie pelnego pudelka" << endl;
        wynik1[i] = 86400 / wynik;
        cout << wynik1[i] << " ile pudelek mozna zjesc w dzien" << endl;
        iloscpudelek = wynik1[i] + iloscpudelek;
        cout << "suma wynosi: " << iloscpudelek << endl;

    }
    return ceil(iloscpudelek);
}

int main() {

    int iletestow;
    cin >> iletestow;
    for (int i = 0; i < iletestow; i++)
    {
        cout << obliczanie();
    }

}

zmienilem wszystkie double,floaty na inty, jak powiedziales
output to 6 dla danych :2,10 3600 1800 (czyli takich jak ostatnio)
a prawidlowo powinno byc: 7,2 czyli 8 pudelek

Zobacz pozostały 1 komentarz
enedil
Tutaj ewidentnie musisz wyłapać jakiegoś buga, więc posiedź nad tym kodem i go wyłap
enedil
Inaczej się nie nauczysz
CR
jeden mowi ze inty, drugi ze nie, juz sam nie wiem czy int to problem czy nie xd
CR
no jesli w 22 linii wyjdzie liczba z przecinkiem, to w wynik1[i] i tak zapisuje sie tylko liczba calkowita
enedil
Nikt nie mówi, że double, każdy mówi, że inty
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:12 minut
  • Postów:4896
0

Zeby to policzyć, gdzies musi być modulo, inaczej nie distaniesz dobrego wyniku.


CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0
Kopiuj
#include <iostream>
#include <cmath>

using namespace std;

double obliczanie() {
    double n, m, wynik;
    
    cin >> n >> m;
    
    double* czasy = new double[n];
    double* wynik1 = new double[n];
    for (int i = 0; i < n; i++) {
        cin >> czasy[i];
    }
    double iloscpudelek = 0;
    for (int i = 0; i < n; i++) {

        wynik = czasy[i] * m;
       
        wynik1[i] = 86400 / wynik;
    
        iloscpudelek = wynik1[i] + iloscpudelek;
       

    }
    return ceil(iloscpudelek);
}

int main() {

    int iletestow;
    cin >> iletestow;
    for (int i = 0; i < iletestow; i++)
    {
        cout << obliczanie();
    }

}

dla takich danych wejsciowych:
3 356
123
32999
10101

u mnie ouput to 3
poprawny output to 2

nie rozumiem w ktorym miejscu to modulo mialoby sie znajdowac? przy wydaniu wyniku i mialoby sprawdzac czy wynik jest liczba po przecinku?

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:12 minut
  • Postów:4896
0

Żadnych double, unsigned long long dla pewności. Gdzie modulo? Jak już Masz juz liczbę ciastek jakie zjedzą obżartuchy, to musisz podzielić ją przez liczbę ciastek w pudełku; ale gdy jest z tego dzielenia reszta, trzeba dodać jeszcze pudełko (żeby nie brakło).


CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0
Kopiuj
#include <iostream>
#include <cmath>

using namespace std;

unsigned long long obliczanie() {
    unsigned long long  n, m, wynik;

    cin >> n >> m;

    unsigned long long* czasy = new unsigned long long[n];
    unsigned long long* wynik1 = new unsigned long long[n];
    for (int i = 0; i < n; i++) {
        cin >> czasy[i];
    }
    unsigned long long  iloscpudelek = 0;
    for (int i = 0; i < n; i++) {

        wynik = czasy[i] * m; // ile sekund na cale pudelko?

        wynik1[i] = (double)(86400 / wynik);  // ile pudelek w dzien?
        if (86400 % wynik != 0) {
            iloscpudelek = iloscpudelek + 1;
        }
       

        iloscpudelek = wynik1[i] + iloscpudelek; 

    }
    return ceil(iloscpudelek);
}

int main() {

    int iletestow;
    cin >> iletestow;
    for (int i = 0; i < iletestow; i++)
    {
        cout << obliczanie();
    }

}

tak zmodyfikowalem, wydaje sie ze wartosci wychodza dobre, jednak spoj nie przyjmuje

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 18 godzin
  • Lokalizacja:Szczecin
3

Po co tutaj te wszystkie dynamiczne tablice? Fuj.

Kod jest mało czytelny, ale mam wrażenie że przez uparte dążenie do bezsensownego tablicowania wszystkiego zapędziłeś się w błędną interpretację zadania. Jeśli jeden obżartuch zje 5 ciastek, a drugi 4, a pudełko ma 10, to wystarczy jedno pudełko, nie potrzeba dwóch.

Potraktuj sobie to rozwiązanie jako referencyjne:

Kopiuj
int main()
{
	std::ios_base::sync_with_stdio(false);
	size_t testcases;
	std::cin >> testcases;
	for(size_t i{}; i < testcases; ++i){
		int gluttons, box_size;
		std::cin >> gluttons >> box_size;
		int total{};
		for(size_t j{}; j < gluttons; j++){
			int s;
			std::cin >> s;
			total += 86400/s;
		}
		int out = (total + box_size - 1)/box_size;
		std::cout << out << '\n';
	}
}

CR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:64
0

ja tylko prosze o podpowiedzi odnosnie mojego kodu, jesli znalbym i rozumialbym lepsze rozwiazania to napisalbym to inaczej, niestety to jest dla mnie najbardziej zrozumiale, niestety jesli chodzi o te zadanie
po prostu jest blad bo liczy dobrze, ale mam problem z tym zaokraglaniem

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 18 godzin
  • Lokalizacja:Szczecin
3

To może postaraj się zrozumieć poprawne rozwiązania? Masz błąd, bo źle liczysz. Przykładowo, dla danych 1 2 10 15700 15700 program powinien wypluć 1, a nie 2. Powinien się też w ogóle skompilować.

I nie stosuj tablic jak nie musisz. A jak musisz (a nie musisz) to koniecznie używaj std::vector zamiast new[].


edytowany 1x, ostatnio: kq
SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 8 godzin
1

@crypton: Ok o ile dobrze pamiętam to obliczanie ilości pudełek musi być tak jak ja to zrobiłem czyli z rzutowaniem na float-y bo inaczej sędzie na puści (testy były robione pod "floatowe" przybliżenia). Być może istnieje więcej takich "musi być dokładnie w ten sposób"), ale nie jestem aktywnym użytkownikiem spoj-a od dłuższego czasu. Ale pamiętam że to jedno z tych zadań w których trzeba pewne rzeczy zrobić w ściśle określony sposób. Dlatego dałem zatwierdzony kod. Generalnie czytaj komentarze pod zadaniami oraz wątki na forum spoj-a o takowym, czasem można tam znaleźć dodatkowe wymagania których nie ma w treści zadania.

lion137
Ja bym jednak spróbował bez floatów.
kq
Moje rozwiązanie nie ma żadnych floatów, a działa. Magia ;​)
SI
Być może ktoś puknął się zdrowo w głowę i poprawił testy, jak pisałem od dłuższego czasu mnie na spoj-u nie ma
enedil
Lepsza rada - nie rób zadań na spoju, tylko sensowne contesty na codeforces
kq
To już dobre kilka lat temu musieli się puknąć w głowę https://i.imgur.com/eFcJmdd.png
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)