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

Losowanie właściwości klasy zawartej w konstruktorze

Object Storage Arubacloud
0 głosów
202 wizyt
pytanie zadane 18 listopada 2015 w C i C++ przez radek024 Szeryf (77,160 p.)

Witam, mam problem związany z losowaniem/wpisywaniem nowej wartości dla właściwości klasy w kontruktorze. Uczę się funkcji zapryzjaźnionych i chcę napisać pianino, które ma wspólną funkcję grającą nuty. 

 

#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <ctime>
using namespace std;

class Pianista;

class Piano
{
	int nuta;
	
	public:
		Piano()
		{
			nuta=15000;
		}
		
		Piano(char zklaw)
		{
			cout<<"Podaj czestotliwosc zagranego dzwieku: "; cin>>nuta;
		}
		
		Piano(string losowanko)
		{
			nuta=rand()%700+250;
		}
		
		friend void grajnuty(Piano &forte, Pianista &radek);
};

class Pianista
{
	int ilnut;
	
	public:
		Pianista()
		{
			ilnut=20;
		}
		
		Pianista(char zklaw)
		{
			cout<<"Podaj ilosc zagranych dzwiekow: "; cin>>ilnut;
		}
		
		Pianista(int losuj)
		{
			ilnut=rand()%50+1;
			cout<<"Zagranych zostanie "<<ilnut<<" nut."<<endl;
		}
		
		
		
		
		friend void grajnuty(Piano &forte, Pianista &radek);
};

	void grajnuty(Piano &granie, Pianista &radek)
		{
			cout<<"Ilosc nut: "<<radek.ilnut<<endl;
			for(int i=0;i<radek.ilnut; i++)
			{
				Beep(granie.nuta,1000);
				cout<<"czestotliwosc: "<<granie.nuta<<endl;
			}
		}
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	srand(time(NULL));
	Piano forte=Piano("losuje");
	Pianista radek=Pianista(1);
	grajnuty(forte, radek);
	return 0;
}

Wszystko powinno działać, jednakże nuty nie losują się - co mnie dziwi, ponieważ jest użyty odpowiedni kontruktor i nuta powinna sama automatycznie się zmieniać. Ktoś wie jak temu zaradzić?

1 odpowiedź

0 głosów
odpowiedź 18 listopada 2015 przez event15 Szeryf (93,790 p.)
Piano(string losowanko)
{
    nuta=rand()%700+250;
}

To jest bezsensu. Po co przeciążasz konstruktor skoro i tak nie wykorzystujesz tego?

Tak samo tutaj:
 

Pianista(int losuj)
        {
            ilnut=rand()%50+1;
            cout<<"Zagranych zostanie "<<ilnut<<" nut."<<endl;
        }

A to:

void grajnuty(Piano &granie, Pianista &radek)
        {
            cout<<"Ilosc nut: "<<radek.ilnut<<endl;
            for(int i=0;i<radek.ilnut; i++)
            {
                Beep(granie.nuta,1000);
                cout<<"czestotliwosc: "<<granie.nuta<<endl;
            }
        }

Co to ma znaczyć? Najpierw zaczynasz ładnie, obiektowo, a następnie robisz ze wszystkiego kaszę i proceduralnie?

To powinno być w klasie parametry ustawiane w konstruktorze, a pętla for w jakiejś metodzie. 

W ogóle jakoś mi to dziwnie wygląda wszystko.

komentarz 18 listopada 2015 przez radek024 Szeryf (77,160 p.)
Chcę to zrobić za pomocą dwóch klas, więc wartości muszę wyciągać za pomocą operatora wyłuskania - inaczej tego nie zrobię. Losowania natomiast inaczej nie zrobię, ponieważ się po prostu nie da(lub nie potrafię).

Podobne pytania

0 głosów
1 odpowiedź 402 wizyt
0 głosów
3 odpowiedzi 223 wizyt
0 głosów
2 odpowiedzi 154 wizyt
pytanie zadane 22 maja 2016 w PHP przez Kacper Duda Obywatel (1,970 p.)

92,551 zapytań

141,396 odpowiedzi

319,526 komentarzy

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

...