Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
C++

Błąd w programie losującym

c++

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 Caine

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:10
  • Imię:Adrian
  • Lokalizacja:Malbork
Offline

Napisano 18.12.2015 16:10

Witam!
Jakiś czas temu wykonalem program z losowaniem liczby z zadanego zakresu od 1 do n. a uzytkownik ma zgadywac liczbe. taka gra losujaca. Sam program dzialal bez zarzutów dopoki nie dodałem do niego nowych linijek kodu mających na celu zapis zmiennej liczba_strzalow jesli jest ona mnieksza od wcześniejszych wynikow z wczesniejszych wykonan programu. w tym celu uzylem wczytywania danych i zapisu do pliku. Nie mam pomysłu co zrobiłem nie tak bo nie działa.
nowe linijki kodu mające wlasnie za zadanie sprawdzac czy pobito rekord zapisalem jako komentarze w kodzie ktory jest pod spodem. Do tego wszystkiego po moich zmianach i próbach by zadzialalo zrobilem cos tak ze teraz nawet kod z grą nie chce zadziałać... Zamieszczam cały kod a nie tylko urywek poniewaz nie wiem gdzie szukać juz blędu. Mam nadzieje na szybką odpowiedź.


#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>
using namespace std;
long long  Losowanie()
{
 cout<<"Wybór poziomu trudności."<<endl;
    cout<<"[1]Easy."<<endl;
    cout<<"[2]Medium."<<endl;
    cout<<"[3]Hard."<<endl;
 int przedzial,poz_trud,liczba_strzalow=0
    cout<<"wybieram: ";
      cin>>poz_trud;
    if(poz_trud==1)
    {
    przedzial=10;
    }
    else if(poz_trud==2)
    {
    przedzial=500;
    }
    else
    {
    przedzial=1000;
    }
cout<<"Losowanie liczby..."<<endl;
srand(time (NULL));
int liczba= (rand ()%przedzial)+1;
int strzal;
  do
    {
	 cout<<"Podaj liczbe od 1 do "<<przedzial<<": "<<endl;
cin>>strzal;
if (strzal<1||strzal>przedzial)
{
continue;
}
++liczba_strzalow;
if (strzal>liczba)
{
cout<<"Wylosowana liczba jest mniejsza od Twojej typowanej."<<endl;
cout<<"Spróbuj ponownie!"<<endl;
}
else if (strzal <liczba)
{
cout<<"Wylosowana liczba jest większa od Twojej typowanej.";
cout<<"Spróbuj ponownie!"<<endl;
}
}while (strzal!=liczba);
cout<<"Brawo trafiłeś!"<<endl;
cout<<"Wylosowaną liczbą jest: "<<liczba<<endl;
cout<<"Strzelałeś "<<liczba_strzalow <<"razy."<<endl;
 //fstream plik;
 //plik.open("plik.txt", ios::in);
 //plik>>help;
 //rekord=static_cast<int>(help);
 //plik.close();
    //if(rekord<liczba_strzalow)
  // {
      //plik.open("plik.txt", ios::out);
      // cout<<"Brawo pobiles  rekord!"<<endl;
      //plik<<liczba_strzalow;
      //plik.close();
  // }
cout<<"Czy chcesz zagrać ponownie?"<<endl;
}
int main()
{
 int wybor;
 while(true)
{
  cout<<"[1]Rozpocznij gre."<<endl;
  cout<<"[2]Wyjdź"<<endl;
  cin>>wybor;
  if (wybor==1)
  {
    Losowanie();
  }
  if (wybor==2)
  {
    cout<<"Zapraszamy ponownie :-   D"<<endl;
    exit(0) ;	  
  }
}
  return 0;
}

  • +
  • -
  • 0

#2 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 18.12.2015 16:22

Do tego kodu, żeby cokolwiek Ci zadziałało:
long long Losowanie() -> void Losowanie()
int przedzial,poz_trud,liczba_strzalow=0  -> zapomniałeś średnika -> int przedzial,poz_trud,liczba_strzalow=0;


 


  • +
  • -
  • 0
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#3 Caine

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:10
  • Imię:Adrian
  • Lokalizacja:Malbork
Offline

Napisano 18.12.2015 16:28

zaraz zedytuje. tam jest średnik tylko przy wklejaniu zniknął

ale nawet jak funkcje Losowanie() wezme jako void to tez nie dziala. wczesniej mialem tez long long i działało.
  • +
  • -
  • 0

