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

Proszę o korektę kodu lub napisanie od początku do zadania.

Object Storage Arubacloud
0 głosów
556 wizyt
pytanie zadane 18 września 2015 w C i C++ przez maciekh11 Nowicjusz (240 p.)

Napisz program w c++, który po uruchomieniu poprosi użytkownika o odgadnięcie liczby z zakresu od 1 do 100. W zależności od liczby, którą wpisze użytkownik, program wypisze na ekran poszczególne komunikaty:

* Jeżeli użytkownik poda liczbę większą od 42, na ekranie pojawi się komunikat: "Liczba X to za dużo".

* Jeżeli użytkownik poda liczbę mniejszą od 42, na ekranie pojawi się komunikat: "Liczba X to za mało".

* Jeżeli użytkownik poda liczbę 42, na ekranie pojawi się komunikat: "Wygrałeś po X próbach.

* Jeżeli użytkownik nie wpisze liczby 42 podczas dziesięciu prób, na ekranie pojawi się komunikat: " Przegrałeś".

#include <iostream>
using namespace std;
int liczba;
int prob;
int main()
{
	while (prob<=10)
	{
		cout<<"Podaj liczbe:";
		cin>>liczba;
		if ((liczba>42)&&(liczba<=100))
		{
			cout<<"Liczba x to za duzo"<<endl;
		}
		if ((liczba<42)&&(liczba>=1))
		{
			cout<<"Liczba x to za malo"<<endl;
		}
		if (liczba==42)
		{
			cout<<"Brawo wygrales po x probach"<<endl;
		}
	
	}
		if ((liczba!=42)&&(prob>10))
		{
			cout<<"przegrywasz";	
		}
	
}

 

3 odpowiedzi

0 głosów
odpowiedź 18 września 2015 przez Ehlert Ekspert (212,790 p.)

Zauważ że pętla ma za mało warunków. Nawet jeśli gość zgadnie liczbę, to będzie zasuwać do 10 iteracji. Teraz jednak zauważyłem, że nigdy się nie skończy bo prob nie jest wyzerowane. Co więcej jeśli while wgl ruszy (wątpię) to nie zatrzyma się, bo nic nie robisz ze zmienną prob. Dodaj w pętli jej inkrementację. Dodaj zmienną bool win. Jeśli gracz wygra ma wartość true. W pętli dajesz wtedy

while (prob<=10 && !win) 
{

Albo dodawaj co iterację jeden do prob a przy if'ie z wygraną dodaj break;

Co do samych ifów:

if(...)
{
//...
}
else if(...)
{
//...
}
else{

}

 

komentarz 18 września 2015 przez junior-lugos Użytkownik (600 p.)
edycja 18 września 2015 przez junior-lugos
while (prob <=10 && liczba != 42)
    {
        cout << "Podaj liczbe: ";
        cin>>liczba;
        if ((liczba>42)&&(liczba<=100))
        {
            cout<<"Liczba x to za duzo"<<endl;
        }
        else
        {
            cout<<"Liczba x to za malo"<<endl;
        }
        prob++;
        
    }
    if (liczba==42)
    {
        cout<<"Brawo wygrales po x probach"<<endl;
    }
    else
    {
        cout<<"Przegrywasz :(";
    }
​
komentarz 18 września 2015 przez junior-lugos Użytkownik (600 p.)
edycja 18 września 2015 przez junior-lugos
Używanie break w takich przypadkach to zły nawyk, algorytm traci strukturalność. Bardziej elegancko jest dodanie warunku do pętli while i nie trzeba nawet używać zmiennej boolowskiej tylko na koniec sprawdzić co zatrzymało pętlę.
0 głosów
odpowiedź 31 stycznia 2016 przez Kamil Bialek Nowicjusz (180 p.)
#include <iostream>

using namespace std;
int strzal, proba=1;
int main()
{
    cout << "Odgadnij liczbe od 1 do 100: " << endl;
    cin>> strzal;

    while (strzal!=42 && proba<10)

        {
        if (strzal>42){
        cout<<"Liczba "<<strzal<<" to za duzo"<< endl;
    }
        if (strzal<42){
            cout<<"Liczba "<<strzal<<" to za malo"<<endl;
        }
    proba=proba+1;
    cout << "Odgadnij liczbe od 1 do 100: " << endl;
    cin>> strzal;

    }

    if (strzal==42)
     {

        cout<<"Brawo, wygrales po "<<proba<<" probach"<<endl;
     }

else
        {cout<<"Niestety, nie zgadles w 10 rundach, przegrywasz"<<endl;
        }
    return 0;
}
0 głosów
odpowiedź 31 stycznia 2016 przez Fergus Obywatel (1,010 p.)

Z tego co pamiętam to jest to program podobny do jednego z tych z kursów Pana Mirka. Parę miesięcy wstecz zainspirowała mnie ta lekcja Pana Mirka i napisałem swoją wersję, wplotłem w program humorystyczne komunikaty podczas uruchamiania się, reklamę  ;-)  Generalnie wygraną w mojej zgadywance jest wycieczka na rynek do miasta, w której mieszka użytkownik - wycieczka na koszt własny. Wklejam kod, może kogoś zainspiruje, a może przynajmniej rozbawi  ;-)

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <time.h>
#include <stdio.h>
//napisany przez: Fergus
using namespace std;

