• 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

VPS Starter Arubacloud
0 głosów
227 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ź 486 wizyt
0 głosów
3 odpowiedzi 248 wizyt
0 głosów
2 odpowiedzi 182 wizyt
pytanie zadane 22 maja 2016 w PHP przez Kacper Duda Obywatel (1,970 p.)

93,022 zapytań

141,986 odpowiedzi

321,288 komentarzy

62,367 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...