potrebujem tri priklady+vyvojovy diagram v pascale surne pls

Programovacie jazyky, rady, poradňa...
martin_9941
Novice
Novice
Príspevky: 3
Registrovaný: 03 apr 2011, 10:02

potrebujem tri priklady+vyvojovy diagram v pascale surne pls

Príspevok od používateľa martin_9941 »

zdravim potrebuje tri priklady na zadania + vyvojovy diagram :
1) Vytvorte dve zadania k vytvoreniu programov v jazyku Pascal na Vami zvolenú problematiku. Minimálne jeden príklad bude obsahovať kontrolu zadaných údajov a jeden príklad bude riešiť prácu s poľom. K zadaniu vytvorte aj správne riešenie.
2) Úloha: Z konštantného poľa načítajte N celých čísel . Zostavte program, ktorý určí a vytlačí prvé dve najväčšie čísla a ich umiestnenie.
3) Príklad zakreslite pomocou vývojového diagramu.

1) neviem ci to mam dobre poradte my pls:

Kód: Vybrať všetko

program PostupnostCisel;
uses crt;
var
  Pole : Array [0..10000] of integer;
  number : integer;
  index : integer;
  max_number : integer;
  min_number : integer;
  
begin
 clrscr;
 index := 0;
 
 writeln('Urci najmensie, najvacsie cislo zo zadanej postupnosti (0-koniec).');
 writeln('------------------------------------------------------------------');
 
 Repeat
  write('Zadaj cislo: ');
  readln(number);
  Pole[index] := number;
  index := index + 1;
 Until number = 0;
 
 index := 0;
 max_number := Pole[index];
 
 Repeat
  IF Pole[index] > max_number THEN
      begin
        max_number := Pole[index];
      end;
  index := index + 1;
 Until Pole[index] = 0;
 
 writeln('Najvacsie cislo je : ',max_number);
 index := 0;
 min_number := Pole[index];
 
 Repeat
  IF Pole[index] < min_number THEN
      begin
        min_number := Pole[index];
      end;
  index := index + 1;
 Until Pole[index] = 0;
 
 writeln('Najmensie cislo je : ',min_number);
 readln;
end.
2) tu potrebujem umiestnenia a zeby my vytlacilo 2 najvecsie cisla

Kód: Vybrať všetko

program cele_cisla;
var a,b:integer;
    i:integer;
 
begin
  WriteLn('Vypisem vsetky cele cisla od a po b.');
  Write('Zadaj cele cislo a=');
  ReadLn(a);
 
  Write('Zadaj cele cislo b=');
  ReadLn(b);
 
  WriteLn('Poradie celych cisel je:');
 
  if(a<b)then begin
    for i:=a to b do
       WriteLn(i);
  end
  else begin
    for i:=a downto b do
       WriteLn(i);
  end;
 
  WriteLn('Koniec');
  ReadLn;
end.
pls poradte niekto
vopred dakujem
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: potrebujem tri priklady + vyvojovy diagram v pascale surne

Príspevok od používateľa metthal »

Audiotrack tu asi neni, tak ti to postnem: http://www.hojko.com/citajte-pred-zaloz ... 23064.html
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: potrebujem tri priklady+vyvojovy diagram v pascale surne pls

Príspevok od používateľa audiotrack »

v prvom riešení:

táto podmienka ti môže robiť problém

Kód: Vybrať všetko

Until Pole[index] = 0;
pretože nulu z postupnosti do poľa už neukladáš ale pri nej ukončíš cyklus s načítavaní. Ani pole pri spustení programu neinicializuješ na nuly, takže sa môže stať že v poli nie je žiadna nula a tento cyklus teda neskončí (prebehne celým poľom a vyhodí chybu keď sa bude pokúšať pristúpiť na neexistujúci index). Nemal si po načítavani dať index znova na nulu, ale nechať si počel uložených čísel a potom prechádzať od tej hodnoty k nule (teda odzadu). Takže zmazať riadok index := 0; po načítaní poľa a potom v porovnávaní na max zmeniť index:=index+1 na index:=index-1; V tom istom cykle môžeš hľadať aj minimum, takto máš zbytočne opakovanie kodu a si nútený robiť zase tú chybu s nulovaním indexu. Obe čísla (max aj min) vypíšeš po skončení cyklu naraz. Keď to ale dáš oboje do toho jedného cyklu, nezabudni že index:=index-1 tam bude len raz (po druhej podmienke) a nie dvakrát

v druhom riešení:

stačí ti zamniť ten for i:=a to b (prípadne for i:=a downto b) za writeln(a-1);writeln(a-2); a ten writeln(i) zmazať. Musíš si ale uvedomiť že ak zadám a aj b rovnaké, nemôže vypísať dve najväčšie čísla medzi nimi. Prípadne ak bude a a b s rozostupom iba jedna. Ak si ale prečítaš zadanie, ty vôbec nemáš brať iba hraničné body a všetky čísla medzi nimi, ale celá postupnosť ti bude zadaná. Takže si musíš načítať pole rovnako ako v prvom príklade. Vlastne to bude iba modifikácia prvého príkladu, len namiesto min_number bude niečo ako max_number2 a trošku upravená nerovnosť

navyše ako ti wolf ukázal, že si sa dnes registroval a žiadaš o úlohu je maximálna drzosť. Takže väčšiu pomoc nečakaj, a s tým vývojákom sa môžeš rovno rozlúčiť. Jediné čo ťa zachránilo že vôbec reagujem je tá snaha že si dal aspoň nejaký zdroják (ktorý si ale možno ani nerobil ty)
Napísať odpoveď