Just nu i M3-nätverket
Gå till innehåll

Är jag på rätt väg?


Alessandra

Rekommendera Poster

Jag vet inte riktigt vad jag ska göra :(

Jag ska skriva programm som slumpar 100 rum enligt den givna rumsfördelningen och som skriver ut hur många som blev sviter, enkel eller dubbelrum. Rumsfördelningen är ; sviter 5%, enkelrum 25% och resten dubbelrum.

Jag har börjat skriva programmet och det känns helt fel :(

Är det nån som kan titta på det? Komma med förslag? Ar jag på rätt väg?

Det ser ut såhär:

 

#include <iostream>

#include <cstdlib>

#include <ctime>

#include <iomanip>

 

using namespace std;

 

typedef enum {svit, enkel, dubbel} Rumstyp;

typedef Rumstyp Hottelrumstyp[100];

 

void generera(Hottelrumstyp rum){

srand(time(0));

for(int m=0; m<100; m++)

rum[m] = Rumstyp(rand()%3);

}

void skrivut(Hottelrumstyp rum){

cout << "Svit Enkel Dubbel "<< endl;

for(int m =0; m<100; m++){

if((0.05*100) == svit)

cout << setw(8) << "svit" << rum[m];

else if((0.25*100) == enkel)

cout << setw(10) << "enkel" << rum[m];

else

cout << setw(12) << rum[m] << endl;

}

 

}

 

int main()

{

Hottelrumstyp rum;

generera(rum);

skrivut(rum);

 

system("PAUSE");

return 0;

}

 

/Alessandra

 

Länk till kommentar
Dela på andra webbplatser

Nja, behövs vissa ändringar. Som det är nu så kommer bara dubbelrum ut. En rad t.ex

if((0.05*100) == svit)

 

Du kollar om 5 är lika med svit, det kommer aldrig att inträffa eftersom svit är lika med 0. I en enum så blir första typen 0, andra 1 osv.

 

Jag har kod som funkar om du är intresserad, med det är ju bättre om du försöker lite själv.

 

Ett tips är ju att, just nu så slumpar du ut rumstyperna, och chansen att få en viss rumstyp är lika stor som som att få en annan. Så det kanske du skulle titta lite på.

 

Hoppas att det hjälper lite iaf.

 

/Joakim

 

Länk till kommentar
Dela på andra webbplatser

hej Joakim,

Tack för ditt svar, jag är intresserad av koden, men jag vill försöka själv en stund till..Jag tittat på rumstyperna som du sa och provar lite..jag återkommer :)

 

/Alessandra

 

Länk till kommentar
Dela på andra webbplatser

Hej Joakim,

Jag får inte ihop detta :( Jag nybörjare på c++ och tycker att detta är svårt, men det är säkert den magiska "tröskel" som man måste gå igenom :)

Jag skulle gärna vilja titta på din kod om det finns möjlighet, du skrev att du hade nåt som fungerade...

/Alexandra

 

 

Länk till kommentar
Dela på andra webbplatser

Prova detta, kanske inte perfekt, men det verkar funka.

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>

using namespace std;

typedef enum {svit, enkel, dubbel} Rumstyp;
typedef Rumstyp Hottelrumstyp[100];

void generera(Hottelrumstyp rum)
{
srand(time(0));
for(int m=0; m<100; m++)
{
 int nRand = rand()%100;

 if ( nRand < 5 )
  rum[m] = svit;
 else if ( nRand < 30 )
  rum[m] = enkel;
 else
  rum[m] = dubbel;

//  rum[m] = Rumstyp(rand()%3);
}
}

void skrivut(Hottelrumstyp rum)
{
cout << "Svit Enkel Dubbel "<< endl;
for(int m =0; m<100; m++)
{
 if(rum[m] == svit)
  cout << setw(8) << "svit" << rum[m] << endl;
 else if(rum[m] == enkel)
  cout << setw(10) << "enkel" << rum[m] << endl;
 else
  cout << setw(12) << "dubbel" << rum[m] << endl;
}
}

int main()
{
Hottelrumstyp rum;
generera(rum);
skrivut(rum);

//system("PAUSE");
return 0;
}

 

/Joakim

 

Länk till kommentar
Dela på andra webbplatser

Hej Joakim,

Tack så mycket :) Jag tittade på detta först igår kväll, eftersom jag jobbade hela helgen... Nu när man ser på din ex. så ser man helheten :) Jag gör allting så svårt...

Tack så mycket för hjälpen :)

 

 

 

Länk till kommentar
Dela på andra webbplatser

Tack, jag har testat...och nu är jag klar :) Så ser det ut:

 

#include <iostream>

#include <cstdlib>

#include <ctime>

 

using namespace std;

 

typedef enum {svit, enkel, dubbel} Rumstyp;

typedef Rumstyp Hottelrumstyp[100];

int s=0, e=0, d=0;

 

void generera(Hottelrumstyp rum)

{

srand(time(0));

for(int m=0; m<100; m++){

int nRand = rand()%100;

 

if ( nRand < 5 ) {

rum[m] = svit;

s++;

}

else if ( nRand < 25 ){

rum[m] = enkel;

e++;

}

else {

rum[m] = dubbel;

d++;

}

}

}

 

void skrivut(Hottelrumstyp rum)

{

cout << "Hotellrumsfördelning\n\n";

cout << "Svit: " << s << endl;

cout << "Enkel: " << e << endl;

cout << "Dubbel: " << d << endl << endl;

}

 

 

int main()

{

Hottelrumstyp rum;

generera(rum);

skrivut(rum);

 

system("PAUSE");

return 0;

}

 

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...