• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

liczby losowane bez powtórzeń psują program

Object Storage Arubacloud
0 głosów
391 wizyt
pytanie zadane 12 maja 2017 w C i C++ przez kvbq Obywatel (1,490 p.)
Na podstawie 7 odcinka stworzyłem quiz. Jednak postarałem się go rozwinąć o parę funkcji. Przy próbie dołączenia samodzielnie napisanego skryptu do losowania bez powtórzeń ( który osobno działał ) napotkałem na problem. Program wyłącza się i wyświetla się błąd najczęściej zaraz po wpisaniu odpowiedzi do pierwszego pytania ( które chyba nawet nie jest losowe ) Link do kodu zamieszczam poniżej.

http://wklej.org/id/3111754/
komentarz 12 maja 2017 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Jaki błąd się wyświetla?
komentarz 12 maja 2017 przez kvbq Obywatel (1,490 p.)
System nie wykrywa żadnego konkretnego błędu tylko pisze że wystąpił problem, natomiast na dole konsoli zamiast zwykłego process retunned wyświetla się:

Process returned 255 (0xFF)

w dodatku po wybraniu tylko 1 drużyny jest jeszcze gorzej:

pytanie nr 1:

A.
B.
C.
D. Y      P      9NDB USEߤRÝň?        P      ESKTOP-KÓ¤Rýň?                                á      ß¤Sýń?  `     P              └¤R╠ň?    Ô                                                                                                                                                                                                                                                                                 abcdefghijklmnopqrstuvwxyz      ABCDEFGHIJKLMNOPQRSTUVWXYZ               Ü ťŁ×č          Ő îŹÄĆ   │ ╣    ║    ┐   ú Á   ą¬ ż ╝»ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷ °¨˙űŘř■▀└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍ ě┘┌█▄ŢŮ            i¤Re─?
             C      t      ░      ß      ■      "      S      {      ł      Ť      ┬      Ó      ¸      4      B      X!      ľ!      ú!      │!      đ!      "      *"      B"      ]"      {"      Ą"      ┬"      #     #      *#      >#      M#      c#      ç#      ¬#      ┼#      ´#      ű#      $      $$              ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\PC\AppData\Roaming CommonProgramFiles=C:\Program Files\Common Files CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files CommonProgramW6432=C:\Program Files\Common Files COMPUTERNAME=DESKTOP-K5J9NDB ComSpec=C:\WINDOWS\system32\cmd.exe FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer FPS_BROWSER_USER_PROFILE_STRING=Default HOMEDRIVE=C: HOMEPATH=\Users\PC LOCALAPPDATA=C:\Users\PC\AppData\Local LOGONSERVER=\\DESKTOP-K5J9NDB NUMBER_OF_PROCESSORS=4 OneDrive=C:\Users\PC\OneDrive OnlineServices=Online Services OS=Windows_NT Path=.;C:\TDM-GCC-64\bin;C:\TDM-GCC-64;C:\Program Files (x86)\Intel\iCLS Client;C:\Program Files\Intel\iCLS Client;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Users\PC\AppData\Local\Microsoft\WindowsApps PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC Platform=BNB platformcode=6U PROCESSOR_ARCHITECTURE=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 61 Stepping 4, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3d04 ProgramData=C:\ProgramData ProgramFiles=C:\Program Files ProgramFiles(x86)=C:\Program Files (x86) ProgramW6432=C:\Program Files PSModulePath=C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\ PUBLIC=C:\Users\Public RegionCode=EME SESSIONNAME=Console SystemDrive=C: SystemRoot=C:\WINDOWS TEMP=C:\Users\PC\AppData\Local\Temp TMP=C:\Users\PC\AppData\Local\Temp USERDOMAIN=DESKTOP-K5J9NDB USERDOMAIN_ROAMINGPROFILE=DESKTOP-K5J9NDB USERNAME=PC USERPROFILE=C:\Users\PC WATCOM=C:\watcom windir=C:\WINDOWS   b¤Zfm?   ╬b %c ! !         !           B                         !         !           !                                                                                                                       !                                                                                                                       !                                                                                                                       (╬Z-f?                       Ç       P      ł,      °,                                                              Z                                                                                                                      É$é                                                                                                                     Ô╬R´,>  ­Y~ř  0­Y~ř  `­Y~ř  É­Y~ř  └­Y~ř  ­­Y~ř   ˝Y~ř  P˝Y~ř  Ç˝Y~ř  ░˝Y~ř  Ó˝Y~ř  ˛Y~ř  @˛Y~ř  p˛Y~ř  á˛Y~ř  đ˛Y~ř   ˇY~ř  0ˇY~ř  `ˇY~ř  ÉˇY~ř                                                                          ˛¤R■Š> └                                                                                                             Ş╬S┤÷?  É$é     `      m32\cmd.exe /c cls      X Yń?  É$é     P                             U Tń?  É$é     P      umer piaty
5
4
3
2
a
b
numer piaty
5
4
3
2
a
                                                                                                                        : ;Ă?  É$é     `
Process returned 255 (0xFF)   execution time : 7.125 s
Press any key to continue

2 odpowiedzi

0 głosów
odpowiedź 13 maja 2017 przez WilmaOlcho Obywatel (1,740 p.)
wybrane 13 maja 2017 przez kvbq
 
Najlepsza
linia 28. Kiedy próbujesz się poruszać po tablicach przy pomocy for, wygodnie jest zacząć od zera i sprawdzać czy <max, wtedy nie trzeba odejmować 1 od przypisanego indeksu by nie przekroczyć tablicy.

Dla przykładu nie for(int i=1;i<=5;i++) bo tablica zaczyna się od 0 i kończy na 4, pozycja 5 już przekracza tablicę,
tylko for(int i=0;i<5;i++), w ten sposób będziesz mieć pięć powtórzeń dla których i={0,1,2,3,4}.

linia 60. Wczytując plik, lepiej wybierać z niego dane jeśli jest Good(), a komunikat i przerwanie części programu w przeciwnym wypadku. Tutaj tylko wyświetlasz komunikat, po czym i tak pobierasz dane z "nieistniejącego "pliku.

linia 107. s nie ma początkowej wartości, może wynieść nawet 23451234 czy ileśtam. To praktycznie od razu powoduje przekroczenie tablic  punkty i bledy_druzyny.

linia 117 i kolejnych kilka... No kurde. Przepraszam.
Liczby losowe mają tutaj zakres od 0 do 300. Tablice pytań i odpowiedzi mają maksymalny indeks 5 nadany na samym początku programu jako wartości globalne.
Wyswietlasz więc w tym miejscu dosłownie losową zawartośc pamięci RAM swojego komputera, za czym na prawdę nie wiem jakim cudem w ogóle dostajesz do niej tak swobodny dostęp.

linia 125. Tak samo jak na początku napisałem. Przekraczanie tablic.
 

Pod koniec nie radzę sobie z Twoim formatowaniem.

Polecam poćwiczyć obsługę tablic i formatowanie kodu na początek;
Na czymś prostym na razie, zbieraj do tablicy liczby fibonacciego, liczby pierwsze, wyświetlaj je na ekranie.
Zapełniaj tablice znakami z klawiatury, opcji jest dużo, a następnie spróbuj napisać ten program od nowa.
Jestem pewien, że wiele dzięki temu oszczędzisz nerwów, bo kombinowanie z błędami na dziesiątce tablic jest trudniejsze niż kombinowanie na błędach z jedną tablicą, a uczy tyle samo. :)
0 głosów
odpowiedź 12 maja 2017 przez tangarr Mędrzec (154,860 p.)
Ten kod nie powinien się skompilować. Jakiego kompilatora używasz?
komentarz 12 maja 2017 przez kvbq Obywatel (1,490 p.)
edycja 12 maja 2017 przez kvbq
Pobrany z tej strony:

https://sourceforge.net/projects/tdm-gcc/

PS Dlaczego miałby się nie skompilować?
komentarz 12 maja 2017 przez tangarr Mędrzec (154,860 p.)
cin>>liczba_druzyn;
string odpowiedz[liczba_druzyn];
int bledy_druzyny[liczba_druzyn];
int punkty[liczba_druzyn];

Zmienna liczba_druzyn musi być znana w trakcie kompilacji (const) aby utworzyć takie tablice.
http://www.cplusplus.com/doc/tutorial/arrays/
Zamiast tablic statycznych możesz użyć wektorów
 

int rozmiar;
cin >> rozmiar;
vector<int> tablica(rozmiar);

 

Podobne pytania

0 głosów
2 odpowiedzi 466 wizyt
+1 głos
1 odpowiedź 509 wizyt
pytanie zadane 25 czerwca 2016 w C i C++ przez Jardee Początkujący (420 p.)
0 głosów
2 odpowiedzi 386 wizyt
pytanie zadane 21 marca 2017 w C i C++ przez seba Dyskutant (8,900 p.)

92,626 zapytań

141,486 odpowiedzi

319,849 komentarzy

62,009 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...