PASCAL - Zadaci, resenja, problemi, izazovi...

Sheks:
Jel moze neko da mi resi ovo:
1.Napisati program koji za niz C(200) pronalazi aritmeticku sredinu elemenata niza i prebrojava koliko ima elemenata koji su veci od srednje vrednosti.


Evo resenja. Nisam imao vremena da ga proverim, pa nemoj zameriti ako ima neka grescica. Isprobaj ga pa ako nesto ne valja, kazi da ga ispravim. Zurio sam puno (3min sam radio zadatak) 8-)

Kod:
program s_niza;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  fajl, izlaz: TextFile;
  niz: array[1..200] of integer;
  zbir, br_vecih, i: integer;
  sredina: real;
begin
  assign(fajl,'niz.dat');
  reset(fajl);
  for i:= 1 to 200 do readln(fajl,niz[i]);
  close(fajl);

  zbir:=0;
  for i:= 1 to 200 do zbir:=zbir + niz[i];

  sredina:=zbir / 200;

  br_vecih:=0;
  for i:= 1 to 200 do if niz[i]>sredina then br_vecih:=br_vecih+1;

  assign(izlaz,'out.dat');
  rewrite(izlaz);
  writeln(izlaz,sredina);
  writeln(izlaz,br_vecih);
  close(izlaz);
end.
 
Zdravo svima,
Ovo mi je prvi post :D
Izvinite, dolazim iz Makedonije i srpski mi nije bas najbolji ;)
Imam takmicenje informatike u nedelju i zaglavio sam na jedan zadatak koji mi je nastavnik dao.
Evo teksta : (na makedonskom je, i ako neko ne razume mogu da prevedem)

http://groups.yahoo.com/group/ymoi/files/Zadaci/Helix.doc

Molim vas ako mozete da mi pomognete sto pre......... :(
IZMENA: Molim vas, resenje mi je potrebno vrlo hitno (po mogucnosti vec do sutra)
Probo sam da resim zadatak sa pointeri ma, ali nista
Zadatak je dosta tezak i obeman (barem za mene)
 
IgorChete:
Zdravo svima,
Ovo mi je prvi post :D
Izvinite, dolazim iz Makedonije i srpski mi nije bas najbolji ;)
Imam takmicenje informatike u nedelju i zaglavio sam na jedan zadatak koji mi je nastavnik dao.
Evo teksta : (na makedonskom je, i ako neko ne razume mogu da prevedem)

http://groups.yahoo.com/group/ymoi/files/Zadaci/Helix.doc

