Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 23 odgovora
  • 7.321 pregleda

Najnovija ↓

Proizvoljan odabir vrednosti i još par pitanja... 04.07.2005. u 23:57 · pre 260 meseci
izmenjeno 1 put, poslednji put Đole 05.07.2005. u 15:32
  1. Đole05.07.2005. u 15:32zapis iz teksta poruke
#1
U pitanju je pascal, naravno. Interesuje me da li promenljiva moze da proizvoljno uzme vrednost iz skupa nekih brojeva i kako se to moze izvesti.
Na primer, imam promenljivu x koja treba da uzme neku vrednost, bilo koju, u rasponu od 1 do 10! Kako?

Hvala...
Re: Proizvoljan odabir vrednosti... 05.07.2005. u 00:19 · pre 260 meseci
izmenjeno 1 put, poslednji put _v!rus_ 05.07.2005. u 00:20
  1. _v!rus_05.07.2005. u 00:20zapis iz teksta poruke
#2
Prvo na pocetak programa stavis jedno [Randomize;], pa onda koristis f-je [Succ(Random(10))]

off-topic:
Mada, ne postoji pojam "bilo koji broj", ne samo u racunarskom svetu, nego u svetu uopste, cak i brojevi koji tebi padnu na pamet su necim uzrokovani, pa nisu "bilo koji" ;)
Re: Proizvoljan odabir vrednosti... 05.07.2005. u 15:28 · pre 259 meseci #3
Hvala na brzom odgovoru!
Da ne bih otvarao novu temu postavicu jos jedno pitanje ovde:
Naime, kako da na kraju ciklusa sa naredbama repeat i until, promenljive resetuju odnosno 'izgube' vrednosti koje su primile u tom istom ciklusu?
Re: Proizvoljan odabir vrednosti i još par pitanja... 05.07.2005. u 23:02 · pre 259 meseci #6
Dakle, znam nesto pascala iz skole, sto smo sad radili u trecog godini pa sam odlucio da nastavim dalje. Uzeo sam malo da se igram, i pala mi na pamet igra u kojoj trebas da pogodis broj iz tri pokusaja. Evo i kod-a, ako ima nekih gluposti nemojte mi se smejati. Pomoc je dobrodosla i ocekujem je!
Code:
Program Pogodi_broj;
var tezina,odgovor,S,i,x,p:integer;
    Pokusaj:array[1..3] of integer;

    kraj:boolean;
Procedure Odabir_tezine;
begin
  writeln('Izaberi nivo tezine');
  writeln('1. Lako');
  writeln('2. Umereno');
  writeln('3. Tesko');
  repeat
    readln(Tezina);
    if Tezina=1 then S:=5;       // ove brojeve treba da bira
    if Tezina=2 then S:=25;     //  nasumicno, ali sada stoji ovako
    if Tezina=3 then S:=50;     //  radi lakseg testiranja!
    if Tezina>3 then writeln('Aj biraj ponovo!');
  until (Tezina=1) or (Tezina=2) or (Tezina=3);
end;
begin
  kraj:=false;
  repeat
  Odabir_tezine;
  writeln('Pogadjaj!');
  while(i<3) do
  for i:=1 to 3 do
  begin
    readln(Pokusaj[i]);
    p:=i;
    if Pokusaj[i]<S then writeln('Veci je');
    if Pokusaj[i]>S then writeln('Manji je');
    if Pokusaj[i]=S then i:=3;
    if Pokusaj[i]=S then writeln('Bravo');
  end;
  if (Pokusaj[1]=S) or (Pokusaj[2]=S) or (Pokusaj[3]=S) then writeln('Bravo, to je trazeni broj!');
  if p=3 then writeln('Nemate vise pokusaja');
  writeln('Zelite li jos jednu partiju?');
  readln(odgovor);
  if odgovor=1 then Kraj:=false;
  if odgovor=2 then Kraj:=true;
  until Kraj=true;
  readln(x);
end.
Re: Proizvoljan odabir vrednosti i još par pitanja... 05.07.2005. u 23:11 · pre 259 meseci
izmenjeno 1 put, poslednji put Srki_82 05.07.2005. u 23:15
  1. Srki_8205.07.2005. u 23:15zapis iz teksta poruke
#7
Lepo... mozda bi mogao to da uradis uz pomoc Turbo Vision-a (rad sa prozorima, misem, dialozima, dugmicima... u Pascalu... verujem da Passwd zna o cemu pricam :) ). Jeste da ces morati da se malo pomucis, ali ce vredeti :)

BTW: Ovo je najkraci moguci program (Turbo Vision) u TP 7
Code:
program TVProba;

uses
  App;

var
  A: TApplication;

begin
  A.Init;
  A.Run;
  A.Done;
end.

Ima podrsku za misa (klikom na donji levi ugao u kojem pise Alt + X ce izaci iz programa, ima podrsku za Accelerator keys... skoro sve kao Windows, ali se sve iscrtava obicnim karakterima).
Potpis
Play Store
Re: Proizvoljan odabir vrednosti i još par pitanja... 06.07.2005. u 00:10 · pre 259 meseci #11
Evo ti slican program koji sam ja prije radio. Na pocetku mozes da odaberes procenat laznih odgovora (bilo bi prelako kad bi ti program stalno govorio istinu). Kod i nije nesto uredan (to mi nije jaca strana), ali radi.

PS: probaj za procenat laznih unjeti 100 :-)
Code:

Program Pogadjanje;
Uses WinCrt;                      {ili stav vec}
const brojeva=1000;
Var prlaznih,broj,pokusaj,odabir,br:integer;

Procedure pocetak;
Begin
Randomize;
Broj:=Random(brojeva);       {bira broj koji ces da pogadjas}
Write ('Unesi procenat laznih odgovora: ');
Readln (Prlaznih);
Clrscr;
End;

Procedure istina;
Begin
If pokusaj<broj then writeln ('Broj je veci.')
else if pokusaj>broj then writeln ('Broj je manji.')
else writeln ('Pogodio si!');
End;

Procedure laz;
var t:integer;
Begin
t:=random (2);               {odlucuje da li ce reci da je veci ili manji}        
If t=0 then writeln ('Broj je veci.')
else writeln ('Broj je manji.');
End;

Begin
pocetak;
Repeat
Write ('>');
Readln (pokusaj);            {odlucuje da li ce da slaze ili kaze istinu}
odabir:=random (100);
if odabir>prlaznih then istina
else laz;
inc (br);
writeln;
Until pokusaj=broj;
ClrScr;
Writeln ('Procenat laznih odgovora: ',prlaznih);
Writeln ('Br. pogodjen iz ',br,'. pokusaja.');
end.
Re: Proizvoljan odabir vrednosti i još par pitanja... 06.07.2005. u 01:32 · pre 259 meseci #12
Hmmm... Ovaj prosli kod mi bas i nije pomogao, nazalost!
Mene u stvari interesuje kako da promenljive 'izgube' vrednost, znaci, da budu kao na samom pocetku izvrsavanja programa... Da li je to moguce uraditi nekako?
Re: Proizvoljan odabir vrednosti i još par pitanja... 06.07.2005. u 03:26 · pre 259 meseci
izmenjeno 1 put, poslednji put Toyo 06.07.2005. u 03:28
  1. Toyo06.07.2005. u 03:28zapis iz teksta poruke
#13
Pa to ti bas tako nece proci.
1. Izbegavaj da u for petlji menjas vrednost i (to tako ne bi smelo da se radi)
2. s ti predstavlja samo nivo tezine do kojeg se bira broj a ti moras da uvedes novu promenljivu r naprimer koja ce da generise broj izmedju tog intervala.
3. taj niz u koji smestas prethosne odgovore nije potreban

Evo ja sam prepravio nesto pa mozda ce da radi, samo sto je pokusaj integer (a ne niz) i uvedene su varijable r: integer, nadjen: boolean koje treba da dopises.
Znaci samo glavni program:
Code:

begin
  kraj:=false;
  repeat
   Odabir_tezine;
   writeln('Pogadjaj brojeve izmedju 0 - !', S);
   nadjen := false;
   r := random(S)+1;
   i := 0;
  while(i<3) and not nadjen do
   begin
    inc(i);
    readln(Pokusaj);
    if Pokusaj<r then writeln('Veci je')
     else if Pokusaj>r then writeln('Manji je')
     else nadjen := true;
   end;
   if nadjen then writeln('Bravo') else writeln('Ne ne ne. Gotov si.');
   writeln('Zelite li jos jednu partiju?');
   readln(odgovor);
  until (odgovor =2);
  readln;
