Allegro C++ - Milionerzy i dziwne wyniki

Allegro C++ - Milionerzy i dziwne wyniki
LA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
0

Witam! Robię grę "Milionerzy", mam problem przy stworzeniu koła ratunkowego "Pytanie do publiczności". Funkcja losująca poprawność odpowiedzi działa, lecz gdy chce te wyniki wyświetlić za pomocą allegro wartości biorą się nie wiadomo skąd. Oto kod:

Kopiuj
funkcja

void pytanie::Publicznosc(int a, int b, int c, int d)
 {
  int pr[3], odp;
  pr[0]=rand()%25;
  pr[1]=rand()%25;
  pr[2]=rand()%25;
  int max=pr[0]+pr[1];
  max=max+pr[2];
  max=100-max;
  switch(podp)
    {
          case 'a': odp=0; break;
          case 'b': odp=1; break;
          case 'c': odp=2; break;
          case 'd': odp=3; break;
          } 
  int procenty[4], j=0;
  for(int i=0; i<=3; i++)
  {
          if(odp==i)
           {
             procenty[i]=max;
             }
             else
             {
                 procenty[i]=pr[j];
                 j++;
                 }
   }
  a=procenty[0];
  b=procenty[1];
  c=procenty[2];
  d=procenty[3];
 }  

i wywolanie

int a,b,c,d;
                  que[i].publicznosc(a,b,c,d);
                  rectfill( screen, 161, 55, 400, 263, makecol( 0, 0, 20 ) );
                  rectfill( screen, 171, 65, 390, 253, makecol( 0, 0, 50 ) );
                  textout_ex( screen, font, "Glosowanie publicznosci:", 183, 78, makecol( 255, 255, 255 ), - 1 );
                  textprintf_ex( screen, font, 200, 100, makecol( 255, 255, 255 ), - 1, "A: %d %d", a );
                  textprintf_ex( screen, font, 200, 115, makecol( 255, 255, 255 ), - 1, "B: %d %d", b );
                  textprintf_ex( screen, font, 200, 130, makecol( 255, 255, 255 ), - 1, "C: %d %d", c );
                  textprintf_ex( screen, font, 200, 145, makecol( 255, 255, 255 ), - 1, "D: %d %d", d );
                  textout_ex( screen, font, "Wcisnij dowolny klawisz", 185, 200, makecol( 255, 255, 255 ), - 1 );
                  textout_ex( screen, font, "by kontynuowac...", 185, 210, makecol( 255, 255, 255 ), - 1 );
                  readkey(); 
ST
  • Rejestracja: dni
  • Ostatnio: dni
0

Mistrzu, a popatrz na to co wypisujesz, bo chcesz wypisać "A: %d %d", czyli na przykład: "A: 30 20", a podajesz tylko jeden argument, do tej listy.
Dziwne, że parser nie krzyczał.

LA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
0

Po usunięciu jednego %d nadal jest źle. Jakieś inne pomysły?

ZJ
  • Rejestracja: dni
  • Ostatnio: dni
0

Wróć do podstaw c++, min. przekazywanie parametrów do funkcji.

I wiadomo skąd się biorą wartości, ze stosu.

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Przekazujesz zmienne a,b,c,d do funkcji, zmieniają się w środku, ale tej zmiany "nie widać" poza funkcją. Przyczyną jest to, że przekazujesz obiekty przez wartość. Jeżeli w definicji funkcji użyjesz

Kopiuj
int & a

zamiast int a

Kopiuj
 czyli przekażesz przez referencję, zadziała to tak jak chcesz. Lepiej jednak gdybyś zwracał strukturę, lub tablicę jako wynik działania funkcji.

Pozdrawiam.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.