Skocz do zawartości

Pomoc w poprawie kodu c++


Recommended Posts

siemka.

Chcialem zrobic moją drugą wersje kalkulatora i myslalem ze wszystko dobrze a tu failed :/

Otoz zrobilem osobne te z nawiasami(kolumny kodu??):

 

void MenuLiczby()
{
 int LOpcja;
 cout << endl;
 cout << "Wybierz operacje: " << endl;
 cout << "1.Mnozenie" << endl;
 cout << "2.Dzielenie" << endl;
 cout << "3.Dodawanie" << endl;
 cout << "4.Odejmowanie" << endl;
 cout << endl;
 cout << "5.Cofnij" << endl;
 cin >> LOpcja;
 
 switch (LOpcja)
 {
 case 1: Mnozenie(); break;
 case 2: Dzielenie(); break;
 case 3: Dodawanie(); break;
 case 4: Odejmowanie(); break;
 case 5: GlMenu(); break;
 default: cout << "Nieznana opcja" << endl;
  cout << endl;
 }

 

I dalej zrobilem cos źle z if i else:

}

void Mnozenie()
{
 int MnWybor1;
 cout << endl;
 cout << "Podaj pierwsza liczbe: " << endl;
 cin >> MnWybor1;

 int MnWybor2;
 cout << "Podaj druga liczbe: " << endl;
 cin >> MnWybor2;

 if (MnWybor1, MnWybor2 < 0.0)
  cout << "Bez liczb ujemnych" << endl;
  cout << endl;

  int MnMenu1;
  cout << "Co dalej?: " << endl;
  cout << "1.Jeszcze raz" << endl;
  cout << "2.Menu" << endl;
  cin >> MnMenu1;

  switch (MnMenu1)
  {
  case 1: Mnozenie(); break;
  case 2: GlMenu(); break;
  default: cout << "Nieznana opcja" << endl;
  cout << endl;
  }
 
 else (MnWybor1, MnWybor2 > 0.0);
  int MnWynik = MnWybor1 * MnWybor2;
  cout << MnWybor1 << " * " << MnWybor2 << " = " << MnWynik;
  cout << endl;

  int MnMenu2;
  cout << "Co dalej?: " << endl;
  cout << "1.Jeszcze raz" << endl;
  cout << "2.Menu" << endl;
  cin >> MnMenu2;

  switch (MnMenu2)
  {
  case 1: Mnozenie(); break;
  case 2: GlMenu(); break;
  default: cout << "Nieznana opcja" << endl;
  cout << endl;
  }
}

 

I jak kompiluje to pisze ze nie znalazlo Mnozenie().

 

PS.Dalej jest tez Odejmowanie(), Dzielenie(), Dodawanie() ale calego nie dalem bo jeszcze jakis noobek mi ukradnie moje błędy ;)

PS2. na koncu jest:

 

void main()

{

MenuLiczby()

Wyjscie

}

bo zrobilem osobno.

 

Prosze o pomoc w poprawie kodu, tego if i else i wytlumaczeniu czemu nie chce znalesc tych funkcji np. Mnozenie().

 

@edit  moge dac caly kod na PW jak by ktos chcial.

 

Z gory dziekuje. :)

Edytowane przez seebeek17
Link to post
Share on other sites

Przeciez autor tematu wyraznie zaznaczyl w jednym z poprzednich tematow ze umie programowac i bierze sie za pisanie botow i AI. Nie widze sensu pomagac. Z reszta wspominal ze robi super kalkulator - wlasnie widze, pozdrawiam :hahaha:

Jedno z najgorszych rzeczy jakie przyszlo mi w zyciu zobaczyc jest chodzi o kod ... Jak widze co sie dzieje w Mnozenie()

to chce umrzec.

  • Popieram 1
Link to post
Share on other sites

Przeciez autor tematu wyraznie zaznaczyl w jednym z poprzednich tematow ze umie programowac i bierze sie za pisanie botow i AI. Nie widze sensu pomagac. Z reszta wspominal ze robi super kalkulator - wlasnie widze, pozdrawiam :hahaha:

