Felhasználói eszközök

Eszközök a webhelyen


inf-prog-fszi:fej_vagy_iras

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

inf-prog-fszi:fej_vagy_iras [2017/06/19 09:47]
beistvan létrehozva
inf-prog-fszi:fej_vagy_iras [2017/06/19 09:47] (aktuális)
beistvan létrehozva
Sor 1: Sor 1:
 +====== Fej vagy írás ======
 +
 +Megoldás fő adattároló tömb használata nélkül, ahogy az eredeti feladat kéri.
 +
 +<code pascal fejvagyiras_tomb_nelkul.pas>
 +program fejvagyiras_tomb_nelkul;
 +const m=1000;
 +var
 +  egymasutan,dobas,fej,
 +  maxindex,max,ffff,fffi,
 +  i,j,db,n:integer;
 +  a:array [1..4*m] of char;
 +  tipp,egydobas,dobott,d1,d2,d3,d4:char;
 +  relativ: real;
 +  f:text;
 +begin
 +  randomize;
 +  writeln('1. feladat');
 +  dobas:=random(2)+1;
 +  if dobas=1 then
 +  begin
 +    egydobas:='I';
 +    writeln(egydobas)
 +  end
 +  else
 +  begin
 +    egydobas:='F';
 +    writeln(egydobas);
 +  end;
 +  writeln('2. feladat');
 +  writeln('Irja be tippjet: '); readln(tipp);
 +  dobott:=egydobas;
 +  writeln('A tipp ',upcase(tipp),' a dobas ',dobott);
 +  if upcase(tipp)=dobott then
 +    writeln('Eltalalta!')
 +  else
 +    writeln('Nem talalta el!');
 +  writeln('3. feladat');
 +  Assign(f,'kiserlet.txt');
 +  reset(f);
 +  i:=0;
 +  while not eof(f) do
 +  begin
 +    inc(i);
 +    readln(f,tipp);
 +  end;
 +  n:=i;
 +  writeln(n,' dobas tortent');
 +  writeln('4. feladat');
 +  fej:=0;
 +  reset(f);
 +  while not eof(f) do
 +  begin
 +    readln(f,tipp);
 +    if tipp='F' then inc(fej);
 +  end;
 +  relativ:=(fej/n)*100;
 +
 +  writeln('fej relativ gyakorisaga: ',relativ:2:2,'%');
 +  writeln('5. feladat');
 +  egymasutan:=0;
 +  reset(f);
 +  readln(f,d1);
 +  readln(f,d2);
 +  readln(f,d3);
 +  readln(f,d4);
 +  if (d1='F') and (d2='F') and (d3='I') then inc(egymasutan);
 +  //i:=1;
 +  //if ((T[i]='F') and (T[i+1]='F') and (T[i+2]='I')) then inc(egymasutan);
 +  for i:=1 to n-3 do
 +  begin
 +    d1:=d2; d2:=d3; d3:=d4; readln(f,d4);
 +    if (d1='I') and (d2='F') and (d3='F') and (d4='I') then
 +      inc(egymasutan);
 +  end;
 +  //i:=n-2;
 +  if (d2='I') and (d3='F') and (d4='F') then inc(egymasutan);
 +  writeln('2 fej ennyiszer talalhato egymas utan: ',egymasutan);
 +  writeln('6. feladat');
 +  max:=0;
 +  maxindex:=0;
 +  reset(f);
 +  i:=0;
 +  while not eof(f) do
 +  begin
 +    readln(f,tipp);
 +    i:=i+1;
 +    if tipp = 'F' then
 +    begin
 +      db:=1;
 +      readln(f,tipp);
 +      while not eof(f) and (tipp='F') do
 +      begin
 +        inc(db);
 +        readln(f,tipp);
 +      end;
 +      if db>max then
 +      begin
 +        max:=db;
 +        maxindex:=i;
 +      end;
 +      i:=i+db;
 +    end;
 +  end;
 +  writeln('a leghosszabb tisztafej ',max,' elemu, ',maxindex,' -tol');
 +  writeln('7. feladat');
 +  for i:=1 to 4*m do
 +  begin
 +    if random(2)+1 > 1
 +    then
 +      a[i]:='F'
 +    else
 +      a[i]:='I';
 +    write(a[i]);
 +    if i mod 4 = 0 then write(' ');
 +  end;
 +
 +    //4*i+1 i=0..m-1
 +  ffff:=0;
 +  fffi:=0;
 +  for i:=0 to m-1 do
 +  begin
 +    j:=4*i+1;
 +    if ((a[j]='F') and (a[j+1]='F') and (a[j+2]='F') and (a[j+3]='F')) then
 +      inc(ffff);
 +    if ((a[j]='F') and (a[j+1]='F') and (a[j+2]='F') and (a[j+3]='I')) then
 +      inc(fffi);
 +  end;
 +  writeln;
 +  writeln('FFFF:',ffff,', FFFI:',fffi);
 +  readln;
 +end.
 +
 +</code>
 +
 +Megoldás tömbök használatával.
 +
 +<code pascal fejvagyiras.pas>
 +program fejvagyiras;
 +const m=1000;
 +var
 +  egymasutan,dobas,dobas2,sum,j,fej,iras,
 +  maxindex,max,db,ffff,fffi,
 +  i,n:integer;
 +  T:array [1..5000] of char;
 +  a:array [1..4*m] of char;
 +  tipp,egydobas,dobott:string[2];
 +  relativ: real;
 +  f:text;
 +begin
 +  randomize;
 +  writeln('1. feladat');
 +  dobas:=random(2)+1;
 +  if dobas=1 then
 +  begin
 +    egydobas:='I';
 +    writeln(egydobas)
 +  end
 +  else
 +    if dobas=2 then
 +    begin
 +      egydobas:='F';
 +      writeln(egydobas);
 +    end;
 +writeln('2. feladat');
 +writeln('irja be tippjet: '); readln(tipp);
 +dobott:=egydobas;
 +writeln('a Tipp: ',tipp,' a dobas: ',dobott);
 +if tipp=dobott then writeln('eltalalta') else writeln('nem talalta');
 +writeln('3. feladat');
 +Assign(f,'kiserlet.txt');
 +reset(f);
 +i:=0;
 +while not eof(f) do
 +begin
 +  inc(i);
 +  readln(f,T[i]);
 +end;
 +n:=i;
 +writeln(n,' dobas tortent');
 +writeln('4. feladat');
 +for i:=1 to n do
 +if T[i]='F' then inc(fej);
 +
 +relativ:=(fej/n)*100;
 +
 +writeln('fej relativ gyakorisaga: ',relativ:2:2,'%');
 +writeln('5. feladat');
 +i:=1;
 +if ((T[i]='F') and (T[i+1]='F') and (T[i+2]='I')) then inc(egymasutan);
 +for i:=1 to n-3 do
 +  if ((T[i]='I') and (T[i+1]='F') and (T[i+2]='F') and (T[i+3]='I')) then
 +    inc(egymasutan);
 +i:=n-2;
 +if ((T[i]='I') and (T[i+1]='F') and (T[i+2]='F')) then inc(egymasutan);
 +
 +writeln('2 fej ennyiszer talalhato egymas utan: ',egymasutan);
 +writeln('6. feladat');
 +max:=0;
 +maxindex:=0;
 +//n:=50;
 +for i:=1 to n-1 do
 +begin
 +  if T[i] = 'F' then
 +  begin
 +    db:=1;
 +    j:=i+1;
 +    while (j<=n) and (T[j]='F') do
 +    begin
 +      inc(db);
 +      inc(j);
 +    end;
 +    if db>max then
 +    begin
 +      max:=db;
 +      maxindex:=i;
 +    end;
 +  end;
 +end;
 +writeln('a leghosszabb tisztafej ',max,' elemu, ',maxindex,' -tol');
 +writeln('7. feladat');
 +for i:=1 to 4*m do
 +begin
 +    if random > 0.5
 +    then
 +      a[i]:='F'
 +    else
 +      a[i]:='I';
 +   write(a[i]);
 +    if i mod 4 = 0 then write(' ');
 +end;
 +
 +    //4*i+1 i=0..m-1
 +for i:=0 to m-1 do
 +begin
 +  j:=4*i+1;
 +  if ((a[j]='F') and (a[j+1]='F') and (a[j+2]='F') and (a[j+3]='F')) then
 +    inc(ffff);
 +  if ((a[j]='F') and (a[j+1]='F') and (a[j+2]='F') and (a[j+3]='I')) then
 +    inc(fffi);
 +end;
 +writeln;
 +writeln('FFFF:',ffff,', FFFI:',fffi);
 +readln;
 +end.
 +</code>
 +
  
inf-prog-fszi/fej_vagy_iras.txt · Utolsó módosítás: 2017/06/19 09:47 szerkesztette: beistvan