Novo

Forum kao aplikacija na telefonu

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

  • 5 odgovora
  • 2.382 pregleda

Najnovija ↓

Zadatak u Pascalu - Problem :(( 26.03.2007. u 00:06 · pre 238 meseci
izmenjeno 1 put, poslednji put X Files 26.03.2007. u 11:45
  1. X Files26.03.2007. u 11:45zapis iz teksta poruke
#1
Pozdrav,

Treba za sredu da uradim program u pascal-u, koji bi radio sledece:

Napisati program koji od datog niza x[ i ]=1,2,3,...n čiji su elementi realni brojevi, formira drugi niz y[ i ]=1,2,3,...k koji se sastoji od k najvećih elemenata nuya x[ i ], pri čemu je broj elemenata k niya y[ i ], manji ili jednak od broja elemenata n niza x[ i ] (k<=n). Napomena: Ne traži se da elementi niza y[ i ] budu uredjeni bilo u rastucem ili opadajucem poretku.

Objasnjenje: Odmah se uocava da k ne sme biti vece od n, jer u tom slucaju zadatak je ne korektan. Ukoliko je k=n zadatak je resen prepisom istih elemenata niza x, a preostali elementi niza x, od k+1 do n prvo se postavljaju da su po jedan minimalni, a zatim se ispituje da li to jesu ili nisu u nizu y. Ako je y[ j ] < min tada dolazi do promene mesta gde se na mesto u nizu y postavlja naravno veci element niza x. To se ponavlja sve do n-tog elementa niza x.

E sad, zadnjih 7 sati se mucim sa ovim problemom i ovo je kod koji sam uradio:


Code:

Program knajvecih;
var
  x,y:array[1..10] of real;
  i,j,k,n:1..100;
  min:integer;

begin
  writeln('Koliko elemenata N, treba da ima niz X?');
  readln(n);
  for i:=1 to n do
    begin
      write('Unesite x[', i, ']=');
      read(x[i]);
    end;
  writeln('Koliko elemenata K, treba da ima niz Y?');
  readln(k);
  if k > n
    then writeln('K mora biti <= N')
    else
      begin
        for i:=1 to k do
          y[i]:=x[i];
      end;
      writeln('Trazeni niz je: ');
        if k = n
          then for i:=1 to k do
            {write(y[i]:8:2)}
          else
            begin
              min:=0;
              for i:=k+1 to n do
              begin
               min:=min+1;

                 if x[i]>y[min]
                 then
                     y[min+1]:= y[min];
                     y[min]:=x[i];



              end;
      end;
  for i:=1 to k do
    write(' ', y[i]:8:2);
end.


Rezultal ovog programa su totalno neke besmislice .... Tako da bih stvarno bio veoma zahvalan, ako bi mi neko bar malo pomogao oko resavanja ovog problema, jer mi je hitno potreban ( do srede moram da ga imam uradjenog .... )

Hvala unapred !!!
Re: Zadatak u Pascalu - Problem :(( 26.03.2007. u 13:47 · pre 238 meseci #2
uh ...

Probao sam da raspetljam ovaj tvoj kod ali sam odustao vrlo brzo ...

Evo ti pseudo kod pa probaj da implementiras

Code:

 var min,max, totmax;
 
 min = x[1]; //trazimo minimalni element X i pretpostavljamo da je prvi 
 totmax = x[1]+1; //trazimo vrednost vecu od maksimalnog elementa X i polazimo od prve

 for i:=2 to N do{
  if min<x[i] then
   min = x[i];
  if totmax<=x[i] then
   totmax = x[i] +1;
 }
 
 for i:=1 to K do {
   max = min;  //postavljamo trenutni maksimalni na minimalnu vrednost...
   for o:=1 to n do {
     if (x[o]>max) and (x[o]<totmax){  //uzimamo element veci od trenutnog ali manji od totalnog maksimuma
       max = x[o];  
     }   
   }
   // sada nam max ima najveci element u X koji je manji od totmax

   y[i] = max; // dodajemo "trenutno najveci" u izlazni niz ...
   totmax = max; //spustamo granicu tako da sledeci trazeni bude nizi od ovog sto smo nasli ...
   
 }



Koliko mi se cini, "nus produkt" ovog nacina je da je Y sortiran po opadajucim vrednostima ... :)
Re: Zadatak u Pascalu - Problem :(( 26.03.2007. u 15:24 · pre 238 meseci #3
> Rezultal ovog programa su totalno neke besmislice .... Tako da bih stvarno bio veoma
> zahvalan, ako bi mi neko bar malo pomogao oko resavanja ovog problema,

Prvo sortiraj niz (verovatno ste već radili u školi sortiranje, ili potraži algoritme na netu) i onda iz tog niza uzmi potreban broj stavki.

Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Zadatak u Pascalu - Problem :(( 26.03.2007. u 20:14 · pre 238 meseci #4
@vlaiv - Hvala brate na tom novom kodu, al sam vec uspeo da sredim ovaj stari :))

@savkic - To mi je prvo palo na pamet, al u zadatku je stojalo - Napisati program koji od datog niza x[ i ]=1,2,3,...n čiji su elementi realni brojevi, formira drugi niz y[ i ]=1,2,3,...k koji se sastoji od k najvećih elemenata nuya x[ i ], pri čemu je broj elemenata k niya y[ i ], manji ili jednak od broja elemenata n niza x[ i ] (k<=n). Napomena: Ne traži se da elementi niza y[ i ] budu uredjeni bilo u rastucem ili opadajucem poretku.

Tako da nisam mogao na taj nacin da uradim ( da sortiram niz ) :((



Evo kako sam odradio ( mozda nekome zatreba :P )

Code:
Program knajvecih;
var
  x,y:array[1..10] of real;
  i,j,k,n,p:1..100;
  min,imin:real;

begin
  writeln('Koliko elemenata N, treba da ima niz X?');
  readln(n);
  for i:=1 to n do
    begin
      write('Unesite x[', i, ']=');
      read(x[i]);
    end;
  writeln('Koliko elemenata K, treba da ima niz Y?');
  readln(k);
  if k > n
    then writeln('K mora biti <= N')
    else
      begin
        for i:=1 to k do
          y[i]:=x[i];
        writeln('Trazeni niz je: ');
        if k=n
          then for i:=1 to k do

              {writeln('Posto je k=n, jednostavno cemo samo iskopirati niz y');}
              write(y[i]:8:2)

           else
            begin
             for i:=k+1 to n do
               begin
                 min:=x[i];
                   for j:=1 to k do
                     begin
                       if y[j]<min
                         then
                           begin
                             imin:=y[j];
                             y[j]:=min;
                             min:=imin;
                           end;
                     end;
               end;
            end;
      end;

 for i:=1 to k do
   write(y[i]:8:2);

end.



U svakom slucaju, hvala puno na pomoci :)))
Re: Zadatak u Pascalu - Problem :(( 26.03.2007. u 21:26 · pre 238 meseci #5
> @savkic - To mi je prvo palo na pamet, al u zadatku je stojalo -
> elemenata n niza x[ i ] (k<=n). Napomena: Ne traži se da elementi niza y[ i ] budu uredjeni bilo u rastucem ili opadajucem poretku.
> Tako da nisam mogao na taj nacin da uradim ( da sortiram niz ) :((

Kako ga ja tumačim, nije zabranjeno da se sortira, može a i ne mora.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Zadatak u Pascalu - Problem :(( 27.03.2007. u 23:24 · pre 238 meseci #6
Da, da, u pravu si. Ja sam pogresno protumacio ... Al jbg, svejedno sam ga nekako uradio... Ako vec ne mora da se sortira, .... :))
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme