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

Ocena projektu poczatkujacego w C++ v.2 [ankieta]

Object Storage Arubacloud
0 głosów
239 wizyt
pytanie zadane 18 lipca 2019 w C i C++ przez resteqs Początkujący (260 p.)

Witam , wlasnie poprawilem moj Code ( v.1 https://forum.pasja-informatyki.pl/440678/ocena-projektu-poczatkujacego-w-c).

Mam jednak kilka pytan.

1.Do jakich polecen mam dodac std:: zeby moc usunac using namespace std; 

2. Czy takie sformatowanie ktorego uzylem jest odpowiednie czy moze jakos inaczej?

3. Co mam zrobic aby moj Code byl"przenosny"(pisany w linuxie-rasbian)

#include <iostream>
#include <unistd.h>
#include <ctime>
#include <stdio.h>
using namespace std;

int main()
{
//zmienne
string start_commend="start";   string start_cin;   string answer;
int math;   int try_user=0; int guess;  int multiplicate;   int number;int math_minus;


    std::cout << "Witamy w naszej grze!" << endl;
    std::cout << "Wpisz start aby rozpoczac!" << endl;
    std::cin >> start_cin;

if (start_commend==start_cin)
        {
        std::cout << "Zaczynamy"<< endl << endl << endl;
        }
else
    {
        std::cout << "Zla komenda! Auto-Start za 30s"<< endl;
        sleep (1);
    for (int i=29; i>=0; i--)

        {
        sleep(1); system("clear");
        std::cout << i << endl;
        }
    }
    std::cout << "Pomyslalem sobie liczbe od 1..1000" << endl;
    std::cout << "Zgadnij co to za liczba :) Oto kilka podpowiedzi" << endl;
    srand (time(NULL));
    number=rand()%1000+1;

if (number>=500)
        {
        std::cout<<"Liczba jest wieksza od 500"<< endl;
        }
else
        {
       std::cout << "Liczba jest mniejsza niz 500" << endl;
        }
if (number%2 != 1)
        {
        std::cout << "Liczba jest podzielna przez 2" << endl;
        }
else
        {
        std::cout << "Liczba nie jest podzielna przez 2" << endl << endl;
        }

    std::cout<<"Lubisz Matematyke? (tak/nie)";
    std::cin >> answer;
if(answer=="tak")
        {
        srand (time(NULL));
        multiplicate=rand()%100+1;
        srand (time(NULL));
        math_minus=rand()%1000+1;

        math = multiplicate*number-math_minus;
        std::cout << "Jesli pomnozysz te liczbe przez "<< multiplicate << " i odejmiesz " << math_minus << " to wynik bedzie rowny "<< math << endl;
        }


else
    {
    std::cout << "Szkoda :( ";
    }

while(guess!=number)
    {
    try_user ++;
        std::cout<<"( "<<try_user<< ". Proba )Ok to jaka to liczba: ";
        std::cin >> guess;
    if(guess==number)

        std::cout<<"Wygrales w "<<try_user<<" probie! :D"<< endl;

    if(guess<number)

        std::cout<<"to za malo"<< endl;

    if(guess>number)

        std::cout<<"To za duzo"<< endl;
    }


getchar();getchar();

    return 0;
}

 

Możliwe odpowiedzi:
bardzo dobrze (0 głosów)
dobrze (2 głosów, 50%)
jako tako (1 głos, 25%)
slabo (1 głos, 25%)
beznadzieja (0 głosów)

2 odpowiedzi

+2 głosów
odpowiedź 18 lipca 2019 przez tkz Nałogowiec (42,000 p.)

1. cpp.sh/7xzve a żeby było łatwiej, to wszystko z standardowej biblioteki. 

2. No nie jest za dobrze


#include <iostream>
#include <unistd.h>
#include <ctime>
#include <stdio.h>
using namespace std;

int main()
{
    // zmienne
    string start_commend = "start";
    string start_cin;
    string answer;
    int math;
    int try_user = 0;
    int guess;
    int multiplicate;
    int number;
    int math_minus;

    std::cout << "Witamy w naszej grze!" << endl;
    std::cout << "Wpisz start aby rozpoczac!" << endl;
    std::cin >> start_cin;

    if (start_commend == start_cin)
    {
        std::cout << "Zaczynamy" << endl << endl << endl;
    }
    else
    {
        std::cout << "Zla komenda! Auto-Start za 30s" << endl;
        sleep(1);
        for (int i = 29; i >= 0; i--)

        {
            sleep(1);
            system("clear");
            std::cout << i << endl;
        }
    }
    std::cout << "Pomyslalem sobie liczbe od 1..1000" << endl;
    std::cout << "Zgadnij co to za liczba :) Oto kilka podpowiedzi" << endl;
    srand(time(NULL));
    number = rand() % 1000 + 1;

    if (number >= 500)
    {
        std::cout << "Liczba jest wieksza od 500" << endl;
    }
    else
    {
        std::cout << "Liczba jest mniejsza niz 500" << endl;
    }
    if (number % 2 != 1)
    {
        std::cout << "Liczba jest podzielna przez 2" << endl;
    }
    else
    {
        std::cout << "Liczba nie jest podzielna przez 2" << endl << endl;
    }

    std::cout << "Lubisz Matematyke? (tak/nie)";
    std::cin >> answer;
    if (answer == "tak")
    {
        srand(time(NULL));
        multiplicate = rand() % 100 + 1;
        srand(time(NULL));
        math_minus = rand() % 1000 + 1;

        math = multiplicate * number - math_minus;
        std::cout << "Jesli pomnozysz te liczbe przez " << multiplicate << " i odejmiesz "
                  << math_minus << " to wynik bedzie rowny " << math << endl;
    }

    else
    {
        std::cout << "Szkoda :( ";
    }

    while (guess != number)
    {
        try_user++;
        std::cout << "( " << try_user << ". Proba )Ok to jaka to liczba: ";
        std::cin >> guess;
        if (guess == number)

            std::cout << "Wygrales w " << try_user << " probie! :D" << endl;

        if (guess < number)
            std::cout << "to za malo" << endl;

        if (guess > number)
            std::cout << "To za duzo" << endl;
    }

    getchar();
    getchar();

    return 0;
}

http://format.krzaq.cc/

3. Zamień to unistd.h na coś innego, co spełnia tą samą funkcję w kodzie.

Dodatkowo poczytaj o https://pl.wikipedia.org/wiki/CamelCase , 

komentarz 18 lipca 2019 przez resteqs Początkujący (260 p.)
moglbym dodac windows.h oprocz tego? czyli miec i unistd i windows ? Ktorego formatowania mam uzyc?

1. a konkretnie?
komentarz 18 lipca 2019 przez resteqs Początkujący (260 p.)
1. Chodzi mi oto czy mam uzyc nwm. std:: przy if while etc. ?

A przy srand?
komentarz 18 lipca 2019 przez tkz Nałogowiec (42,000 p.)
Przy string i endl, btw zmień std::endl na "\n". Dlaczego? Jedyną różnicą jest to, że std::endl opróżnia bufor wyjściowy, a '\n' nie.  Ogólnie debuger Ci powie, gdzie brakuje.

Wiem, że była dyrektywa, iż na linuxie ma używać tych libek, a na Windowsie tych. Tylko nie mogę sobie przypomnieć, może ktoś to rozwinie.
+1 głos
odpowiedź 18 lipca 2019 przez Marcin Siniarski Gaduła (4,420 p.)

1.Do jakich poleceń mam dodać std:: żeby móc usunąć using namespace std; 

2. Czy takie sformatowanie którego użylem jest odpowiednie czy może jakoś inaczej?

3. Co mam zrobić aby mój Code był "przenośny" (pisany w linuxie-rasbian)

  1.  Używaj std::string, std::endl
  2. Szczerze, mam nadzieje, że ten kod wygląda tak tylko tutaj na forum.
    Oczywiście, formatowanie jest zależne od osoby, ale zwykle wszystko co ma jakieś ciało (if, else, elseif, for, while, funkcja) jego zawartość jest wcięta 2 lub 4 spacje
  3. Usuń funkcje system i nagłówek "unistd.h". Na Windows powinieneś czyść ekran za pomocą clr, a na Linuxie i Macu clear.

 Zastosuj jeszcze funkcje. Pomogą zorganizować wszystko co napisałeś.

komentarz 18 lipca 2019 przez tkz Nałogowiec (42,000 p.)

Usuń funkcje system i nagłówek "unistd.h". Na Windows powinieneś czyść ekran za pomocą clr, a na Linuxie i Macu clear.

Dlaczego?

komentarz 18 lipca 2019 przez Marcin Siniarski Gaduła (4,420 p.)
Co dlaczego? Funkcja system to nic innego niż podawanie poleceń do konsoli systemu operacyjnego. Na Windowsie używasz cls, a na Unixie clear żeby wyczyścić ekran konsolowy.
Z resztą aby używać tej funkcji powinno się includować "cstdlib", ponieważ "unistd.h" jest Unixowym nagłówkiem
komentarz 18 lipca 2019 przez tkz Nałogowiec (42,000 p.)
Na windowsie działają obie wersje, cls i clear.
komentarz 18 lipca 2019 przez resteqs Początkujący (260 p.)

@Marcin Siniarski,

  1. Szczerze, mam nadzieje, że ten kod wygląda tak tylko tutaj na forum. 
    Oczywiście, formatowanie jest zależne od osoby, ale zwykle wszystko co ma jakieś ciało (if, else, elseif, for, while, funkcja) jego zawartość jest wcięta 2 lub 4 spacje

Przeciez jest wciete. 

tkz dal mi linka do strony z formatowaniem tylko nie wiem ktore formatowanie byloby najlepsze w c++

http://format.krzaq.cc/

komentarz 18 lipca 2019 przez Marcin Siniarski Gaduła (4,420 p.)

@tkz,

Nazwa 'clear' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne,
program wykonywalny lub plik wsadowy.

Niestety nie

1
komentarz 18 lipca 2019 przez tkz Nałogowiec (42,000 p.)

Dziwne, u mnie w cmd działają obie wersję. Muszę o tym poczytać w takim razie. 

resteqs wybierz to, które wyda Ci się bardziej czytelne. 

Podobne pytania

0 głosów
1 odpowiedź 275 wizyt
pytanie zadane 17 lipca 2019 w C i C++ przez resteqs Początkujący (260 p.)
+1 głos
3 odpowiedzi 1,243 wizyt
+11 głosów
7 odpowiedzi 652 wizyt
pytanie zadane 30 marca 2019 w Nasze projekty przez kondzio18 Początkujący (380 p.)

92,568 zapytań

141,420 odpowiedzi

319,620 komentarzy

61,954 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!

...