
Gandalf-biały [ Mithrandir ]
Zadanie w Pascalu . Moze ktos wie jak mam to zrobic ?
mam zadanie z informatyki i liczylem na to ze ktos odemnie z grupy to zrobi a tu sie okazuje ze nikt nie wie jak :(
za 3 godz. zaczynam infe wiec jesli komus sie uda zrobic to zadanie to bede wdzieczny :)
Zad.
Wprowadzic 10 liczb do tablicy. Znalezienie i wypisanie dwóch najwiekszych liczb tej tablicy.
dzieki
august_ [ Legionista ]
szkoda, ze nie powiedziales wczesniej, bo chetnie bym ci pomogl, ale musze wyjsc niestety.
sprawa polega na tym, ze po wpisaniu liczb do tablicy musisz zrobic cos takiego:
program costam;
a,b,i : integer;
uses Crt;
begin
// tu trzeba wpisac liczby do tablicy, ale chyba to umiesz nie?
a := array[0];
for i:=0 to 9 do
if array > a then a :=array;
// a potem mozna zrobic druga petle, ale wykluczajac juz pierwsza liczbe
b:=array[0];
for i:=0 to 9 do
begin
if b:=a then
begin
end;
else
begin
if array > b then b :=array;
end;
end.
..no cos takiego. Pisalem na sucho, wiec bledy napewno sa jakies. ale mam nadzieje ze Ci to pomoze.
pozdro!
august_ [ Legionista ]
tam powinno byc oczywiscie:
if array > a then a :=array;
august_ [ Legionista ]
hahahaha.... myslalem, ze nie napisalem i, a potraktowalo to jako kursywe!!! ehhh
if array[i] > a then a :=array[i];
if array[j] > a then a :=array[j]; /gdzie j to i :) ...ale zamieszalem....
kastore [ Troll Slayer ]
uses Crt;
var tab : array[1..10] of Integer;
max1, max2, oldmax : Integer;
i : Integer;
begin
for i:=1 to 10 do begin
Write('Podaj liczbe');ReadLn(tab[ i ]);
end;
max1:=-10000;
max2:=-10000;
for i:=1 to 10 do begin
if tab[ i ]>max2 then begin
max2:=tab[ i ];
end;
if max2>max1 then begin
oldmax:=max1;
max1:=max2;
max2:=oldmax;
end;
end;
WriteLn('Pierwsza najwieksza niczba ',max1);
WriteLn('Druga najwieksza niczba ',max1);
Write('Naciśnij coś aby zakonczyc',max1);ReadLn;
end;
kastore [ Troll Slayer ]
I jak tam?? dobrze było??
august_ [ Legionista ]
wydaje mi sie, ze twoja metoda jest lepsza, powinna dzialac dobrze, ale nie mozna sobie zalozyc, ze max=-10000, a co jesli w tablicy beda element ponizej -10000. wystarczyloby wpisac do max1 i max2 wartosci tab[1].
kastore [ Troll Slayer ]
No w sumie można, normalnie w Delfi używam funkcji Max() albo Min() do określania progów, ale nie pamietałem czy w czystym Pascalu to jest.
Kiss [ Konsul ]
Czy ktos pomoze przerobic ten program na procedury? Chodzi o uzycie duzej ilosci procedur zamiast zwyklego kodu.
procedure CzekajNaEnter;
begin
writeln('Nacisnij [ENTER] aby kontynuowac');
readln;
end;
const
rozmiar=15;
type
TypElem=integer;
TypTab=array[1..rozmiar] of TypElem;
var
tab:TypTab;
i,n:integer;
indMin:integer;
pom:TypElem;
begin
writeln('Sortowanie przez wybor');
writeln('Wprowadz liczby do tablicy 1..', rozmiar);
for i:=1 to rozmiar do
begin
write('Element', i, ':');
readln(tab);
end;
writeln('Wprowadziles nastepujace liczby do tablicy');
for i:=1 to rozmiar do
begin
write(tab, ',');
end;
writeln;
CzekajNaEnter;
writeln('Sortuje');
for i:=1 to rozmiar do przejdz przez kolejne pozycje tablicy
begin dla kazdej i-tej pozycji
indMin:=i; znajdz indeks najmniejszego element w tablicy od i..rozmiar
for n:=i+1 to rozmiar do
begin
if tab[n]<tab[indMin] then
indMin:=n;
end;
pom:=tab; zamien ze soba miejscami zelement najmniejszy i i-ty
tab:=tab[indMin];
tab[indMin]:=pom;
end;
writeln('Tablica po posortowaniu');
for i:=1 to rozmiar do
begin
write(tab, ',');
end;
writeln;
CzekajNaEnter;
end.