#4 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 18.12.2015 16:40

zaraz zedytuje. tam jest średnik tylko przy wklejaniu zniknął

ale nawet jak funkcje Losowanie() wezme jako void to tez nie dziala. wczesniej mialem tez long long i działało.

 

Zmieniłem te 2 rzeczy, program się skompilował i uruchomił.

[1]Rozpocznij gre.
[2]Wyjdź
1
Wybór poziomu trudności.
[1]Easy.
[2]Medium.
[3]Hard.
wybieram: 1
Losowanie liczby...
Podaj liczbe od 1 do 10:
2
Wylosowana liczba jest większa od Twojej typowanej.Spróbuj ponownie!
Podaj liczbe od 1 do 10:
5
Wylosowana liczba jest większa od Twojej typowanej.Spróbuj ponownie!
Podaj liczbe od 1 do 10:
6
Brawo trafiłeś!
Wylosowaną liczbą jest: 6
Strzelałeś 3razy.
Czy chcesz zagrać ponownie?
[1]Rozpocznij gre.
[2]Wyjdź


  • +
  • -
  • 0
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#5 Caine

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:10
  • Imię:Adrian
  • Lokalizacja:Malbork
Offline

Napisano 18.12.2015 17:17

no to nwm dlaczego u mnie jest inaczej...
polazuje mi:
line 55: control reaches end of non-void function
line 73: will never be executed

a jak zmienie na void to pokazuje tylko line 73: i to samo co wyzej
  • +
  • -
  • 0

#6 Caine

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:10
  • Imię:Adrian
  • Lokalizacja:Malbork
Offline

Napisano 21.12.2015 12:17

podbijam. jakies pomysly ktos ma?
Korzystam z CodeBlocks'a.kompilator GNU
  • +
  • -
  • 0

#7 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 21.12.2015 12:58

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>
using namespace std;
void  Losowanie()
{
 cout<<"Wybor poziomu trudności."<<endl;
    cout<<"[1]Easy."<<endl;
    cout<<"[2]Medium."<<endl;
    cout<<"[3]Hard."<<endl;
 int przedzial,poz_trud,liczba_strzalow=0;
    cout<<"wybieram: ";
      cin>>poz_trud;
    if(poz_trud==1)
    {
    przedzial=10;
    }
    else if(poz_trud==2)
    {
    przedzial=500;
    }
    else
    {
    przedzial=1000;
    }
cout<<"Losowanie liczby..."<<endl;
srand(time (NULL));
int liczba= (rand ()%przedzial)+1;
int strzal;
  do
    {
	 cout<<"Podaj liczbe od 1 do "<<przedzial<<": "<<endl;
cin>>strzal;
if (strzal<1||strzal>przedzial)
{
continue;
}
++liczba_strzalow;
if (strzal>liczba)
{
cout<<"Wylosowana liczba jest mniejsza od Twojej typowanej."<<endl;
cout<<"Spróbuj ponownie!"<<endl;
}
else if (strzal <liczba)
{
cout<<"Wylosowana liczba jest większa od Twojej typowanej.";
cout<<"Spróbuj ponownie!"<<endl;
}
}while (strzal!=liczba);
cout<<"Brawo trafiłeś!"<<endl;
cout<<"Wylosowaną liczbą jest: "<<liczba<<endl;
cout<<"Strzelałeś "<<liczba_strzalow <<"razy."<<endl;
 //fstream plik;
 //plik.open("plik.txt", ios::in);
 //plik>>help;
 //rekord=static_cast<int>(help);
 //plik.close();
    //if(rekord<liczba_strzalow)
  // {
      //plik.open("plik.txt", ios::out);
      // cout<<"Brawo pobiles  rekord!"<<endl;
      //plik<<liczba_strzalow;
      //plik.close();
  // }
cout<<"Czy chcesz zagrać ponownie?"<<endl;
}
int main()
{
 int wybor;
  cout<<"[1]Rozpocznij gre."<<endl;
  cout<<"[2]Wyjdź"<<endl;
  cin>>wybor;
  if (wybor==1)
  {
    Losowanie();
  }
  if (wybor==2)
  {
    cout<<"Zapraszamy ponownie :-   D"<<endl;
    exit(0) ;	  
  }
  return 0;
}

Użytkownik Wielkie Jol edytował ten post 21.12.2015 12:59

  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.






Również z jednym lub większą ilością słów kluczowych: c++

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych