Strona 5 z 12

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 12:09
autor: pc.qwerty
Ale w ogóle próbowałeś usunąć goto czy po prostu stwierdziłeś, że się nie da? :trollface:

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 13:10
autor: TheMediator95
Ja nie twierdzę że się nie da bo wiem że na pewno się da: Zasada numer 4: w Programowaniu wszystko się da. Ale uznałem to za zbędne (Przynajmniej na razie).

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 13:24
autor: PisarzKsiazkowicz
Nikt nie mówi, że nie da się tego zrobić na goto, ale po co utrudniać sobie życie?

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 13:48
autor: lolasher
Mediator14 pisze:Przynajmniej na razie)
Nie pisz programów z myślą o "na razie", jeżeli wiesz, że będziesz go rozbudowywał. Bo może się okazać, że zamiast rozbudowywać będziesz pisał od zera :P

Programu, którego kod mi pokazałeś nie da się rozbudować, dlatego piszesz tą grę od zera.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 14:46
autor: TheMediator95
Otóż to.
Tutaj macie wynik mojej dotychczasowej pracy:

//EDIT:
Śmiech :)
techvortal.pl pisze: Wiadomość ma 22535 znaków. Maksymalna dopuszczalna liczba znaków to 20000.
Zrobiłem w nim już zliczanie punktów, dodałem 70 pytań które są generowane losowo podobnie jak miejsca (x,y) również są generowane losowo. Mam trzy typy pytań (Warianty a, b, c i d. Pytanie na które trzeba odpowiedzieć liczbą oraz pytanie na które odpowiada się słowem lub zdaniem* (*Znacie jakiś inny sposób żeby zrobić tak jak jak zrobiłem, chodzi o to żeby program przy sprawdzaniu pytania nie brał pod uwagę wielkości liter i ich umieszczenia najlepiej też (czyli jak ktoś naciśnie spację przez przypadek i w pisze dobrą odpowiedź to mu nie wywali że źle)). No na dobry początek wystarczy 70 pytań słucham sugestii co do mojego programu (Nie co do goto), głównie chodzi mi o wcześniej przez mnie wspomniany problem z odpowiedziami typu łańcuchowego (Tekstowego). Jak komuś się chce to może posprawdzać czy odpowiedzi na pytania są dobre, bo układałem je na szybko, niektóre z głowy, a niektóre kopiuj\wklej z neta.
P.S. Podawać E-maile ?

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 14:53
autor: urban92
Zapodaj na wklej.org

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 14:55
autor: TheMediator95
Nieco skrócony kod (Bez paru pytań):

Kod: Zaznacz cały

Program Gra;
Uses crt, dos;
Label Menu, Poczatek, Start, Koniec;

Type
	Pytanie_liczba = record
	Question : string;
	Answer : real;
End;

Type 
	Pytanie_znak = record
	Question, a, b, c, d : string;
	Answer : char;
End;

Type
	Pytanie_znaki = record
	Question : string;
	Odp1, Odp2, Odp3, Odp4, Odp5, Odp6, Odp7 : string;	
End;

Var 
q : array [1..31] of Pytanie_znak;
a : array [1..23] of Pytanie_znaki;
p : array [1..16] of Pytanie_liczba;
wybor, x, y : Byte;
punkty, xlos, ylos : Integer;
klawisz : Char;

Procedure Obramowanie;
  Var a, b : Byte;
Begin
		For b:=3 to 20 do
				Begin
					a:= 2;
					gotoxy (a,b);
					Writeln (chr(186));
				End;
				For b:= 3 to 20 do
				Begin
					a:= 25;
					gotoxy (a,b);
					Writeln (chr(186));
				End;
				For a:= 3 to 25 do
				Begin
					b:= 2;
					gotoxy (a,b);
					Writeln (chr(205));
				End;
				For a:= 3 to 25 do
				Begin
					b:= 20;
					gotoxy (a,b);
					Writeln (chr(205));
				End;
			Gotoxy(2,2);
			  Writeln (chr(201));
			Gotoxy(2,20);
			  Writeln (chr(200));
			Gotoxy(25,2);
			  Writeln (chr(187));
			Gotoxy(25,20);
			  Writeln (chr(188));
End;
	
Function Pytaj_liczba(p : Pytanie_liczba): Boolean;
 Var Odp : Real;
Begin
		Clrscr;
		Writeln (p.question);
		Readln (Odp);
		If Odp = p.answer Then
			Pytaj_liczba := True
		Else
			Pytaj_liczba := False;    
End;  
		
Function Pytaj_znak(q : Pytanie_znak): Boolean;
 Var Odp : char;
Begin
		Clrscr;
		Writeln (q.question);
		Writeln (q.a);
		Writeln (q.b);
		Writeln (q.c);
		Writeln (q.d);
		Readln (Odp);
		If Odp = q.answer Then
			Pytaj_znak := True
		Else
			Pytaj_znak := False;    
End;

Function Pytaj_znaki(a : Pytanie_znaki): Boolean;
 Var Odp : String;
Begin
		Clrscr;
		Writeln (a.question);
		Readln (Odp);
		If ((Odp = a.odp1) or (Odp = a.odp2) or (Odp = a.odp3) or (Odp = a.odp4)or (Odp = a.odp5) or (Odp = a.odp6) or (Odp = a.odp7)) Then
			Pytaj_znaki := True
		Else
			Pytaj_znaki := False;    
End; 

		  		
Function Odp_Dobra(x, y : Byte): Integer;
Begin
			Clrscr;
			Obramowanie;
			Inc (Punkty);
			Writeln ('Dobrze, jedziesz dalej!');
			Writeln ('Aktualny stan punkt',chr(162),'w: ',punkty);
			Gotoxy (x,y);
			Writeln (chr(254));
			Odp_Dobra := punkty; 
End;

Function Odp_Zla(x, y : Byte): Integer;
Begin
			Clrscr;
			Obramowanie;
			Dec (Punkty);
			Writeln (chr(141),'le, wracasz na pocz',chr(165),'tek!');
			Writeln ('Aktualny stan punkt',chr(162),'w: ',punkty);
			Odp_Zla:= punkty;
End;
		
BEGIN
Punkty := 0;
Randomize;
Cursoroff;
Menu:
	Writeln ('Witaj !');
	Writeln;
	Writeln ('1. Nowa gra');
	Writeln ('2. Samouczek');
	Writeln ('3. Ustawienia');
	Writeln ('4. Wyj',chr(152),'cie');
	Readln (wybor);
	clrscr;
Case wybor of
 1:
 Begin
	Obramowanie;
Poczatek:
 x:= 3;
 y:= 3;
  Gotoxy (x,y);
  Writeln (chr(254));
Start:
klawisz:= readkey;
Case Klawisz of
 'a': dec(x);
 's': inc(y);
 'w': dec(y);
 'd': inc(x);
End;
	If (x > 24) Then x:= 24;
	If (y > 19) Then y:= 19;
	If (x < 3) Then x:= 3;
	If (y < 3) Then y:= 3;
	If (x = 24) and (y = 19) Then Goto Koniec;
  Clrscr;
 Gotoxy (x,y);
 Writeln (chr(254));
	Obramowanie;

  p[1].question := Concat('Ile bajt',chr(162),'w jest wykorzystywane do kodowania jednego znaku w ASCII?');
  p[1].answer := 1;
  
  p[2].question := Concat('Ile bajt',chr(162),'w jest wykorzystywane do kodowania jednego znaku w Unicode?');
  p[2].answer := 2;
  
  p[3].question := Concat('Ile r',chr(162),'',chr(190),'nych znak',chr(162),'w jest zakodowanych w podstawowym zbiorze ASCII?');
  p[3].answer := 128;
  
  p[4].question := Concat('Ile r',chr(162),'',chr(190),'nych znak',chr(162),'w jest zakodowanych w rozszerzonym zbiorze ASCII?');
  p[4].answer := 255;
  
  p[5].question := Concat('W kt',chr(162),'rym roku William B. Shockley wynalaz',chr(136),' tranzystor?');
  p[5].answer := 1947;
  
  p[6].question := Concat('Jak',chr(165),' pojemno',chr(152),'',chr(134),' ma dyskietka 5.25 cala (Podw',chr(162),'jnej g',chr(169),'stosci)? Warto',chr(152),'',chr(134),' do podania w KB.');
  p[6].answer := 360;
  
  p[7].question := Concat('Jak',chr(165),' pojemno',chr(152),'',chr(134),' ma dyskietka 5.25 cala (Poczw',chr(162),'rnej g',chr(169),'stosci)? Warto',chr(152),'',chr(134),' do podania w MB.');
  p[7].answer := 1.2;
  
  p[8].question := Concat('Jak',chr(165),' pojemno',chr(152),'',chr(134),' ma dyskietka 3.5 cala (Podw',chr(162),'jnej g',chr(169),'stosci)? Warto',chr(152),'',chr(134),' do podania w KB.');
  p[8].answer := 720;
  
  p[9].question := Concat('Jak',chr(165),' pojemno',chr(152),'',chr(134),' ma dyskietka 3.5 cala (Wysokiej g',chr(169),'stosci)? Warto',chr(152),'',chr(134),' do podania w MB.');
  p[9].answer := 1.44;
  
  p[10].question := Concat('Numer wersji j',chr(165),'dra systemu Windows XP (32-Bit) to:');
  p[10].answer := 5.1;
  
  p[11].question := Concat('Numer wersji j',chr(165),'dra systemu Windows XP (64-Bit) to:');
  p[11].answer := 5.2;
  
  p[12].question := Concat('Numer wersji j',chr(165),'dra systemu Windows 7 to:');
  p[12].answer := 6.1;
  
  p[13].question := Concat('Numer wersji j',chr(165),'dra systemu Windows 2000 to:');
  p[13].answer := 5.0;
  
  p[14].question := Concat('Z ilu znak',chr(162),'w ska',chr(136),'ada si',chr(169),' CD-Key dla Windows XP?');
  p[14].answer := 25;
  
  p[15].question := Concat('Jak',chr(165),' umown',chr(165),' pojemno',chr(152),'',chr(134),' ma p',chr(136),'yta DVD-R DL? Warto',chr(152),'',chr(134),' do podania w GB.');
  p[15].answer := 8.5;
  
  p[16].question := Concat('W kt',chr(162),'rym roku firma Microsoft wyda',chr(136),'a pierwszy system operacyjny z rodziny Windows?');
  p[16].answer := 1985;
  

	a[1].question := Concat('S',chr(136),'u',chr(190),'y do zamiany sygna',chr(136),'',chr(162),'w analogowych na sygna',chr(136),'y cyfrowe:');	
	a[1].odp1 := 'Koder';
	a[1].odp2 := 'koder';
  
	a[2].question := Concat('Najwa',chr(190),'niejszym urz',chr(165),'dzeniem wej',chr(152),'cia jest:');
	a[2].odp1 := 'Klawiatura';
	a[2].odp2 := 'klawiatura';
  
	a[3].question := Concat('Najwa',chr(190),'niejszym urz',chr(165),'dzeniem wyj',chr(152),'cia jest:');
	a[3].odp1 := 'Monitor';
	a[3].odp2 := 'monitor';
  
	a[4].question := Concat('Jaki uk',chr(136),'ad arytmetyczny jest odpowiedzialny za realizacj',chr(169),' operacji odejmowania?');
	a[4].odp1 := 'Subtraktor';
	a[4].odp2 := 'subtraktor';
  
	a[5].question := Concat('Kt',chr(162),'ra biblioteka w Pascalu, jest bibliotek',chr(165),' nie wymagaj',chr(165),'c',chr(165),' deklaracji?');
	a[5].odp1 := 'System';
	a[5].odp2 := 'system';
  
	a[6].question := 'Nazwa kodowa systemu Microsoft Windows 95 to: ';
	a[6].odp1 := 'Chicago';
	a[6].odp2 := 'chicago';
  
	a[7].question := 'Nazwa kodowa systemu Microsoft Windows 98 to: ';
	a[7].odp1 := 'Memphis';
	a[7].odp2 := 'memphis';
  
	a[8].question := 'Nazwa kodowa systemu Microsoft Windows Vista to: ';
	a[8].odp1 := 'Longhorn';
	a[8].odp2 := 'longhorn';
  
	a[9].question := 'Nazwa kodowa systemu Microsoft Windows XP to: ';
	a[9].odp1 := 'Whistler';
	a[9].odp2 := 'whistler';
  
	a[10].question := 'Nazwa kodowa systemu Microsoft Windows 7 to: ';
	a[10].odp1 := 'Vinnea';
	a[10].odp2 := 'vinnea';
    
	a[11].question := Concat('Przeno',chr(152),'ne dyski twarde zazwyczaj pod',chr(136),'',chr(165),'czamy pod z',chr(136),'',chr(165),'cze:');
	a[11].odp1 := 'USB';
	a[11].odp2 := 'Usb';
	a[11].odp3 := 'usb';
	a[11].odp4 := 'Universal Serial Bus';
  
	a[12].question := Concat('Grupa 4 lub 8 po',chr(136),'',chr(165),'czonych ze sob',chr(165),' prze',chr(190),'utnik',chr(162),'w tworzy:');
	a[12].odp1 := 'Rejestr';
	a[12].odp2 := 'rejestr';
    
	a[13].question := Concat('Jakim kolorem zaznaczone s',chr(165),' wej',chr(152),'cia USB3.0 na p',chr(136),'ycie g',chr(136),'',chr(162),'wnej?');
	a[13].odp1 := 'Niebieskim';
	a[13].odp2 := 'niebieskim';
	a[13].odp3 := 'Niebieski';
	a[13].odp4 := 'niebieski';
  
	a[14].question := Concat('Kt',chr(162),'ra firma skonstruowa',chr(136),'a mikrokomputer Macintosh?');
	a[14].odp1 := 'Apple';
	a[14].odp2 := 'apple';
  
	a[15].question := Concat('Kt',chr(162),'ra firma skonstruowa',chr(136),'a mikrokomputer PC?');
	a[15].odp1 := 'IBM';
	a[15].odp2 := 'ibm';
	a[15].odp3 := 'International Business Machines Corporation';
	a[15].odp4 := 'International Business Machines';
  
	a[16].question := Concat('Jak nazywa si',chr(169),' podstawowa jednostka zapisu informacji w komputerze?');
	a[16].odp1 := 'Bit';
	a[16].odp2 := 'bit';
  
	a[17].question := Concat('Poj',chr(169),'cie software dotyczy:');
	a[17].odp1 := 'Oprogramowania';
	a[17].odp2 := 'oprogramowania';
  
	a[18].question := Concat('Poj',chr(169),'cie hardware dotyczy:');
	a[18].odp1 := Concat('Sprz',chr(169),'tu');
	a[18].odp2 := Concat('sprz',chr(169),'tu');
	a[18].odp3 := Concat('Sprzetu');
	a[18].odp4 := Concat('sprzetu');
  
	a[19].question := Concat('Pierwszym systemem operacyjnym z rodziny Windows oferuj',chr(165),'cym, wielozadaniowo',chr(152),'',chr(134),' z wyw',chr(136),'aszczeniem by',chr(136),':');
	a[19].odp1 := 'Windows 95';
	a[19].odp2 := 'windows 95';
	a[19].odp3 := 'Windows95';
	a[19].odp4 := 'windows95';
	a[19].odp5 := 'win95';
	a[19].odp6 := 'Win95';
	a[19].odp7 := '95';
  
	a[20].question := Concat('Kt',chr(162),'ra firma produkuje CPU z technologi',chr(165),' Sandy Brige E?');
	a[20].odp1 := 'Intel';
	a[20].odp2 := 'intel';
  
	a[21].question := Concat('Pod jakie z',chr(136),'',chr(165),'cze (DE-15F) pod',chr(136),'',chr(165),'cza si',chr(169),' standardowe monitory typu CRT?');
	a[21].odp1 := 'VGA';
	a[21].odp2 := 'SVGA';
	a[21].odp3 := 'XGA';
	a[21].odp4 := 'vga';
	a[21].odp5 := 'svga';
	a[21].odp6 := 'xga';
  
	a[22].question := Concat('Kt',chr(162),'ra firma wyprodukowa',chr(136),'a pierwszy mikroprocesor?');
	a[22].odp1 := 'Intel';
	a[22].odp2 := 'intel';
  
	a[23].question := Concat('Pocz',chr(165),'tek etykiety w MS-DOS oznaczamy symbolem: ');
	a[23].odp1 := ':';
	
  
  q[1].question := 'Symbol graficzny instrukcji warunkowej posiada: ';
  q[1].a :=  Concat('A. Tylko wej',chr(152),'cie.');
  q[1].b :=  Concat('B. Tylko wyj',chr(152),'cie');
  q[1].c :=  Concat('C. Jedno wej',chr(152),'cie i jedno wyj',chr(152),'cie');        
  q[1].d :=  Concat('D. Jedno wej',chr(152),'cie i dwa wyj',chr(152),'cia');
  q[1].answer := 'd';
  
  q[2].question := Concat('Kt',chr(162),'ra z ni',chr(190),'ej wymienionych firm opracowa',chr(136),'a technologi',chr(169),' LightScrible dla p',chr(136),'yt kompaktowych?');
  q[2].a :=  'A. HP';
  q[2].b :=  'B. Dell';
  q[2].c :=  'C. Acer';        
  q[2].d :=  'D. Asus';
  q[2].answer := 'a';
  
  q[3].question := Concat('Najstarsz',chr(165),' przegl',chr(165),'dark',chr(165),' internetow',chr(165),' z wymienionych poni',chr(190),'ej jest?');
  q[3].a :=  'A. Internet Explorer';
  q[3].b :=  'B. Mozilla Firefox';
  q[3].c :=  'C. Google Chrome';        
  q[3].d :=  'D. Opera Broswer';
  q[3].answer := 'd';
  
  q[4].question := Concat('',chr(157),'',chr(165),'czenie polece',chr(228),' w MS-DOS inaczej nazywamy:');
  q[4].a :=  Concat('A. Tworzeniem potok',chr(162),'w');
  q[4].b :=  'B. Tworzeniem strumieni';
  q[4].c :=  'C. Tworzeniem rzek';        
  q[4].d :=  Concat('D. Tworzeniem kanał',chr(162),'w');
  q[4].answer := 'a';
  
  q[5].question := Concat('Po czym mo',chr(190),'na pozna',chr(134),' ikon',chr(169),' skr',chr(162),'tu w systemie Windows?');
  q[5].a :=  Concat('A. Po ma',chr(136),'ej strza',chr(136),'ce w lewym dolnym rogu ikony');
  q[5].b :=  Concat('B. Po rozmiarze odpowiadaj',chr(165),'cym za wielko',chr(152),'',chr(134),' pliku docelowego');
  q[5].c :=  'C. Po zmienionej nazwie pliku';        
  q[5].d :=  'D. Po pomniejszonej ikonie pliku lub folderu';
  q[5].answer := 'a';
  
  q[6].question := 'Netykieta to:';
  q[6].a :=  Concat('A. Zbi',chr(162),'r zasad obowi',chr(165),'zuj',chr(165),'cych na serwerach lokalnych');
  q[6].b :=  Concat('B. Zbi',chr(162),'r zasad obowi',chr(165),'zuj',chr(165),'cych w sieci internet');
  q[6].c :=  Concat('C. Zbi',chr(162),'r zasad obowi',chr(165),'zuj',chr(165),'cych na lokalnych profilach u',chr(190),'ytkownika');        
  q[6].d :=  Concat('D. Zbi',chr(162),'r zasad obowi',chr(165),'zuj',chr(165),'cych na serwerach gier internetowych');
  q[6].answer := 'b';
  
  q[7].question := Concat('Kt',chr(162),'ra z podanych stron internetowych nie jest wyszukiwark',chr(165),'?');
  q[7].a :=  'A. http://www.google.pl/';
  q[7].b :=  'B. http://www.pl.wikipedia.org/';
  q[7].c :=  'C. http://www.bing.com/';        
  q[7].d :=  'D. http://www.wp.pl/';
  q[7].answer := 'd';
  
  q[8].question := 'Operatory binarne w Pascalu to:';
  q[8].a :=  'A. div, mod';
  q[8].b :=  'B. and, or, xor';
  q[8].c :=  'C. shl, shr';        
  q[8].d :=  'D. not';
  q[8].answer := 'c';
  
  q[9].question := Concat('Kt',chr(162),'ry z wymienionych program',chr(162),'w nie s',chr(136),'u',chr(190),'y do tworzenia grafiki wektorowej?');
  q[9].a :=  'A. Adobe FreeHand';
  q[9].b :=  'B. Adobe Illustrator';
  q[9].c :=  'C. Adobe Flash';        
  q[9].d :=  'D. Adobe Photoshop';
  q[9].answer := 'd';
  
  q[10].question := Concat('Kt',chr(162),'ry z podanych poni',chr(190),'ej format',chr(162),'w grafiki nie jest formatem grafiki rastrowej?');
  q[10].a :=  'A. .bmp';
  q[10].b :=  'B. .png';
  q[10].c :=  'C. .pdf';        
  q[10].d :=  'D. .tiff';
  q[10].answer := 'c';
  
  q[11].question := 'Porty COM, USB, FireWire to gniazda:';
  q[11].a :=  'A. Kaskadowe';
  q[11].b :=  'B. Szeregowe';
  q[11].c :=  Concat('C. R',chr(162),'wnonoleg',chr(136),'e');        
  q[11].d :=  Concat('D. S',chr(165),'siaduj',chr(165),'ce');
  q[11].answer := 'b';
  
  q[12].question := Concat('Czym charakteryzuje si',chr(169),' dysk CD-ROM?');
  q[12].a :=  Concat('A. Tym ',chr(190),'e jest tylko do odczytu');
  q[12].b :=  Concat('B. Tym ',chr(190),'e jest do jednokrotnego zapisu i wielokrotnego odczytu');
  q[12].c :=  Concat('C. Tym ',chr(190),'e jest do wielokrotnego zapisu i odczytu');        
  q[12].d :=  Concat('D. Tym ',chr(190),'e ma pojemno',chr(152),'',chr(134),' nie mniejsz',chr(165),' ni',chr(190),' 4.7GB');
  q[12].answer := 'a';
  
  q[13].question := Concat('Czym charakteryzuje si',chr(169),' dysk CD-R?');
  q[13].a :=  Concat('A. Tym ',chr(190),'e jest tylko do odczytu');
  q[13].b :=  Concat('B. Tym ',chr(190),'e jest do jednokrotnego zapisu i wielokrotnego odczytu');
  q[13].c :=  Concat('C. Tym ',chr(190),'e jest do wielokrotnego zapisu i odczytu');        
  q[13].d :=  Concat('D. Tym ',chr(190),'e ma pojemno',chr(152),'',chr(134),' nie mniejsz',chr(165),' ni',chr(190),' 4.7GB');
  q[13].answer := 'b';
  
  q[14].question := Concat('Czym charakteryzuje si',chr(169),' dysk CD-RW?');
  q[14].a :=  Concat('A. Tym ',chr(190),'e jest tylko do odczytu');
  q[14].b :=  Concat('B. Tym ',chr(190),'e jest do jednokrotnego zapisu i wielokrotnego odczytu');
  q[14].c :=  Concat('C. Tym ',chr(190),'e jest do wielokrotnego zapisu i odczytu');        
  q[14].d :=  Concat('D. Tym ',chr(190),'e ma pojemno',chr(152),'',chr(134),' nie mniejsz',chr(165),' ni',chr(190),' 4.7GB');
  q[14].answer := 'c';
  
  q[15].question := Concat('Nap',chr(169),'d dysk',chr(162),'w kompaktowych ma pr',chr(169),'dko',chr(152),'',chr(134),' 52X oznacza to ',chr(190),'e dysk w takim nap',chr(169),'dzie odtwarza:');
  q[15].a :=  'A. 2,552MB danych na sekunde';
  q[15].b :=  'B. 2,525MB danych na sekunde';
  q[15].c :=  'C. 5,252MB danych na sekunde';        
  q[15].d :=  'D. 5.225MB danych na sekunde';
  q[15].answer := 'd';
  
  q[16].question := Concat('Przyk',chr(136),'ad drukarki mozaikowej to:');
  q[16].a :=  'A. Drukarka atramentowa';
  q[16].b :=  Concat('B. Drukarka laserowa czarno-bia',chr(136),'a');
  q[16].c :=  'C. Drukarka laserowa kolorowa';        
  q[16].d :=  Concat('D. Drukarka ig',chr(136),'owa');
  q[16].answer := 'd';
  
  q[17].question := Concat('Co okre',chr(152),'la rozszerzenie nazwy pliku?');
  q[17].a :=  Concat('A. Okre',chr(152),'la typ pliku');
  q[17].b :=  Concat('B. Okre',chr(152),'la rozmiar pliku');
  q[17].c :=  Concat('C. Okre',chr(152),'la czy plik zosta',chr(136),' kiedykolwiek nadpisny');        
  q[17].d :=  Concat('D. Okre',chr(152),'le dat',chr(169),' utworzenia pliku');
  q[17].answer := 'a';
  
  q[18].question := Concat('Systemy operacyjne Linux zawieraj',chr(165),' j',chr(165),'dro typu:');
  q[18].a :=  'A. Hybrydowego';
  q[18].b :=  Concat('B. Mikroj',chr(165),'drowego');
  q[18].c :=  'C. Nanokernelowego ';        
  q[18].d :=  'D. Monolitycznego';
  q[18].answer := 'd';
  
  q[19].question := Concat('Systemy operacyjne Windows zawieraj',chr(165),' j',chr(165),'dro typu:');
  q[19].a :=  'A. Hybrydowego';
  q[19].b :=  Concat('B. Mikroj',chr(165),'drowego');
  q[19].c :=  'C. Nanokernelowego';        
  q[19].d :=  'D. Monolitycznego';
  q[19].answer := 'a';
  
  q[20].question := 'Format kartki A4 ma rozmiar:';
  q[20].a :=  'A. 211 x 295 mm';
  q[20].b :=  'B. 211 x 296 mm';
  q[20].c :=  'C. 210 x 297 mm';        
  q[20].d :=  'D. 210 x 298 mm';
  q[20].answer := 'c';
  
  q[21].question := Concat('Skr',chr(162),'t HD odno',chr(152),'nie dyskietek oznacza:');
  q[21].a :=  'A. High Destiny';
  q[21].b :=  'B. High Definition';
  q[21].c :=  'C. High Density';        
  q[21].d :=  'D. High Quality';
  q[21].answer := 'c';
  
  q[22].question := Concat('Literka "k" na ko',chr(228),'cu nazwy modelu procesora firmy Intel oznacza to ',chr(190),'e:');
  q[22].a :=  Concat('A. procesor jest odporny na temperatury wy',chr(190),'sze niż 85 stopni Celcjusza');
  q[22].b :=  Concat('B. procesor jest podatny na podkr',chr(169),'canie w celu uzyskania wi',chr(169),'kszej wydajno',chr(152),'ci');
  q[22].c :=  Concat('C. procesor jest do',chr(136),'aczany z dodatkowym ch',chr(136),'odzeniem');        
  q[22].d :=  Concat('D. procesor jest przystosowany do ch',chr(136),'odzenia ciek',chr(136),'ym azotem');
  q[22].answer := 'b';
  Repeat 
 xlos := (3+Random(26));
 ylos := (3+Random(21));
  	If ((x = xlos) and (y = ylos)) Then
  	  Case 1+Random(3) of
  	  1:
		If (Pytaj_znak(q[(1+Random(31))]) = True) Then
			Begin
				Odp_Dobra (x,y);	
				Goto Start;
			End			
		Else
			Begin 
				Odp_Zla (x,y);
				Goto Poczatek;
			End;
	  2:	
		If (Pytaj_znaki(a[(1+Random(23))]) = True) Then	
			Begin
				Odp_Dobra (x,y);	
				Goto Start;
			End			
		Else
			Begin 
				Odp_Zla (x,y);
				Goto Poczatek;
			End;	
	  3:	
		If (Pytaj_liczba(p[(1+Random(16))]) = True) Then
			Begin
				Odp_Dobra (x,y);	
				Goto Start;
			End			
		Else
			Begin 
				Odp_Zla (x,y);
				Goto Poczatek;
			End;
	  End;		
  Until ((x = 26) and (y = 21));	
  				
Goto Start;	 
Koniec:
 Clrscr;
 Goto Menu;
End;
 2:
	Begin
	
	End;
 3:
	Begin
	
	End;
 4: Halt;
End; 	
END.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 14:58
autor: pc.qwerty
żeby program przy sprawdzaniu pytania nie brał pod uwagę wielkości liter i ich umieszczenia najlepiej też
Wielkość liter - zamień sobie odpowiedź na małe litery i sprawdzaj w takiej formie - ansilowercase(jakis_string);
To drugie - w delphi można to zrobić funkcją pos(). W pascalu... sprawdzasz, czy pierwszym znakiem w stringu jest spacja, jeśli tak to kasujesz, potem powtarzasz tak do usunięcia spacji (repeat... :trollface:) i dopiero wtedy sprawdzasz poprawność.
Ogólnie operacje na stringach: http://www.freepascal.org/docs-html/rtl ... tions.html

edit: teraz jeszcze zwróciłem uwagę na to:

Kod: Zaznacz cały

Writeln ('4. Wyj',chr(152),'cie');
czemu tak? U mnie nie było faili z kompilowaniem ani używaniem, jak były polskie litery wpisane normalnie.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:03
autor: lolasher
Czy mi się zdawało, czy ktoś już tu wrzucał swój kod, gdzie klawisze inne niż abcd były zablokowane przy odpowiadaniu?

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:11
autor: TheMediator95
@pc.qwerty
Dzięki pokombinuje i zobaczy się czy coś uda się wykombinować. A piszę polskie znaki przez tablicę ASCII ponieważ jak uruchomię skompilowany program bez tablicy ASCII tylko normalnie to w konsoli programu nie ma polskich znaków tylko jakieś fikuśne gówna. (Co ciekawe na Linuxaxh w szkole jest na odwrót tablica ASCII nie działa ale polskie znaki się wyświetlają).

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:18
autor: pc.qwerty
No to masz faila z tablicą kodową w konsoli.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:20
autor: TheMediator95
Każdy pod Windows ma takiego Faila (w konsoli cmd.exe), jak nie wierzysz to sobie sprawdź :P

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:21
autor: pc.qwerty
Wiem, ale przecież we właściwościach konsoli albo przez chcp możesz sobie to unbrickować.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:30
autor: TheMediator95
Ty faktycznie... Składnia: chcp strona_kodowa
Tylko nie wiem jaką stronę kodową mam ustawić :(

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:34
autor: pc.qwerty
Popróbuj 852, 1250, 65001.