Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Błędy w kodzie


Rekomendowane odpowiedzi

Opublikowano

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;
void lose_check(int S)
{
    if (S==0) cout<<"You lose"<<endl; system("pause");
}
int question (int S)
{
    srand(time(NULL));

    int unknown=rand%10+1;
    int shot;
    cin>>shot;
    if (unknown==shot) S=S+100; cout<<"Nice"<<endl;
    else S=S-20; cout<<"Miss"<<endl;

        return S;

}

 void show(int S)
 {
     cout<<"Your money:"<<S<<endl;
 }
int main()
{
    int money=100;
    while (money==0)
    {
    void lose_check(int money);
    int question(int money);
    void show(int money);
    system ("cls");
    }
    return 0;
}

Po jakichś 2 miesiącach postanowiłem powrócić do c++. Sporo pozapominałem, ale odnalazłem taki kod (był trochę inny). Z 14 błędów jakie się pojawiały po poprawkach zostały 2, ale ja już się poddaje :/. Proszę o pomoc ( nie chodzi mi koniecznie o poprawę kodu tylko o wytłumaczenie i wskazanie błędów.

 

Treść błędów:

 

 

'else' without previous 'if'

invaild operands of types 'int()' and 'int' to binary 'operator%'

 

8654014495912661120289.png

Opublikowano

1 błąd: Jeśli w IF albo ELSE masz więcej niż jedna instrukcja musisz dodać nawiasy klamrowe (wpakować je w blok).

 

Dodatkowo jak wywołujesz funkcje to nie pisz "void" itp., i jak przekazujesz zmienną przez argument to też nie pisz jej typu. Czyli coś w stylu:

 

void pokaz(int & zmienna) {

  std::cout << zmienna;

}

 

int main() {

  int zmienna = 10;

  pokaz(zmienna);

}

 

Mam nadzieję że zrozumiesz ;) Dodatkowo "&" znaczy że bazujesz na oryginalanej zmiennej

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Ok thx problem z if załatwiony tylko dziwi mnie jedna rzecz.

Skoro:

Jeśli w IF albo ELSE masz więcej niż jedna instrukcja musisz dodać nawiasy klamrowe (wpakować je w blok).

 

To czemu tu nie ma błędu?

if (S==0) cout<<"You lose"<<endl; system("pause");

Przy wywoływaniu funkcji też mi się wydawało, że nie trzeba pisać 'void', 'int' itp., ale gdy ich nie napiszę to pojawia się błąd

expected primary expression before 'int'

chociaż wydaje mi się, że to niema nic wspólnego xD

 

// został jeszcze 2 błąd

8654014495912661120289.png

Opublikowano

 

To czemu tu nie ma błędu?

if (S==0) cout<<"You lose"<<endl; system("pause");

 

Jest błąd. W warunku if będzie tylko ten kod: cout << "You lose" << endl;

 

system("pause"); jest już poza if. Aby to było dobrze powinno być:

 

if(s==0) {

  cout << "You lose"<< endl;

  system("pause");

}

 

 

 

Jeśli zrobisz tak jak teraz masz, to następne polecenia są już po ifie, czyli else nie jest bezpośrednio po nim. Dlatego ci wywala ten błąd. Co do drugiego to podaj numer linii

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Ehh myślałem, że może być bez klamerek jak wszystko będzie w jednej linii. 2 błąd 18 linijka 

int unknown=rand%10+1;

8654014495912661120289.png

Opublikowano
Opublikowano

zamiast

int unknown=rand%10+1;

powinno być

int unknown=rand()%10+1;

 dobra dzięki wszystkim za pomoc

//e: jest też parę innych błędów, ale takich 'logicznych'(?) np. jest zły warunek w pętli, ale z tym to już sobie poradzę

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;
void lose_check(int S)
{
    if (S==0)
        {
    cout<<"You lose"<<endl;
    system("pause");
}
}
int question (int S)
{
    srand(time(NULL));
    int unknown=rand()%10+1;
    int shot;
    cin>>shot;
    if (unknown==shot)
    {
        S=S+100;
        cout<<"Nice"<<endl;
        }
    else
       {
    S=S-20;
    cout<<"Miss"<<endl;
       }
        return S;

}

 void show(int S)
 {
     cout<<"Your money:"<<S<<endl;
 }
int main()
{
    int money=100;
    while (money>0)
    {
    void lose_check(int money);
    int question(int money);
    void show(int money);
    system ("cls");
    }
    return 0;
}

Po skompilowaniu komputer zaczyna 'buczeć', pojawia się _ (jak się tekst wpisuję) i zaczyna mrugać, a w build logu na czerwono

 

Process terminated with status -1073741510 (0 minute(s), 12 second(s))

 

8654014495912661120289.png

Opublikowano
    void lose_check(int money);
    int question(int money);
    void show(int money);

Co to jest w tej pętli? Deklaracja funkcji czy chcesz je wywołać?

Wywołując funkcje podajesz tylko parametr, usuń void i inta sprzed funkcji, na przykład.

show(money);

W przypadku funkcji z int na samym początku, to musisz ją przekazać jakiejś zmiennej tak, jakbyś przypisywał jej wartość:

int zmienna = question(money);

Rozumiem, że question ma modyfikować wartość zmiennej money, czyż nie?

W takim wypadku można spróbować tak:

money = question(money);

Lub zadeklarować zmienną (parametr) s jako referencje.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

1 błąd: Jeśli w IF albo ELSE masz więcej niż jedna instrukcja musisz dodać nawiasy klamrowe (wpakować je w blok).

 

Dodatkowo jak wywołujesz funkcje to nie pisz "void" itp., i jak przekazujesz zmienną przez argument to też nie pisz jej typu. Czyli coś w stylu:

 

void pokaz(int & zmienna) {

  std::cout << zmienna;

}

 

int main() {

  int zmienna = 10;

  pokaz(zmienna);

}

 

Mam nadzieję że zrozumiesz ;) Dodatkowo "&" znaczy że bazujesz na oryginalanej zmiennej

nie musisz

 

 

int x=10,y=11,z=13;
for(int i=0;i<10;i++) 
     if(i%3==0)   
        x+=y,y+=z,z=i;

 

też jest poprawne

Opublikowano
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <stdio.h>
#include <conio.h>

using namespace std;


int question (int &money)
{
    srand(time(NULL));
    int unknown=rand()%10+1;
    int shot;
    cin>>shot;
    if (unknown==shot)
    {
        money=money+100;
        cout<<"Nice"<<endl;
        }
    else
       {
    money=money-20;
    cout<<"Miss"<<endl;
       }
        return money;

}

 void show(int S)
 {
     cout<<"Your money:"<<S<<endl;
 }
int main()
{
    int money=100;
    while (money>0)
    {
    question(money);
    show(money);
    _getch();
    system ("cls");
    }
    return 0;
}

ok dzięki wszystkim teraz działa poprawnie ;)

8654014495912661120289.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...