#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?
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.
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 (==).
Aihe on jo aika vanha, joten et voi enää vastata siihen.