• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

cout co z nim nie tak 16 i 19 linijka

Object Storage Arubacloud
0 głosów
282 wizyt
pytanie zadane 19 listopada 2015 w C i C++ przez RoXoR Początkujący (280 p.)

cout co z nim nie tak 16 i 19 linijka

 

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <stdio.h>
using namespace std;
int lgr1;
int lgr2;
int strzalgr1;
int strzalgr2;
string nick1;
string nick2;
int main()
{
    cout << "witaj" <<endl;
    system("cls")
    cout << "Gracz1 podaj nick: " <<endl;
    cin >>nick1;
    system("cls")
    cout << "Gracz2 podaj nick: " <<endl;
    cin >> nick2;
    if(nick1==nick2)
        cout <<"Wybierz inny nick" <<endl;
    cout <<"Gracz2 podaj nick: " <<endl;
    cin >>nick2;
    return 0;
}

 

4 odpowiedzi

+2 głosów
odpowiedź 19 listopada 2015 przez Radfler VIP (101,030 p.)
edycja 19 listopada 2015 przez Radfler

Nie wstawiłeś średników po system("cls"). #EDIT Poza tym:

1. W C++ mamy nagłówek <cstdio>, a nie <stdio.h> (ten drugi jest zdegradowany).

2. Twój program nie wykorzystuje nagłówków <stdio.h> i <windows.h>.

3. Instrukcja return 0; nie jest potrzebna.

4. Dobrze by było, abyś dodał nagłówek <string>, chociaż nie zawsze jest to wymagane.

komentarz 19 listopada 2015 przez radek024 Szeryf (77,160 p.)
return jest potrzebne - main jest typu int, więc musi zwracać wynik ;)
komentarz 19 listopada 2015 przez Radfler VIP (101,030 p.)

No cóż: http://en.cppreference.com/w/cpp/language/main_function Radzę się z tym zapoznać :)

The body of the main function does not need to contain the return statement: if control reaches the end of main without encountering a return statement, the effect is that of executing return 0;.

komentarz 19 listopada 2015 przez niezalogowany
No właśnie. Czemu niby return 0; nie jest potrzebne? Return musi być, nie zaszczepiaj w nim nasienia złych nawyków ;)
komentarz 19 listopada 2015 przez Radfler VIP (101,030 p.)

Słucham? Zły nawyk? Cytat ze Stack Overflow:

It's also worth noting that in C++, int main() can be left without a return value at which point it defaults to returning 0. This is also true with a C99 program. Whether return 0 should be omitted or not is open to debate. The range of valid C program main signatures is much greater.

http://stackoverflow.com/questions/204476/what-should-main-return-in-c-and-c

http://www.codeproject.com/Questions/693038/why-do-we-have-to-use-return

Nie jest to zła praktyka. Jak czegoś pisać nie musimy, to po prostu tego nie piszmy...

komentarz 19 listopada 2015 przez draghan VIP (106,230 p.)

Dobrze by było, abyś dodał nagłówek <string>, chociaż nie zawsze jest to wymagane.
(..)
Jak czegoś pisać nie musimy, to po prostu tego nie piszmy...

Nie byłoby dobrze, z tego samego powodu, dla którego wzmiankowałeś o wyrzuceniu "windows.h" i "stdio.h". Nagłówek <string> włączamy tylko i wyłącznie w przypadku, kiedy chcemy skozystać z klasy std::string lub funkcji, które na taj klasie operują.

A co do zwracania wartości z main(), nawykowo piszę return 0 i ręce mi od tego nie odpadły. :P

komentarz 19 listopada 2015 przez niezalogowany
Masz go draghan :)
komentarz 19 listopada 2015 przez Radfler VIP (101,030 p.)

No cóż, ponad funkcją main zdefiniował zmienne typu std::string, więc powinien dołączyć ten nagłówek (<string>). Poza tym z tego co kojarzę, to gdyby kompilował program z użyciem Visuala, to miałby błędy o nieobecności tej klasy.

Dlaczego wg. Ciebie wywalenie tych dwóch nagłówków nie jest dobre? Wskaż mi proszę miejsce, w którym korzysta z jakichś funkcji z tych bibliotek.

komentarz 19 listopada 2015 przez niezalogowany
Ale wcale nie musi biblioteki string dołączać, program działał by tak samo dobrze, jak ze stringiem. Nawet jeśli lepiej go dodać, tak na wypadek, to czemu tego samego by nie zrobić z return 0;? ;)
komentarz 19 listopada 2015 przez Ehlert Ekspert (212,790 p.)
return funkcji main generalnie wykorzystuje się dla linuxowego wywołania programów kiedy zwracają liczbę, to przekierowuje się ją do plików. Nie jest jednak wymagany.
komentarz 19 listopada 2015 przez Radfler VIP (101,030 p.)
Tak, to się zgadza. Jednak w przypadku tego programu ta instrukcja nie ma znaczenia, więc można ją pominąć.
komentarz 19 listopada 2015 przez Radfler VIP (101,030 p.)

@filipekczek7

Instrukcja return 0; nie ma tutaj żadnego znaczenia. Można ją pominąć i każdy kompilator powinien to zaakceptować.

Nie masz gwarancji, że typ std::basic_string zadziała z samym nagłówkiem <iostream>. Spróbuj skompilować powyższy kod z użyciem Visuala i sprawdź czy nie wyleciały Ci błędy.

komentarz 19 listopada 2015 przez niezalogowany
Dobra! Instrukcji return nie trzeba używać, ale jeśli komuś nie szkoda jednej linijki, to niech sobie wpisze. Koniec tematu ;)
komentarz 19 listopada 2015 przez draghan VIP (106,230 p.)

Dlaczego wg. Ciebie wywalenie tych dwóch nagłówków nie jest dobre? Wskaż mi proszę miejsce, w którym korzysta z jakichś funkcji z tych bibliotek.

Nie zrozumieliśmy się. :)

Jest dobre, jak najbardziej. Co do stringów - skoro ma je w programie, to należy nagłówek dołączyć. A jeżeli ich nie używa, to nie jest wskazane jego dołączenie. A Ty napisałeś coś, co było w tonie "jak Ci się chce, to możesz dołączyć, ale nie musisz". Rozumiesz teraz mój punkt widzenia? :)

komentarz 19 listopada 2015 przez Ehlert Ekspert (212,790 p.)

No mówię jeśli piszesz skrypty pod linuxa w których używasz wywołań swoich programów to ich błędy się przekierowuje do pliku. Jest jakiś taki specjalny plik ze strumieniem błędów, nie pamiętam nazwy. Generalnie returna pisze się z przyzwyczajenia, można go pominąć ale po co. Trzymajmy się tego, ze jak funkcja nie jest voidem to coś zwraca, nawet jeśli jest to main i nie musi. smiley

komentarz 19 listopada 2015 przez Radfler VIP (101,030 p.)

Okokok rozumiem c: Wyszedłem z założenia, że korzysta z kompilatora GCC i Code::Blocks, a tu dołączanie <string>, gdy masz już <iostream> nie jest potrzebne.

komentarz 19 listopada 2015 przez niezalogowany
Pięknie :3 Już, możemy zakończyć temat? ;)
komentarz 19 listopada 2015 przez Radfler VIP (101,030 p.)
Tak, muszę jeszcze polski odrobić ;__;

#KONIEC
komentarz 19 listopada 2015 przez Ehlert Ekspert (212,790 p.)

A ja przyrę angry

 

 

Świruje laugh

komentarz 19 listopada 2015 przez niezalogowany
A ja... A ja już nic nie mam :F DOBRA, KONIEC!
komentarz 19 listopada 2015 przez radek024 Szeryf (77,160 p.)
Same wariaty, ahh te walki o składnię kodu :D to się nazywa dyskusja!
komentarz 19 listopada 2015 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Instrukcji return 0 nie musimy pisać, gdyż zostanie to i tak dodane przed kompilacją, ale tylko dla funkcji main, w innych funkcjach(oprócz voidów) trzeba coś zwrócić. Ale warto napisać to return, kilka znaków nie zbawi :)
0 głosów
odpowiedź 19 listopada 2015 przez niezalogowany
Nie musisz od razu robić nowego pytania, skoro ci napisałem komentarz pid odpowiedzią na twoje inne pytanie. Napisałem tam, że nie dałeś średnika na końcu 17. i 20. (tutaj 15. i 18.) linijki i żebyś pamiętał o stawianiu średników.
komentarz 19 listopada 2015 przez RoXoR Początkujący (280 p.)
sorry ale nie zauwarzyłem ale ok
komentarz 19 listopada 2015 przez niezalogowany
Aha, OK, spoko ;)
0 głosów
odpowiedź 19 listopada 2015 przez radek024 Szeryf (77,160 p.)

Średniki po komendzie 

system("cls");

Poza tym, pamiętaj o klamerkach dla instrukcji if, ponieważ jezeli ich nie ma, wykona się tylko kolejna linia.

0 głosów
odpowiedź 19 listopada 2015 przez Turlaj Nowicjusz (160 p.)
system("cls").

Dodaj ";" Czyli system("cls");

W obu.
komentarz 19 listopada 2015 przez draghan VIP (106,230 p.)
Nie wniosłeś za wiele do tematu - Radfler, filipeczek7 i radek024 już wskazali brak średników. ;)

Na przyszłość unikaj takich postów, bo bardzo łatwo za takie coś dostać sporo niepotrzebnych minusów.
komentarz 19 listopada 2015 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Ehh, ja raz miałem taką sytuację, że napisałem pierwszy odpowiedź, po dwóch godzinach inny Ctrl + C moją odpowiedź i zgadnij czyją odpowiedź autor uznał za najlepszą...
komentarz 20 listopada 2015 przez draghan VIP (106,230 p.)
Całkiem... Heh. Brak słów.

Ale najbardziej i tak mnie rozwalają błędne (!) odpowiedzi wybrane jako najlepsze. Ostatnio takowych nie widziałem na szczęście, ale dawniej się zdarzyło kilka razy.
komentarz 20 listopada 2015 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Ja błędne ukrywam, żeby autor minusów nie musiał zbierać :-)

Podobne pytania

0 głosów
1 odpowiedź 373 wizyt
0 głosów
2 odpowiedzi 228 wizyt
pytanie zadane 13 października 2015 w C i C++ przez grzesieka Nowicjusz (120 p.)

92,632 zapytań

141,500 odpowiedzi

319,879 komentarzy

62,013 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...