Molim vas ako mozete da mi pomognete sto pre......... :(
IZMENA: Molim vas, resenje mi je potrebno vrlo hitno (po mogucnosti vec do sutra)
Probo sam da resim zadatak sa pointeri ma, ali nista
Zadatak je dosta tezak i obeman (barem za mene)

Link ti neradi
 
Koliko sam skontao zadatak treba izracunati maksimalnu sumu po pravilo da pocnemo sa jednog kraja a kod presjecanja linija(spirala) mozemo krenuti bilo kojim putem. Veoma jednostavan zadatak. Ogranicenje od jesne sekunde treba samo prepasti jer ulaz moze sadrzavati maksimalno 20000 elemenata sta i nije mnogo. Resenje za sta dva kad uvatim vremena.

Pozz
 
Kod je stvarno neuredan ali nisam imao zivaca sredjivati, uprao sam
doznao da mi je drzavno takmicenje za vrijeme eskurzije.

Kompajlirao sam sa FreePascal-om
Kod:
program helix;
{$mode objfpc}
type
  TData = record
    IsHave1 : boolean;
    IsHave2 : boolean;
    Index1 : word;
    Index2 : word;
  end;  

var
  Presek : array[1..1000] of TData;
  Suma1, Suma2 : array[0..10000] of longint;
  i, Max, Max1, Max2, LastIndex1, LastIndex2 : integer;
  
procedure SaveData(FileName : string);
var
  fText : TextFile;
begin
  AssignFile(fText, FileName);
  Rewrite(fText);
  Writeln(fText, Max);
  CloseFile(fText);
end;  
  
  
procedure LoadData(FileName : string);
var
  fText : TextFile;
  TempInt : integer;
  i : integer;
begin
  Suma1[0] := 0; Suma2[0] := 0;
  AssignFile(fText, FileName);
  Reset(fText);
  i := 0;
  repeat
    Inc(i);
    Read(fText, TempInt);
    if TempInt > -1 then 
      with Presek[TempInt] do
        begin
          IsHave1 := true;
          Index1 := i;
          Suma1[i] := Suma1[i - 1] + TempInt;
        end;
  until TempInt = -1;
  Readln(fText);
  Max1 := i - 1;
  i := 0;
  repeat
    Inc(i);
    Read(fText, TempInt);
    if TempInt > -1 then 
      with Presek[TempInt] do
        begin
          IsHave2 := true;
          Index2 := i;
          Suma2[i] := Suma2[i - 1] + TempInt;
        end;
  until TempInt = -1; 
  Max2 := i - 1; 
end;

begin
  Max := 0; LastIndex1 := 0; LastIndex2 := 0;
  LoadData('helix.in');
  for i := 1 to 1000 do
    begin
      if (Presek[i].IsHave1) and (Presek[i].IsHave2) then
        if Suma1[Presek[i].Index1] - Suma1[LastIndex1] > Suma2[Presek[i].Index2] - Suma2[LastIndex2] then
          begin
            Max := Max + Suma1[Presek[i].Index1] - Suma1[LastIndex1];
            LastIndex1 := Presek[i].Index1; LastIndex2 := Presek[i].Index2;
          end
        else 
          begin
            Max := Max + Suma2[Presek[i].Index2] - Suma2[LastIndex2];
            LastIndex1 := Presek[i].Index1; LastIndex2 := Presek[i].Index2;
          end;  
    end;  
  if Suma1[Max1] - Suma1[LastIndex1] > Suma2[Max2] - Suma2[LastIndex2] then  
    Max := Max + Suma1[Max1] - Suma1[LastIndex1]
  else
    Max := Max + Suma2[Max2] - Suma2[LastIndex2];
  SaveData('helix.out');  
end.
 
Nemanja666:
Za ovaj zadatak drugi mogu ti samo reci BRUTALFORCE. Po liniji 6 prolaza sto nije puno i gotova stavar ako neznas kako javi pa cu uraditi, ali veceras

Ma mrzi me sad da se smaram, nemam nesto volje momentalno......
Ionako necu moci da postignem nesto mnogo na takmicenju (sve 4 godine rade iste zadatke, a meni je tek prva godina :cry: )

Probacu nekako da resim "peske" sa sve moguce kombinacije, ali ne verujem da cu uspeti :x
 
Angilia:
Mozeli neko da mi pomogne za program C++. Trebaju mi resenja ovih zadataka za 28.05. Unapred hvala!
1. Dat je realan niz A od n elemenata. Napisati program koji izracunava najmanji i najveci element
niza A.
2. Dat je realan niz A od n elemenata. Napisati program koji izracunava zbir pozitivnih i zbir
negativnih elemenata niza A.
Bio sam ubeđen da je naziv teme Pascal...
 
Nexilion:
A, samo se hvalite, ajde da vas vidim ovako. Ko izbaci preko 50kg na bendzu u teretani, najbolji je. Nisam siguran da ima takvih ovde (naravno osim mene koji cepam mnogo vise od toga :twisted: :twisted: :twisted: )
Pedeset kilograma koda u Pascalu? Kako si to uspeo da izmeriš? Odštampao na papiru?

Imam utisak da si promašio temu. Verovatno si hteo ovde da se hvališ tim benčom. :arrow: http://forum.krstarica.com/threads/79646
 
u sunce ti al bi tu bilo koda...
hm. na stranu staje 40 linija. aj sad da vidimo, zavisno od tezine lista 50kg = 50000g

ajd sad
Kod:
program lishtje;
var
  tezinalista:integer;
  brojlistova:integer;
  brojlinijakoda:integer;
begin
  write('tezina lista: '); readln(tezinalista);
  brojlistova:=round(50000 / tezinalista);
  linijakoda:=brojlistova*40;
  writeln('na 50 kila listova ove tezine staje ',linijakoda,' linija koda');
end.
iz nekog razloga cudno radi...za 10g izbacuje 3392 a za 5g 6784. malo...trebalo bi 20000 i 40000

rha. sto?
 

Back
Top