int main()
{

    int liczba;
    int limit = 7;
    int ile_prob = 0;
    srand(time(NULL));
    int wylosowana = rand()%100+1;
    string miasto;

    cout << "Uruchamianie programu... (program jest analogowy, wiec trzeba troche poczekac...) ..." << endl << endl << endl;
    Sleep(5500);
    cout << "...ooo, cos zaczyna sie dziac pozytywnego, komp trzeszczy..." << endl << endl;
    Sleep(4500);
    cout << "Jest!" << endl << endl << endl;
    Sleep(3500);
    cout << "KOMUNIKAT SYSTEMOWY: proces uruchamiania zakonczyl sie niekwestionowanym sukcesem." << endl << endl;
    Sleep(4000);
    cout << "REKLAMA: wykonanie programu zostalo wspolfinansowane ze srodkow Fundacji Przekwalifikowan Zawodowych \"Byles gornikiem \- zostan programista\"" << endl << endl;
    Sleep(9500);
    cout << "kryptoreklama: najlepsze gacie na www.kup_mi_gacie.pl" << endl << endl << endl;
    Sleep(4500);
    //system("cls"); - czysci okno konsoli z poprzednich wierszy
    cout << "Program wylosuje liczbe z zakresu od 1 do 100. Jesli zgadniesz liczbe to wygrales wycieczke na koszt wlasny na rynek w swoim miescie." << endl << endl;
    Sleep(2900);
    cout << "Znow oczywiscie troche czekamy, bo analog musi sie zainicjalizowac..." << endl << endl;
    Sleep(3900);
    cout << "Trwa losowanie liczby... " << endl << endl << endl;
    Sleep(2000);
    cout << "Ok, wylosowano " << endl << endl;
   Sleep(1900);
    cout << "\@\#\&!o kur*a!!\*.,!ci*l!.,.\%\$!j*b!\_\+\"\|!dup!\}\%\@   Chwilowa awaria systemu, ale juz wszystko prawie dziala..." << endl << endl;
    Sleep(6500);
    cout << "Udalo sie!" << endl << endl << endl;
    Sleep(3500);
    cout << "W jakim miescie mieszkasz?" << endl << endl;
    cin >> miasto;
    cout << endl;
    cout << "Zgaduj jaka liczbe wylosowano. Masz tylko, albo \"az\", 7 prob." << endl << endl << endl;
    cout << "Podaj swoj pierwszy typ: ";
    cin >> liczba;
    cout << endl;

    if (wylosowana != liczba)
    {
        do
        {

            ile_prob++;

                if (wylosowana > liczba)
                {
                    cout << endl;
                    cout << "Podales/as: " << liczba << " a wiec za mala liczbe. To byla Twoja "<< ile_prob << " proba. Pozostalo Ci " <<  limit - ile_prob << " prob. Sprobuj jeszcze raz: ";
                    cin >> liczba;
                    cout << endl;
                }
                else
                {
                    cout << endl;
                    cout << "Podales/as: " << liczba << " a wiec za duza liczbe. To byla Twoja "<< ile_prob << " proba. Pozostalo Ci " <<  limit - ile_prob << " prob. Sprobuj jeszcze raz: ";
                    cin >> liczba;
                    cout << endl;
                }

        }
        while((wylosowana != liczba) && (ile_prob < 5));

        if ((wylosowana != liczba) && (ile_prob == 5))
        {
               if (wylosowana > liczba)
                {
                    cout << endl;
                    cout << "Podales/as: " << liczba << " a wiec za mala liczbe. To byla Twoja przedostatnia proba. Sprobuj po raz ostatni: ";
                    cin >> liczba;
                    cout << endl;
                }
                else
                {
                    cout << endl;
                    cout << "Podales/as: " << liczba << " a wiec za duza liczbe. To byla Twoja przedostatnia proba. Sprobuj po raz ostatni: ";
                    cin >> liczba;
                    cout << endl;
                }
        }

        if (wylosowana == liczba)
        {
            cout << "Nie wiem jakim cudem, ale podczas " << ile_prob << " proby udalo Ci sie zgadnac liczbe. Wygrales/as wycieczke na rynek w " << miasto << " na koszt wlasny :-)  Zyczymy milej podrozy   ;-) " << endl;
        }

        else if (wylosowana != liczba)
        {
            cout << "Niestety nie wygrales/as wycieczki." << endl;
        }
    }
    else
    {
        cout << "Nie wiem jakim cudem, ale podczas pierwszej proby udalo Ci sie zgadnac liczbe. Wygrales/as wycieczke na rynek w " << miasto << " na koszt wlasny :-)  Zyczymy milej podrozy   ;-) " << endl;
    }

    getchar();


    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 267 wizyt
0 głosów
4 odpowiedzi 271 wizyt
0 głosów
3 odpowiedzi 232 wizyt

92,631 zapytań

141,495 odpowiedzi

319,863 komentarzy

62,011 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!

...