| | |
Autor | Správa |
---|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 |
Caute,
potrebujem prosim pomoc,ak mam napr. pole,ktore obsahuje sto prvkov-cisel,
tak ako mam zapisat vstup ?
napr.:
var p:array[1..100]; Musim to pisat takto ? readln(p[1],p[2],p[3]...atd ) ?
Potrebujem nejaky jednoduchsi sposob,aby som sa tolko neopisal.
A este by som chcel potom robit sucet tych prvkov,a tiez to nechcem vypisovat takto: sucet:=p[1] + p[2] + p[3]...atd;
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 |
Na toto sa pouzivaju cykly. Takze deklarujes si nejaku premennu I:integer;, takisto sucet: integer a
Kód: for I:=1 to 100 do begin readln(p[i]); sucet:=sucet+p[i]; end;
Tento cyklus ti vykona, ze premenna I nabera postupne hodnoty od 1 do 100, postupne sa citaju z klavesnice jednotlive prvky pola a pricituju sa k premennej sucet...
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 02.10.2008 20:41 | |
|
jaaj,dikees...ze ma to nenapadlo ...ale som este zaciatocnik no
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 |
Nie je zac, v pohode, postupne sa naucis.
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 02.10.2008 21:39 | |
|
este ta chcem o nieco poprosit,preco tu podmienku pre cyklus nemozem zapisat takto: for i:= 1 to p do...
ale musi to byt len takto:
Kód: program nic; {sucet a priemer prvkov pola} uses crt; var p:array [1..5] of integer; i,sucet,priemer:integer; begin clrscr; writeln('Zadajte 5 lubovolnych celych cisel');
[b]for i:= 1 to 5 do[/b] begin readln(p[i]); sucet:=sucet+p[i]; priemer:=sucet div i; end;
Writeln('Sucet cisel je ',sucet); Writeln('Priemer cisel je ',priemer);
readkey; end.
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 |
Pretoze p je pole, je to nejaky blok pamati, v ktorom je viacero ciselnych hodnot. Ty tam potrebujes len jednu ciselnu hodnotu, ktora urci, kolkokrat sa cyklus zopakuje. Robi sa to vacsinou takto
Kód: program nic; {sucet a priemer prvkov pola} uses crt;
const ROZSAH_POLA = 5;
var p:array [1..ROZSAH_POLA] of integer; i,sucet,priemer:integer; begin clrscr; writeln('Zadajte 5 lubovolnych celych cisel');
for i:= 1 to ROZSAH_POLA do begin readln(p[i]); sucet:=sucet+p[i]; priemer:=sucet div i; end;
Writeln('Sucet cisel je ',sucet); Writeln('Priemer cisel je ',priemer);
readkey; end.
Takze namiesto cisla 5 budes pouzivat konstantu ROZSAH_POLA, pricom ak by si sa neskor rozhodol, ze pole p bude mat viac prvkov, tak to staci na zaciatku prepisat na napr. ROZSAH_POLA=10; a nemusis vsetky cisla 5 hladat a prepisovat na 10. Zide sa ti to pri dlhsich programoch.
//To, co si asi ty presne chcel, je dynamicke pole, ale s tym sa este stretnes neskor.
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 02.10.2008 21:51 | |
|
no opat dakujem !
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | Napísal juho: 03.10.2008 10:28 | |
|
alebo mozes pouzit Kód: for i:=low(p) to high(p)
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 03.10.2008 20:31 | |
|
nepoznate nejaky web zkadial by sa dal kvalitne naucit pascal,aby tam boli aj nejake cvicenia a tak.
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 |
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 04.10.2008 13:49 | |
|
Skusal som vytvorit program,ktory vypise prvky pola od najmensieho po najvacsie,nieco som vytvoril,tak to prosim skontrolujte ci to tak moze byt,ale neviem ako ten konecny vysledok vypisat na obrazovku,je to ciselne pole a prvky pola zadavajte zostupne napr. 5 4 3 2 1
popripade to celkovo upravte,ukazte prosim aj vase riesenia
Kód: program nic; uses crt; const dlzka_pola=5; var pole:array [1..dlzka_pola] of integer; i,j,k,pom:integer; begin clrscr;
writeln('Zadaj hodnoty pola'); for i:=1 to dlzka_pola do readln(pole[i]);
for j:= 1 to (dlzka_pola-1) do begin for k:=1 to (dlzka_pola-1) do begin if pole[i] > pole[i+1] then pom:=pole[i]; pole[i]:=pole[i+1]; pole[i+1]:=pom; end; end;
readkey; end.
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 |
Cele pole potom vypises tak isto ako si ho nacital, lenze namiesto funkcie readln pouzijes writeln, cize
Kód: for i:=1 to dlzka_pola do writeln(pole[i]); To usporiadanie nefunguje celkom spravne, pouzi algoritmus BubbleSort (je sice pomaly, ale na zaciatok s nim mozes pracovat) Kód: program nic; uses crt; const dlzka_pola=5;
var pole:array [1..dlzka_pola] of integer; i, j, pom:integer; begin crlscr;
writeln('Zadaj hodnoty pola'); for i:=1 to dlzka_pola do readln(pole[i]);
for j:=1 to dlzka_pola do for i:=j+1 to dlzka_pola-1 do begin if pole[i] > pole[j] then begin pom:=pole[i]; pole[i]:=pole[j]; pole[j]:=pom; end; end;
for i:=1 to dlzka_pola do writeln(pole[i]);
readkey; end.
Ak by si to chcel usporiadat vzostupne, tak staci zmenit znamienko '>' na '<'.
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 04.10.2008 18:24 | |
|
A aky je ten dalsi algoritmus,ktory ma byt rychlejsi ?Ved to co som urobil ja je tiez Bubblesort algoritmus nie ?
A cisla do pola musim zadavat zostupne ked chcem aby to spravne fungovalo,vsak ?
Ten tvoj programik nefunguje spravne
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 |
Trochu som sa zmylil, takto je to spravne. Kód: program nic; uses crt; const dlzka_pola=5;
var pole:array [1..dlzka_pola] of integer; i, j, pom:integer; begin crlscr;
writeln('Zadaj hodnoty pola'); for i:=1 to dlzka_pola do readln(pole[i]);
for j:=1 to dlzka_pola-1 do for i:=j+1 to dlzka_pola do begin if pole[i] > pole[j] then begin pom:=pole[i]; pole[i]:=pole[j]; pole[j]:=pom; end; end;
for i:=1 to dlzka_pola do writeln(pole[i]);
readkey; end.
V tom tvojom BubbleSort nebol, ale trochu sa to podobalo. Ale ked pracujes sa takymto malym polom, nevsimnes si ziadne spomalenie, takze ho mozes pouzivat. Rychlejsi moze byt napr. QuickSort.
Hodnoty mozes zadavat ako chces, vzdy ti ich usporiada zostupne, napr. zadas 9 3 7 10 2 a vypise ti 10 9 7 3 2.
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 04.10.2008 20:22 | |
|
pocuj...ako to vlastne funguje ? j=1 a cisla sa premiesaju 4x,potom j=2 a cisla sa premiesaju 3x,dalej j=3 a cisla sa premiesaju 2x a nakoniec j=4 a cisla sa premiesaju este raz ?
A ako to,ze mozes tolkokrat pouzivat riadiacu premennu i ?
vysvetli mi pls
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 |
j:=1, i: =j+1, (cize i=2). Ak je pole[2]>pole[1], tak sa ich hodnoty vymenia. Potom sa i zvacsi a zase, ak je pole[3]>pole[1], tak sa hodnoty vymenia. Takto to pokracuje, cize prvok s najvacsou hodnotou sa dostane na prve miesto. Potom sa zvacsi zase j, cize ma hodnotu 2. i je j+2, teda 3, ak pole[3]>pole[2], tak sa zase vymenia.Takze druhy najvacsi prvok sa dostane na druhe miesto (alebo vlastne najvacsi prvok okrem prveho). Kazdy prvok sa porovna s kazdym, cize sa hodnoty "prebublinkuju", preto ten nazov BubbleSort.
A i mozes pouzit kludne aj viackrat, najprv bola riadiaca premenna prveho cyklu, potom druheho...
Ak bude nieco nejasne, kludne sa pytaj.
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 04.10.2008 23:10 | |
|
dakujem,tie cykly som uz pochopil,ale nerozumiem este tomu zaveru ked vypisujem to pole prvkov s opacnym poradim,lebo prva riadiaca premenna i sluzi na nacitanie prvkov,a potom ked ju pouzijem znova tak sa tie prvky ulozia do nejakej pamate a mozem ju tympadom pouzit na ine veci ?
A ako to,ze sa to da potom vypisat cez premennu i,ved ked sa pouzivala v predchadzajucom cykle tak je v nej zapisana len posledna hodnota,neviem ako to mam povedat,skus mi to este nejak ozrejmit,ten konecny vypis.
ako ako dlho sa venujes pascalu? programujes este v niecom ?
kolko mas rokov ?
A to BubbleSort je trochu pozmene v tom nasom priklade,to si prisiel sam na to ?Ja by som na ten algoritmus asi neprisiel nikdy
|
|
Registrovaný: 16.02.08 Prihlásený: 08.12.10 Príspevky: 235 Témy: 13 | Napísal ado21: 05.10.2008 10:42 | |
|
i je premena, ale riadiaca sa tomu hovori. Teda nemal by si jej hodnoty menit ty, ale bude si menit hodnotu sama (resp. to bude robit cyklus for).
Teda vzdy v cykle bude bude mat nejaku konkretnu hodnotu. Teda vzdy v cykle bude nejaka konkretna hodnota a konkretnu hodnotu predsa mozes pouzit na co chces a kolko raz chces
Ako buble shot je easy.... Vymyslel som ho za 15 minut. Teda prisiel nanho. Ale vymysliet quicksort alebo mergesort a dokazat, ze fakt je rychlejsi, by mi trebalo hodne casu
_________________ Učet je neaktívny. |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 05.10.2008 10:57 | |
|
no tomuto cyklu rozumiem uz dobre,ale ten vypis mi nie je aj tak jasny,lebo pocas cyklu premenna i nadobuda stale len jednu hodnotu nie ? A potom ked to dam vypisat tak akoto ze mi vypise cele pole,zkadial berie tie ostatne hodnoty ?
|
|
Registrovaný: 16.02.08 Prihlásený: 08.12.10 Príspevky: 235 Témy: 13 | Napísal ado21: 05.10.2008 11:15 | |
|
po ukonceny cyklu ostane premennej i hodnota 5.
potom v dalsiom cykle (vypis) bude znova nadobudat hodnoty od 1 do 5.
ako by si dal i:=5;
a niekde inde by si dal i:=7;
_________________ Učet je neaktívny. |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 05.10.2008 11:30 | |
|
no ano,po ukonceni cyklu ma premenna i hodnotu 5,a potom ked spustam dalsi cyklus pre vypis tak premenna i na dobuda hodnoty od 1 po dlzka_pola-cize po 5,tak ako je mozne ze to vypise takto: 5,4,3,2,1 a nie opacne .Ved ked tam je od 1 po dlzka_pola tak by to malo vypisat takto:1,2,3,4,5 nie ?
|
|
Registrovaný: 16.02.08 Prihlásený: 08.12.10 Príspevky: 235 Témy: 13 | Napísal ado21: 05.10.2008 12:04 | |
|
i je index prvku pola. Teda sa vypisuje hodnota, ako na tom prvku je...
To pole sa usporiada opacne, tak ho vypise od najvacsieho mo najmensi
ono nevypisuje i-cko, ale hodnotu na i-tom prvku pola.
daj si trochu pauzu
_________________ Učet je neaktívny. |
|
Registrovaný: 04.08.08 Prihlásený: 28.10.11 Príspevky: 152 Témy: 42 | Napísal autor témy beginner: 05.10.2008 12:09 | |
|
ahaa,boze...konecne mi to doslo,aspon dufam ze uz tomu rozumiem ! fakt diky,za strpenie
|
|
Registrovaný: 13.01.09 Prihlásený: 13.01.09 Príspevky: 4 Témy: 0 | Napísal Habo: 13.01.2009 21:40 | |
|
Najrychlejsi sort ktory spotrebuje najviac pamate (aky paradox vsak...) a je jednoduchy je toto (meno som zabudol):
var pompole :array[dole..hore] of integer; prip word, byte
...
{nacistas pole do prem. pole a nastavis vsetky prvky pompole na nulu- pisem len "jadro"}
for i:=1 to max do pompole[pole[i]]:=pompole[pole[i]]+1; //skratene inc(pompole[pole[i]])
//a potom
pomocna:=1;
for i:=dole to hore do
for j:=1 to pompole[i] do
begin
pole[pomocna]:=i;
inc(pomocna);
end;
to by malo byt setko a ake jednoduche vsak?
ak niecomu nerozumies napis mi tiez sa vyznam v pascale ale radsej pouzivam delphi to je vlastne pascal ale vylepseny v nom sa daju robit aj okna tlacitka a to iba dvomi kliknutiami
|
|
Registrovaný: 13.04.07 Prihlásený: 15.05.09 Príspevky: 68 Témy: 9 |
habo: priznam sa ze vobec neviem co si tam napisal ale celkom ma zaujima aky je najrychlesi triediaci algoritmus tak ak by si mohol tak hod sem cely kod alebo napis ako sa to vola ale co by bolo naj napis v slovenskom jazyku princip toho triedenia..
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 |
Fakt ani ja neviem, ako to myslel...
Inak najrychlejsi je asi quicksort (aspon patri k najrychlejsim)
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
Registrovaný: 13.04.07 Prihlásený: 15.05.09 Príspevky: 68 Témy: 9 |
tak k najrychlesim patri aj heapsort.. ja som prave preto zvedavy ze ktory je najrychlejsi lebo nas ucili ze v roznych pripadoch moze byt lepsie pouzit rozne triedenia
|
|
Registrovaný: 16.02.08 Prihlásený: 08.12.10 Príspevky: 235 Témy: 13 | Napísal ado21: 17.01.2009 14:07 | |
|
najrychlejsie triedenie zavisi od problemu, dokonca obcas aj od typu procesora...
_________________ Učet je neaktívny. |
|
Registrovaný: 31.08.07 Prihlásený: 27.03.15 Príspevky: 1800 Témy: 153 Bydlisko: Komárno |
no ja potebujem v takom pomoc že mam desiatkove pole ciže ma desat nahodne vyeevanych cisel a spravvil som aby mi to naslo najmensie cislo z toho a najvacsie no a potrebujem aby najmensie cislo dalo na zaciatok a najvacsie zas nakoniec tie cisla ktore boli v pozicii pole[1] a pole [10] yas yiskaju miesto tzch cmin a max cisla priklad
povodne 3-1-8-9-4
potrebujem 1-3-8-4-9
mam ciastocne riesenie nejak takto
povodne 3-1-8-9-4
zmenene 1-1-8-9-9
viete pomocť
to zoradenie sa podarilo spraviť aj od najvaciseho aj od najmensieho
p.s dufam chapete moj problem
_________________ Nehľadaj štastie vonku, ale v sebe, lebo inak ho nikdy nenajdeš. Nechajte mi právo na vlastné omyly, na možnosť zvoliť si čo mám rád, chcem ísť vlastnou cestou, nie tou vami vyšliapanou, na ktorej by som stratil vlastnú tvar. (Metallica) Všetko má svoju krásu, ale nie každý ju vidí. život je krásny, len sa ho nesmieš báť, dnes plačeš, zajtra sa budeš smiať. Učíme sa aby sme veciam rozumeli a mohli ich milovať |
|
Registrovaný: 19.09.06 Prihlásený: 21.04.24 Príspevky: 749 Témy: 31 Bydlisko: Ružomberok&... |
no ja neviem, ale aby si nadśiel minimum v nezoradenom poli ho podla mna musis prejst cele, a v tomto pripade si este aj pametat index minima, ktore si nasiel a na konci ho vymenit s prvkom na prvom mieste a takisto s maximom.
|
|
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| pascal - pole v Assembler, C, C++, Pascal, Java | 8 | 800 | 15.08.2009 9:44 beginner | | pascal pole - do utriedenej postupnosti vlozte x v Assembler, C, C++, Pascal, Java | 1 | 353 | 06.02.2011 17:06 juho | | pascal pomoc v Assembler, C, C++, Pascal, Java | 7 | 689 | 31.08.2009 14:04 juho | | Pascal pomoc v Assembler, C, C++, Pascal, Java | 2 | 842 | 14.12.2008 11:11 noff | | pascal pomoc v Assembler, C, C++, Pascal, Java | 0 | 923 | 12.06.2007 13:07 gorky22 | | Pascal pomoc so zdrojakom v Assembler, C, C++, Pascal, Java | 5 | 667 | 16.12.2008 10:24 noff | | Prosim o pomoc v PASCAL-e v Assembler, C, C++, Pascal, Java | 5 | 1004 | 13.05.2007 22:31 audiotrack | | Pascal podmienka ak lezi v poli... pomoc v Assembler, C, C++, Pascal, Java | 2 | 379 | 11.12.2011 13:42 Blackhair | | Free Pascal a Turbo Pascal v Assembler, C, C++, Pascal, Java | 0 | 385 | 19.12.2014 13:18 Styracoz | | POLE v Assembler, C, C++, Pascal, Java | 10 | 1502 | 18.11.2006 10:07 audiotrack | | raid pole v Pevné disky a radiče | 23 | 2408 | 09.07.2008 1:15 Pegas099 | | Pole stringov v Assembler, C, C++, Pascal, Java | 2 | 644 | 15.11.2012 21:14 Denco1 | | Viacrozmerne pole v PHP, ASP | 3 | 573 | 07.12.2010 16:41 venom2 | | Dvojrozmerne pole v Delphi, Visual Basic | 2 | 735 | 22.01.2013 22:50 Gregi555 | | elmag. pole v Ostatné | 3 | 275 | 16.09.2014 14:47 logarytmus | | Schovaj pole v JavaScript, VBScript, Ajax | 2 | 283 | 05.02.2013 20:32 Ďuri |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|