Jedno z najgorszych rzeczy jakie przyszlo mi w zyciu zobaczyc jest chodzi o kod ... Jak widze co sie dzieje w Mnozenie()

to chce umrzec.

 

Troche musialem wczesniej naklamac bo zazwyczaj kazdy mowi "ucz sie c++(czy czegos innego)"  i ma sprawe gdzies i nie chce pomuc ani wytlumaczyc nawet troche tematu wiec napisalem ze umiem i 1 osoba pomogla. :)

 

Kiedys zadalem moze teraz wydajace sie glupie pytanie-jak sie robi gry- i wszyscy pisali "ucz sie c++"...

nie pisali po co, co mi to c++ da ale mialem sie uczyc a teraz wiem po co c++ w robieniu gier(np. AI, symulowanie ognia-"rand", czy w strategiach cos) wiec sie troche ucze tego, i nie trzeba odprawiac kogos z "ucz sie c++" gdy jest zainteresowany np. czyms z programowania, bo wystarczy troche wytlumaczyc a jak sie spodoba to sie czlowiek dalej uczy w danym zainteresowaniu a jak nie to gra dalej w Minecrafta albo CoD'a :/

Link to post
Share on other sites

po pierwsze Twój problem leży, w tym iż wywołujesz funkcje przed jej definicja przez co kompilator nie może złożyć kodu gdyż nie widzi ciała funkcji

masz 3 opcje rozwiązania tego problemu:

- dodanie deklaracji wszystkich funkcji na początku kodu

- przesunięcie definicji funkcji przed ich wywołanie

- zrobienie headera z funkcjami

 

po drugie masz błędy z klamerkami w if'ach - jeśli masz do wykonania więcej niż jedną operację zawsze ujmujesz je w klamerki inaczej np wywali Ci błąd przy else, że nie ma wcześniej użytego if'a, nie piszę już tutaj o błędach w samym działaniu programu

 

ogólnie kod jest napisany bardzo chaotycznie i niezgodnie z "normami" ISO, ale to już szczegół

 

mam nadzieję, że pomogłem

powodzenia :)

Edytowane przez darasz89
  • Popieram 1
Link to post
Share on other sites

- dodanie deklaracji wszystkich funkcji na początku kodu

jak to zrobić?

 

- przesunięcie definicji funkcji przed ich wywołanie

czyli?

 

- zrobienie headera z funkcjami

czego z funkcjami??

 

ogólnie kod jest napisany bardzo chaotycznie i niezgodnie z "normami" ISO

Dziekuje ;)

 

Nie no, tak serio to tych 3 pierwszych nie czaje.

Byl bym wdzieczny(i dal plusa :D) jak bys jeszcze pomogl.

I nwm. jak te klamry dac przy else i if'ie :/

Link to post
Share on other sites
- dodanie deklaracji wszystkich funkcji na początku kodu

dodajesz wpis będący zapowiedzią istnienia funkcji np:

void Dodaj();

 

- przesunięcie definicji funkcji przed ich wywołanie

załóżmy, że w funkcji A wywołujesz funkcję B, także definicja B musi być przed [wyżej] A

 

- zrobienie headera z funkcjami

http://www.learncpp.com/cpp-tutorial/19-header-files/

http://www.fizyka.umk.pl/~grochu/wiki/doku.php?id=zajecia:jpr:zajecia5

http://pl.wikibooks.org/wiki/C/Biblioteki

http://www.edu.godula.com/?zo=cpp_17

 

co do if-else: http://hektor-programowanie.net/artykul.php?x=94

Edytowane przez darasz89
  • Popieram 1
Link to post
Share on other sites

Dzieki darasz89, masz plusa.
Jesli masz checi jeszcze pomoc to powiedz jak zrobic nie console application, tylko to drugie chyba windows application...



aha a jeszcze to:

- dodanie deklaracji wszystkich funkcji na początku kodu

to dac na samym poczatku czy po #include?

Link to post
Share on other sites

 

 

Jesli masz checi jeszcze pomoc to powiedz jak zrobic nie console application, tylko to drugie chyba windows application...

normlanie? wybierasz projekt tworzysz interfejs i programujesz, poszukaj w google

 

 

 

to dac na samym poczatku czy po #include?

zaraz po using namespace std;

  • Popieram 1
Link to post
Share on other sites

aha a mam jeszcze ostatnie, ostatnie pytanie...

co mam zrobic ze jak sie wpisze druga liczbe ujemna to zeby do skutku prosilo o liczbe dodatnia tak jak mi sie udalo w DoWybor1?

 

void Dodawanie()
{
    int DoWybor1;
    cout << endl;
    cout << "Podaj pierwsza liczbe: ";
    cin >> DoWybor1;

    if (DoWybor1 < 0.0)
    {
        cout << "Bez liczb ujemnych" << endl;
        Dodawanie();
    }

    int DoWybor2;
    cout << "Podaj druga liczbe: ";
    cin >> DoWybor2;

    if (DoWybor2 < 0.0)
        cout << "Bez liczb ujemnych" << endl;
    
    int DoWynik = DoWybor1 + DoWybor2;
    cout << endl;
    cout << DoWybor1 << " + " << DoWybor2 << " = " << DoWynik;
    cout << endl;

    int DoMenu2;
    cout << endl;
    cout << "Co dalej?: " << endl;
    cout << "1.Jeszcze raz" << endl;
    cout << "2.Menu" << endl;
    cout << "Twoj wybor: ";
    cin >> DoMenu2;

    switch (DoMenu2)
    {
    case 1: MenuLiczby(); break;
    case 2: GlMenu(); break;
    default: cout << "Nieznana opcja" << endl;
        }
}

Link to post
Share on other sites

aha to thx, kolejny plus :)

 

to jeszcze jedno pytanko, napewno dla cb latwe :P

 

jak zrobic cos na wzor aktywacji programu?

np. mozna uzywac darmowej wersji ale jest opcja by aktywowac wpisujac kod.

umiem to ale jak zrobic by zapamietalo aktywacje i nie trzeba bylo aktywowac za kazdym wlaczeniem programu??



co do do...while albo while to nie umiem, nwm jak to uzyc... :/

zrobilem tak:

 

void Dodawanie()
{
    int DoWybor1;
    cout << endl;
    cout << "Podaj pierwsza liczbe: ";
    cin >> DoWybor1;

    if (DoWybor1 < 0.0)
    {
        cout << "Bez liczb ujemnych" << endl;
        Dodawanie();
    }

    int DoWybor2;
    cout << "Podaj druga liczbe: ";
    cin >> DoWybor2;

    while (DoWybor2 < 0.0)
    {
    cout << "Bez liczb ujemnych" << endl; break;
    }
    
    int DoWynik = DoWybor1 + DoWybor2;
    cout << endl;
    cout << DoWybor1 << " + " << DoWybor2 << " = " << DoWynik;
    cout << endl;

    int DoMenu2;
    cout << endl;
    cout << "Co dalej?: " << endl;
    cout << "1.Jeszcze raz" << endl;
    cout << "2.Menu" << endl;
    cout << "Twoj wybor: ";
    cin >> DoMenu2;

    switch (DoMenu2)
    {
    case 1: MenuLiczby(); break;
    case 2: GlMenu(); break;
    default: cout << "Nieznana opcja" << endl;
    }
}

 

i while ma mnie gdzies i i tak liczy ujemne :/  help me ;(

Link to post
Share on other sites

 

 

np. mozna uzywac darmowej wersji ale jest opcja by aktywowac wpisujac kod. umiem to ale jak zrobic by zapamietalo aktywacje i nie trzeba bylo aktywowac za kazdym wlaczeniem programu??

uzyc zapisania konfiguracji do pliku a przy starcie sprawdzac czy kod zostal wpisany

 

 

 

while (DoWybor2 < 0.0) { cout << "Bez liczb ujemnych" << endl; break; }

 

break; tutaj jest głupotą

zrób sobie flage [zmienna sterującą] którą ustaw na false, następnie do while wczytanie zmiennej i sprawdzenie czy jest dodatnia, jesli tak, to ustawiasz flage na true

  • Popieram 1
Link to post
Share on other sites

break; tutaj jest głupotą

zrób sobie flage [zmienna sterującą] którą ustaw na false, następnie do while wczytanie zmiennej i sprawdzenie czy jest dodatnia, jesli tak, to ustawiasz flage na true

a czy(oczywiscie jesli chcesz) mozesz mi napisac taka zmienna sterujaca?

moze to jest takie podawanie gotowca ale sumiennie przestudiuje i sie doucze tej zmiennej :)

Link to post
Share on other sites

nie czaje... :/

 

bool DoWybor2 = false;
    do
    {
        cout << "Podaj druga liczbe: ";
        cin >> DoWybor2;
    } while(!DoWybor2);

 

i nie dziala... 

jak to zrobic?? ;(

 

PS.

uzyc zapisania konfiguracji do pliku a przy starcie sprawdzac czy kod zostal wpisany

i to jak zrobic...??

Link to post
Share on other sites

dobra juz zrobilem, i przy okazji obczailem o co chodzi z petlami :P

cos takiego:

 

if  (DoWybor2 < 0.00);
    {
    do
        {
            cout << "Bez liczb ujemnych" << endl;
            cout << endl;
            cout << "Podaj druga liczbe: ";
            cin >> DoWybor2;
        } while (DoWybor2 < 0.00);
    }

 

hmm...ludzaco podobne do pana wyzej xD



ok to juz prawie zrobione tylko jeszcze niewiem jak z ta aktywacja...

niby zapisanie kodu do pliku zrobilem i odczytanie do konsolki tez ale

jak zrobic by w okreslonym momencie pobieralo dany zapisany przy pierwszej aktywacji kod i wpisywalo go samo i pisalo program aktywowany i kliknac z getch(); ??



*program zostal juz aktywowany

Link to post
Share on other sites

1)

do...while po ifie z tym samym warunkiem.

Czego to ludzie nie wymyślą.

Prościej można to samo zapisać:

while  (DoWybor2 < 0.00);
{
    cout << "Bez liczb ujemnych" << endl << endl << "Podaj druga liczbe: ";
    cin >> DoWybor2;

}

2)

Nie lepiej sprawdzić, czy plik (byłbym za kluczem w rejestrze) zawiera poprawny kod, a jeśli nie zapytać użyszkodnika?

Choć uważam, że na tym poziomie zaawansowania do kluczy aktywacyjnych jeszcze kawałek...

  • Popieram 1
Link to post
Share on other sites

aha dobra dzieki :)

 

co do kluczy to nie wiem jak to zrobic(choc jesli chce mozesz mi cos podpowiedziec ;))

narazie(jesli nic o kluczach w rejestrze nie powiesz) to zadowole sie czyms np.

wlacza sie program w darmowej wersji i jest opcja w menu "zarejestruj", potem po wpisaniu poprawnego kodu, restartuje sie(wylacza automatycznie po napisie "dziekujemy" i po getch() ) - w tym samym folderze co jest program robi plik .txt ,w ktorym zapisuje owy kod- i przy kazdym wlaczeniu programu sprawdza czy .txt z kodem jest i zaleznie od tego wlacza sie aktywowana lub nie wersja programu.

 

chyba zrozumiale to napisalem :P

dalo by sie cos takiego?



PS. mam jeszcze plusy do rozdania! :D



@edit i jeszcze jedno...

jak zrobic by w tym .txt podczas sprawdzania licencji program szukal tylko kodu np. w 5 wierszu??

zeby nie czytal calego .txt tylko sam kod potrzebny do sprawdzenia w 5 wierszu(bo w 1-4 bedzie np. zarejestrowano dla....itd...)??

Link to post
Share on other sites
Gość
This topic is now closed to further replies.
  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...