captain_nemo [ Generaďż˝ ]
jedna mala uwaga : jezeli w programie odwolujesz sie do jakiejs tablicy (np zmienna tab:typtab jest z array-a typtab) to musisz odwolywac sie do jakiegos elementu tablicy np tab[1] (pierwsz element) lub tab -i-ty elementchyba ze dajesz to w procedurze lub funkcji....
ja to wszystko bym napisal tak:
program Kiss;
uses crt;
const
n=15;
type
tablica=array[1..n] of integer;
var
x:tablica; deklaracja zmiennych globalnych,
tych staraj sie deklarowac jak najmniej
procedure enter;
begin
writeln('Nacisnij Enter');
readln;
end;
procedure wypelnij(var x:tablica);
var
i:integer; deklaracja zmiennych lokalnych
begin
for i:=1 to n do
begin
Writeln('Podaj ',i,'-y element tablicy bedacy liczba calkowita');
readln(x);
end;
end;
procedure wyswietl(x:tablica);
var
i:integer ;
begin
for i:=1 to n do
writeln(i,'-y element tablicy rowna sie : ',x);
writeln(' ');
end;
procedure sortuj(var x:tablica); sortowanie bombelkowe :)
var
i,j:integer; pom:integer;
begin
for i:=1 to n do
for j:=1 to n do
begin
if x > x[j] then
begin
pom:=x[j];
x[j]:=x;
x:=pom;
end;
end;
end;
begin
clrscr;
enter;
wypelnij(x);
writeln('Tablica w chwili obecnej wyglada nastepujaco');
writeln(' ');
wyswietl(x);
sortuj(x);
enter;
writeln('Tablica po sortowaniu wyglada tak');
writeln(' ');
wyswietl(x);
readln
end.
sorki ze te writeln-y sa w programie ale juz mi sie nie chcialo robic tego w procedurach :)
captain_nemo [ Generaďż˝ ]
hmmm dziwne ale gol nie daje mi napisac x [ i ] (bez spacji) dlatego tam wszedzie gdzie masz w procedurach x dodaj jeszcze x [ i ]
.Jacek 99. [ Senator ]
Jak juz napisal august_ , GOL traktuje [,i] (bez przecinka:) ) jako znacznik dla kursywy:)
Apropo Pascala mialem dzis kolokwium z niego. Na kartce papieru. bez dostepu do kompa:)
Ogolnie mowiac robilismy za kompilator:)
captain_nemo [ Generaďż˝ ]
ja tez mialem dzis kolosa z Podstaw Programowania, ale mial on troche innych charakter. Zadania glownie opieraly sie na ocenie, poprawie, dopisaniu czegos do istniejacych programow :)

Esqualante [ Jyhad Baghadyr ]
Apropo kolokwium -> Jutro mam koło z asemblera, tez na kartkach ;]
captain_nemo [ Generaďż˝ ]
jezyki niskopoziomowe... dopiero za 2 semestry zaczne zabawe z asemblerem :)
czapi [ Pretorianin ]
Jak przy kolosach jestesmy to ja mam pojutrze z matlaba...ale naszczescie na kompach :P

ronn [ moralizator ]
To norma, ze na studiach pisze sie programy na kartkach. Tez tak mam, kolosy do teorii, laborki i projekty do praktyki.