Toon posts:

[c++] if statement atijd onwaar

Pagina: 1
Acties:
  • 47 views sinds 30-01-2008

Verwijderd

Topicstarter
omdat deze op slot ging, een nieuwe.

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>

int main()
{
  float counter, ans, max;
  cout <<"Hoeveel munten zitten er in de vaas?\n";
  cin >> max;
  cout <<"Hoe vaak wil je trekken uit de vaas?\n";
  cin >> counter;
  counter = counter-1;
  ans = counter * ((max-counter-1))/max ;
  ans += -1 * ((counter+1)/max);

  cout << "\nJe trekt per ronde:\t\t\t" << counter+1 <<" munten";
  cout << "\nDe kans op de maximale uitbetaling is:\t" << max-counter-1
       << "/" << max;
  cout << "\nDe kans om de ronde te verliezen is:\t" << counter+1 << "/" << max;
  cout << "\nDe gemiddelde uitbetaling is:\t\t" << ans <<"\n";

  if (ans <= 0)
   {

    if (ans == 0)
     {
      cout <<"Doen / Niet Doen / Mogelijk:\tNiet Doen (Je hebt zal geen winst"
           <<"maken (ook geen verlies) als je met deze startegie heel vaak speelt)";
     }

    else if (ans < 0)
      cout <<"Doen / Niet Doen / Mogelijk:\tNiet Doen (Je gemiddelde winst is minder dan 0)";


   else if( max/counter != 2 && ans > 0)
     cout << "Doen / Niet Doen / Mogelijk:\tMogelijk(Je hebt winst, maar die is niet optimaal)";

   else if( max/counter == 2)
     cout  << "Doen / Niet Doen / Mogelijk:\tDoen(Je hebt gemiddeld hier de volle winst)";
   }
     system("pause");
  return 0;
}

Hij compiled wel, maar dat laatste stuk vanaf If(ans <= 0) voert ie niet uit. Als het antwoord 0 is of lager moet alles in na de eerste if expressie. Als max gedeeld door counter geen 2 is en als ans groter is dan 0, moet de volgende expressie uitgevoerd worden, en als max/counter == 2 moet de laatste experessie uitgevoerd worden, maar dit gebeurd niet :?

  • vandijk
  • Registratie: Oktober 1999
  • Laatst online: 22-08 12:52
max/counter != 2 && ans > 0

vervangen door :

(max/counter != 2) && (ans > 0)

anders wordt effectief het volgende uitgevoerd:

((max/counter != 2) && ans) > 0

En dat levert het gedrag op wat jij tegenkomt

[ Voor 51% gewijzigd door vandijk op 05-06-2003 19:40 ]

Canon cameras en lenzen. Elinchrom flitsers, Lowepro en Pelican tassen/koffers. Polestar 2


Verwijderd

Topicstarter
ow, sorry, k zit hier mee al van gister avond, en opeens zie ik m de } van regel 40 moet naar 30 :)

Verwijderd

Topicstarter
Hmm, nieuw probleem

als max == 8 en counter == 4 wordt er
C++:
1
2
 else if( (max/counter != 2) && (ans > 0))
     cout << "Doen / Niet Doen / Mogelijk:\tMogelijk(Je hebt winst, maar die is niet optimaal)";

uitgevoerd, ipv
C++:
1
2
 else if( max/counter == 2)
     cout  << "Doen / Niet Doen / Mogelijk:\tDoen(Je hebt gemiddeld hier de volle winst)";


edit:
en als ans < 0 wordt de stamtement ook niet uitgevoerd :? die uitgevoerd moet worden

[ Voor 18% gewijzigd door Verwijderd op 05-06-2003 19:46 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Als een topic op slot gaat, dan ga je niet zomaar een nieuw topic openen.

Debug eerst zelf maar eens.

https://fgheysels.github.io/


Dit topic is gesloten.