end.
Re: Proizvoljan odabir vrednosti i još par pitanja... 06.07.2005. u 12:13 · pre 259 meseci #14
Pa moj kompajler inicijalizuje vrijednost "brojnih" (integer,longint,real..) varijabli na 0, logickih (boolean) na true, a za char nisam siguran, ali je lako provjeriti. Dakle ako hoces da ti varijeble budu kao na pocetku programa samo navedes, npr. s:=0; ili b:=true; (iako neki kompajleri drugacije inicijalizuju varijable, na primjer na minint i slicno).

Iako nisam siguran bas zasto ti to treba...
Re: Proizvoljan odabir vrednosti i još par pitanja... 07.07.2005. u 21:14 · pre 259 meseci #15
Code:
Program Pogodi_broj;
var tezina,Pokusaj,odgovor,S,i:integer;
    kraj,pogodjen:boolean;
Procedure Odabir_tezine;
begin
  writeln('Izaberi nivo tezine');
  writeln('1. Lako');
  writeln('2. Umereno');
  writeln('3. Tesko');
  repeat
    randomize;
    readln(Tezina);
    if Tezina=1 then S:=Random(10);
    if Tezina=2 then S:=Random(50);
    if Tezina=3 then S:=Random(100);
    if (Tezina<1) or (Tezina>3) then writeln('Aj biraj ponovo!');
  until (Tezina=1) or (Tezina=2) or (Tezina=3);
end;
begin
  repeat
  Odabir_tezine;
  case Tezina of
  1:writeln('Broj koji trebas da pogodis se nalazi u intervalu od 1-10');
  2:writeln('Broj koji trebas da pogodis se nalazi u intervalu od 1-50');
  3:writeln('Broj koji trebas da pogodis se nalazi u intervalu od 1-100');
  end;
  kraj:=false; pogodjen:=false; Pokusaj:=0;
  i:=0;
  writeln('Pogadjaj');
  while (i<3) and (pogodjen=false) do
  begin
    i:=i+1;
    readln(Pokusaj);
    if Pokusaj<S then writeln('Veci je');
    if Pokusaj>S then writeln('Manji je');
    if Pokusaj=S then pogodjen:=true;
  end;
  if (Pokusaj<>S) then writeln('Nemate vise pokusaja');
  if pogodjen=true then writeln('Svaka cast, ',S,' je trazeni broj!');
  writeln('Zelite li jos jednu partiju?');
  repeat
  readln(odgovor);
  if odgovor=1 then Kraj:=false
  else if odgovor=2 then Kraj:=true
  else writeln(' DA(1) ili NE(2)? ');
  until (odgovor=1) or (odgovor=2);
  until Kraj=true;
  writeln('Tresni ENTER za izlazak.');
  readln;
end.

Jeeeeee, radi! Hvala vam svima na pomoci!
Jedino sto mi nije jasno je:
Code:
while (i<3) and (pogodjen=false) do

...zasto ide and umesto or?
Re: Proizvoljan odabir vrednosti i još par pitanja... 07.07.2005. u 22:05 · pre 259 meseci #16
Pa zamisli da pogodis iz prve:
tada je i=1 a pogodjen =true

(i<3) or (pogodjen=false) bi dalo tacan izraz i program bi ponovo usao u while.

Evo malo logike: A and B <-> not (not A or not B)
znaci ako bas insistiras sa OR, mogao bi da pises: while not ((i>=3) or (pogodjen=true)), to bi doslo na isto.

Pozdrav.
Re: Proizvoljan odabir vrednosti i još par pitanja... 07.07.2005. u 22:29 · pre 259 meseci #17
A zasto bi ponovo usao u while kada je... eto, da uzmem tvoj prime i=1 a pogodjen =true. Dakle on ce vrsiti ono sto se nalazi u ciklusu dok se jedan od uslova ne porusi. U ovom slucaju pogodjen=true i on bi trebao da preskoci ciklus... Zar ne! Bar meni tako zvuci logicno, ali koliko vidim, ja sam nesto pogresno shvatio... Valjda ce mi se razjasniti?:)
Re: Proizvoljan odabir vrednosti i još par pitanja... 08.07.2005. u 00:07 · pre 259 meseci #20
Pocni da ucis Turbo Vision u Pascalu. Ako imas TP7 onda imas i Turbo Vision. To su objekti za rad sa misem, prozorima i slicno. Ako budem imao vremena napisacu ovaj tvoj program koristeci Turbo Vision pa ces videti kako to izgleda.
Potpis
Play Store
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme