Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Funktion kutsuminen

Jankonbetoni [08.12.2022 19:00:25]

#

#include <iostream>
#include <random>
#include <string>
#include <vector>
using namespace std;
void tarkasteleVarauksia(int varausnumero, varaaja v);


struct varaaja {
	string kokonimi;



};




int main() {

	int toiminto;
	system("cls");
	cout << "TERVETULOA" << endl;
	cout << "1. Varaa huone: " << endl;
	cout << "2. Tarkastele varauksiasi:  " << endl;
	cout << "3. Lopeta:  " << endl;
	cin >> toiminto;

	switch (toiminto) {

	case 1:
		varaahuone()



	case 2:
		tarkasteleVarauksia()
	}
}

void varaahuone(varaaja v) {
	int huone = 0;

	int low = 10000, high = 99999;
	int varausnumero;
	//arpoo varausnumeron välilät 10000-99999
	srand(static_cast<unsigned int>(time(nullptr)));
	varausnumero = (rand() % (high - low + 1)) + low;
	//arpoo huoneet väliltä 30-70
	random_device rd;
	uniform_int_distribution<int> dist(30, 70);
	cout << "Vapaita huoneita on: " << dist(rd) << endl;
	cout << "Minkä huoneen haluaisitte?: " << endl;
	cin >> huone;
	cout << "Olette varanneet huoneen: " << huone << endl;
	cout << "Varausnumeronne on: " << varausnumero << endl;
	cout << "Syöttäkää kokonimenne: " << endl;
	getline(cin, v.kokonimi);


}

void tarkasteleVarauksia(int varausnumero, varaaja v) {
	int uusivarausnumero;
	cout << "Syöttäkää varausnumeronne! " << endl;
	cin >> uusivarausnumero;

	if (uusivarausnumero = varausnumero) {
		cout << "Varauksenne löytyi!" << endl;
	}
	else {
		cout << "Varaustanne ei löytynyt! " << endl;
	}


}

Eli ongelma 1: varaahuone() funktiota kutsuessa valittaa siitä, että too few arguments in function call.

Pitää siis laittaa argumenttejä varaahuone() sulkeiden sisään, mutta mitä argumenttejä siihen menee? Olen kokeillut laittaa varaaja mutta silloin valittaa, että type name not allowed. Kaikesta muusta tulee indentifier "..." is undefined.

Ongelma 2:
case 2: kohdassa kun kutsutaan funktiota tarkasteleVarauksia tulee virhe:
no instance of overloaded function matches the argument list.

Eli osaisiko joku auttaa tässä funktion kutsumisessa?

Grez [08.12.2022 19:52:19]

#

Case 1: Sulla pitää olla muuttuja jonka tyyppi on tuo Varaaja. Voit sitten antaa kyseisen muuttujan parametriksi

Case 2: Vastaavalla tavalla kusuttaessa tarkasteleVarauksia pitää parametreiksi antaa muuttujat joiden tyypit ovat int ja varaaja.

Metabolix [16.12.2022 21:04:50]

#

Jos muuttujan sisältöä haluaa funktiossa muokata niin, että muokkaukset säilyvät (kuten tässä ilmeisesti on tavoitteena, parametrin pitää vielä olla viittaus eli &-merkillä varustettu. Muuten parametri on kopio alkuperäisestä eikä mikään muutos säily funktion ulkopuolella.

Tässä ohjelmassa siis sekä varausnumero että varaaja pitäisi määritellä main-funktiossa ja välittää sieltä muille funktioille.

Ohjelmassa on joukko muitakin virheitä, ainakin puolipisteitä puuttuu ja if-lauseessa on sijoitus (=) eikä vertailu (==).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta