Nauka C++ z książki Alexa Allaina - sprawdzanie kodów

Nauka C++ z książki Alexa Allaina - sprawdzanie kodów
KP
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:1
0

Witam. Jestem Tomek. Od pewnego czasu zacząłem się uczyć C++. Niestety nie mam nikogo kto by mi sprawdził moje kody i pomógł mi trochę z nimi. Więc napisałem do Was forumowicze. Posiadam książkę "Przewodnik dla początkujących w C++" Alex'a Allain'a. Próbuję robić te praktyczne zadania (udaje mi się to ;)) ale chciałbym się nauczyć też usprawniac ten mój kod będę wdzięczny za pomoc :)

<ort>O to</ort> pierwsze zadanie które tu pokaże.

Zad1.
Zaimplementuj prosty system weryfikacji haseł, który pobiera hasła w postaci liczb. Ważne powinno być jedno z dwóch haseł, ale w celu ich sprawdzenia użyj tylko jednej instrukcji warunkowej if.

Poprawione spacje i endl zamieniłem na \n

Kopiuj
#include <iostream>
using namespace std;
int main()
{
	string haslo1;
	string haslo2;
	cout << "Weryfikacja hasel. \n";
	cout << "Wprowadz pierwsze haslo: \n";
	cin >> haslo1;
	cout << "Wprowadz drugie haslo: \n";
	cin >> haslo2;
	if (haslo1 == "1111" || haslo2 == "2222")
	{
	cout << "Hasla poprawne. Masz dostep. \n";
	}
	else
	{
	cout << "Hasla nie poprawne. \n";
	}
}

Zad 2.

Napisz niewielki kalkulator, który pobiera na wejściu jeden z operatorów arytmetycznych oraz dwa argumenty, po czym wyświetla wynik obliczeń otrzymany na podstawie tych danych.

Kopiuj
#include <iostream>
using namespace std;
int main()
{
	double x;
	double y;
	string znak;
	cout << "Podaj operator arytmetyczny (+, -, *, /) \n";
	cout <<"Operator: ";
	cin >> znak;
	cout << "Podaj pierwsza liczbe: ";
	cin >> x;
	cout << "Podaj druga liczbe.\n "<< x << znak;
	cin >> y;
	
	if (znak == "+")
	{
		cout << x << znak << y << "="<< x+y <<"\n";
	}
	else if (znak == "-")
	{
			cout << x << znak << y << "="<< x-y <<"\n";
	}
			else if (znak == "*")
			{
					cout << x << znak << y << "="<< x*y <<"\n";
			}
	else if (znak == "/")
	{
			cout << x << znak << y << "="<< x/y <<"\n";
	}
			else
			{
			cout << "Nie poprawny operator arytmetyczny lub liczba \n";
			}
	
	
}

:)

edytowany 3x, ostatnio: flowCRANE
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
4

formatuj kod lepiej, nie boj sie spacji
nie uzywaj endl do nowej linii a '\n'
przy ifach korzystaj z {} nawet jak to jest tylko jedna instrukcja

edytowany 2x, ostatnio: fasadin
GA
Dlaczego zamiast endl używać "\n"?
fasadin
bo endl jeszcze czysci bufor. Jest to dodatkowy narzut i czesto tego nie chcemy robic (czyscic bufora)
KP
Okey będę pamiętać ;)
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Ad 2: zauważ, że w Twoim kodzie powtarza się cout << x << znak << y << "="<< - zrób tak, aby ta linijka widniała w kodzie tylko raz.


Zobacz pozostały 1 komentarz
Patryk27
Jeszcze czego w książce nie miałeś? To nie jest żadna tajemna technika - spójrz na kod i pomyśl sam, na tym po części polega samorozwój.
fasadin
to poszukaj na wlasna reke. Ksiazka nie jest swietoscia
KP
Może jakas podpowiedź mała ? Bo naprawdę niewiem o co chodzi dokładniej. Wam to prościej bo umiecie już a ja nawet nwm o co chodzi bo nie znam podstaw
fasadin
poczytaj o zasadzie DRY oraz funkcjach
Kartechson
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:1
0

Czyli wrzuć sobie przed IF

Kopiuj
 cout << x << znak << y << "= " ;

a po wszystkim cout << "\n" lub endl ;

Kopiuj
edytowany 2x, ostatnio: Kartechson
KP
Ok dzięki nie miałem kiedy ostatnio tego zrobić bo praca
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

Przy okazji:
@KemoPL: jak oceniasz tę książkę?

KP
Ogólnie jak dla mnie fajnie się czyta , ale Zelent na YT jest lepszy :)
vpiotr
Nie żartuj tak nawet. Jego technika kopiego-pejsta przeszła już do klasyki. Jak tak fragment teraz obejrzałem to się zastanawiam czy on nie robi specjalnie sobie jaj z ludzi. https://www.youtube.com/watch?v=vd0zDG4vwOw
Kartechson
Wcześniej miałem do czynienia częściowo z Symfonią i Thinking in C++ Zakupiłem książkę Alexa do wznowienia nauki C++, i jest wg mnie najlepszą, najświeższą książką do C++.
A9
@KemoPL Żartujesz chyba? Przerabiałem kurs Zelenta i tę książkę i w książce jest co najmniej 2 razy więcej potrzebnych informacji.
KP
Oczywiście że zartuhe
MN
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:8
0

Aktualnie nie mam nic do roboty, więc jeśli nadal potrzebujesz kogoś kto ci będzie sprawdzać kody to możesz mi je podsyłać, po szczegóły na PW.

Poza tym nie staraj się nauczyć wszystkiego od razu, funkcje to dość trudny temat i zrozumienie ich za pierwszym razem może okazać się wymagające, dlatego nie ma sensu zaprzątać sobie tym głowy, tak samo jak czyszczeniem bufora bądź zostawianiem go w spokoju, jeśli ci wygodnie używaj << endl; tak jak ja gdy piszę małe programy.

No i najważniejsze to zrobić kilka zadań i przykładów własnych, gdy coś zrozumiesz/nauczysz się. Np.: jak ja uczyłem się o funkcjach to kolejne programy robiłem TYLKO używając funkcji własnych i to nawet w totalnie bezsensowny sposób (np.: w mojej funkcji był jeden cout) w ten sposób lepiej zapamiętuje się składnie i można eksperymentować.

edytowany 1x, ostatnio: MyNameIsUnknown
KP
Ok czyli po prostu będę szedł materiałem książki i robił swoje ćwiczenia okey ;)
A9
  • Rejestracja:ponad 8 lat
  • Ostatnio:7 miesięcy
  • Postów:408
1

Do przechowania jednego znaku lepiej użyj zmiennej char, używanie stringa w tym przypadku jest kompletnie bez sensu.

KP
Próbowałem char ale nie chciał się skompilowac program
spartanPAGE
@KemoPL bo pewnie używałeś cudzysłowów zamiast apostrofów
KP
Możliwe ok dzięki
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)