| | |
| Stránka: 1 z 1
| [ Príspevkov: 17 ] | |
Autor | Správa |
---|
Registrovaný: 07.11.11 Prihlásený: 19.11.11 Príspevky: 15 Témy: 2 | Napísal Dejvid: 15.11.2011 12:23 | |
|
Zdravím machri
mal by som ešte jedno zadanie, s ktorým by som potreboval pomôcť. Je to posledné zadanie v tomto semestri, v letnom tento predmet už nemám, takže možno už posledné zadanie vôbec, tak dúfam, že spoločnými silami mi nejak pomôžete to naprogramovať
Termín je do budúcej stredy a znenie:
Zostavte program pre načítanie čísel, ak posledné číslo na vstupe je N. Čísla vytlačte v tabuľke v 2 stĺpcoch takto: kladné párne, kladné nepárne.
Zatiaľ sa len posnažím nejak opísať ako by som to asi riešil a mi povedzte, či na to idem dobre, a potom sa dám/dáme do zdrojového kódu.
Čiže ja by som na to šiel takto:
1. zadefinovať nejaké polia (array) čísel typu real
2. keďže výsledné čísla majú byť kladné (párne/nepárne) zadať podmienku x>0
3. zadať opakovanie, zadávania vstupných čísel až kým x=N
4. zadať podmienku, že x(MOD 2)=0 .. vtedy by bolo číslo pridelené do poľa "kladné párne", ak podmienka nevyhovuje, tak priradiť číslo do poľa "kladné nepárne"
5. writeln ('kladné párne | kladné nepárne')
writeln ('_______________________________________')
a nakoniec nejako pomocou príkazu for ... do writeln a vytlačiť položky jednotlivý polí pod seba do tých stĺpcov aby naoko sedeli pod slovami "kladné párne" a "kladné nepárne"
Čo vy na to?
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 15.11.2011 12:41 | |
|
Prečo typ real, keď má ísť o párne/nepárne čísla (a teda o celé čísla)?
|
|
Registrovaný: 07.11.11 Prihlásený: 19.11.11 Príspevky: 15 Témy: 2 | Napísal autor témy Dejvid: 15.11.2011 16:28 | |
|
aha, pardon ... tak pole bude typu integer ...
inak si myslíš, že metóda by mohla sedieť?
|
|
Registrovaný: 07.11.11 Prihlásený: 19.11.11 Príspevky: 15 Témy: 2 | Napísal autor témy Dejvid: 19.11.2011 14:59 | |
|
tak nejako som sa dostal až po tade, ale určite to mám zle a možno sú tam banálne hlúposti, ale bol by som rád a veľmi vďačný ak by ste s na to pozreli a skúsili mi pomôcť.
Nie som si istý tou prácou s poľami, tam to bude asi zle, ale prosím, skúste na to mrknúť.
Ďakujem
EDIT: tú chybu mi vypísalo v tom riadku ako mám if x(MOD 2)=0 a kurzor bliká hneď na začiatku pod i (ako if) ..
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal F3RY: 19.11.2011 15:14 | |
|
Najprv by ma zaujmalo, na aku skolu chodis, ak programujete v pascale pretoze, aj ja v nom programujem, ale ak chcem niekde ist, musim prejst na C.
k veci:
tvoj kod som iba prezrel a hned v nom vidim chybu, ktora do oci bije! Urcite ti tie cisla nevypisuje v tabulke co? Najjdednoduchsie by bolo spravit cez gotoxy. Ak budem mat cas skusim ti to napisat.
//edit:
mod nemas spravne napisany. Robi sa: cislo, ktore chces delit-mod-cislo, ktorym chces delit. V tvojom pripade to bude x mod 2
|
|
Registrovaný: 07.11.11 Prihlásený: 19.11.11 Príspevky: 15 Témy: 2 | Napísal autor témy Dejvid: 19.11.2011 15:36 | |
|
ja chodím na TU v Košiciach - FBERG - Priemyselná logistika, a tento predmet mám len teraz jeden semester, takže to berieme len z rýchlika a okrajovo.
a cením si tvoju snahu, ale neviem čo sú gotoxy a také niečo sme ani nebrali, takže keď odovzdám zadanie s tým gotoxom, tak profesorovi asi bude jasné, že som to robil inou formou.
Mňa zaujímalo ako to vytlačiť tie čísla do tabuľky hneď po zadaní zadania, tak som sa ho opýtal a naznačil mi túto metódu, že pomocou writeln mám spraviť takú provizórnu tabuľku. Takže estetické chyby, ak to nebude presne do tabuľky, nebudú vadiť, lenže mne to zatiaľ nebeží vôbec. Nechce mi skompilovať, bude niekde chyba v zdrojovm kóde :-/
A ja mám skôr podozrenie že som to spackal niekde v tých príkazoch ..
EDIT: takže ten mod nebude v zátvorke? // pridané po 5 minútach od posledného príspevkuveď tak to mám napísané x (mod 2), lenže ak chcem zistiť či sú párne, musím zadať podmienku, či sa to =0, nie?
pretože ak sa to rovná 0, znamená že číslo sa dá bezozvyšku deliť 2, čiže je párne .. // pridané po 5 minútach od posledného príspevkuDobre, opravil som malé nedostatky ako bodkočiarka atak a vypísalo mi 9 ďalších chyb a všetky sa týkajú tej práce s poľami. Takže je jasné, že som zle narábal s tými poľami.
Skúste mi potom prosím poradiť inú metódu, alebo ako to urobiť cez tie polia..
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal F3RY: 19.11.2011 16:20 | |
|
Takto by som to robil ja:
Kód: uses crt; var i,j,k,l,m,n,d,x,p,c: integer; a,b: array [1..100] of integer; begin clrscr; i:=1; j:=1; writeln ('Zadaj posledne cislo na vstupe'); readln (c); writeln ('Zadavaj kladne cisla '); repeat readln(x); d:=x mod 2; if d=0 then begin a[i]:=x; i:=i+1; end else begin b[j]:=x; j:=j+1; end; until x=c; clrscr; writeln; gotoxy (2,4); writeln ('Parne'); gotoxy (15,4); writeln ('Neparne'); n:=6; p:=6; m:=5; for k:=1 to i-1 do begin gotoxy (m,n); writeln (a[k]); n:=n+1; end; m:=15; for l:=1 to j-1 do begin gotoxy (m,p); writeln (b[l]); p:=p+1; end; readln; end.
Trochu nechapem tomu zadaniu: Ak posledne cislo na vstupe je N... Riesil som to tak, ze skonci ked sa to N bude rovnat NACITANEMU CISLU z cyklu. Program vypise tie cisla v stlpci. Ak sa s tym trocha pohras, neje problem este vykreslit tabulku. Gotoxy nieje nic hrozne, len presuvas kurzor po riadkoch a stlpcoch.
V tvojom kode je plno chyb napr.:
Mas 2 cykly zacinajuce repeat a while, ale ukoncil si len jeden cyklus. Ten while je zbytocny. Samozrejme, ze o praci s polami nemas ani sajnu.
|
|
Registrovaný: 07.11.11 Prihlásený: 19.11.11 Príspevky: 15 Témy: 2 | Napísal autor témy Dejvid: 19.11.2011 16:59 | |
|
hej hej, tak to má byť, že ako prvé zadáš N - čiže posledné číslo na vstupe a cyklus sa bude opakovať až dokým nezadáš číslo ktoré, ktoré sa bude rovnať tomu N.
Pozerám na tvoj program, a niečomu aj chápem niečomu nie. Budeš taký dobrý priblížiť mi, ako si to robil, aby som o tom mal šajnu ?
Tak najprv skúsim opísať čomu chápem. Robil si to tak, že pole a sú párne čísla a pole b sú nepárne čísla, že ?
i a j sú vlastne počítadlá, že keď je číslo párne alebo nepárne, priradí ho do daného poľa s indexom i/j, pričom ďalšie zadané číslo sa po vyhodnotení zase rozdelí do poľa podľa párnosti/nepárnosti už so zväčšeným indexom o 1. čiže v danom poli vystupuje to číslo s indexom zväčšením o jedna, od predchádzajúceho čísla.
d si dal ako pomocnú premennú pri výpočte, či sa x mod 2 rovná 0, že ?
potom nasleduje priradenie spolu s tými indexmi do daných polí.
po tadiaľ chápem, ak som niečo zle pochopil, tak ma prosím oprav
a ešte by som bol rád, keby si mi priblížil ako funguje tá funkcia gotoxy. Keď dobre chápem a pozerám, tak gotoxy je posunutie kurzora na pozíciu, ktorá je udaná v zátvorke, že?
potom ku koncu ako deklaruješ n, p a m, to sú vlastne začiatočné súradnice, podľa ktorých sa hýbeš v riadkoch pomocou príkazu gotoxy, že?
nechápem len, tej poslednej časti:
for k:=1 to i-1 do begin
gotoxy (m,n);
writeln (a[k]);
for l:=1 to j-1 do begin
gotoxy (m,p);
writeln (b[l]);
prečo je tam k:=1 to i-1 a potom writeln (a[k]) a podobne v druhom riadku potom l:=1 to j-1 a writeln (b[l]), keď sme začali ukladať čísla do polí pod indexmi a[i] a b[j] ?
Inak vrelá vďaka a skladám poklonu
EDIT: už som prišiel aj na to, prečo k:=1 a I:=1, že k a I sú vlastne indexy jedna, čiže pod nimi vystupujú prvé čísla v daných poliach .. takže ostáva mi len jedna otázka, že prečo sa tlačí
to i-1 a to j-1 ... prečo tam nebude to i a to j ? veď tlačíme až do konca, nie? nie po predposledné číslo .. lebo číslo s indexom i/j-1 je predposledné, nie?
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal F3RY: 19.11.2011 19:06 | |
|
Doplnil som aj tu tabulku. Vyzera to takto:
Kód: uses crt; var i,j,k,l,m,n,d,x,p,c,tabulka,t,f: integer; a,b: array [1..100] of integer; begin clrscr; i:=1; j:=1; tabulka:=0; writeln ('Zadaj posledne cislo na vstupe'); readln (c); writeln ('Zadavaj kladne cisla '); repeat readln(x); d:=x mod 2; if d=0 then begin a[i]:=x; i:=i+1; tabulka:=tabulka+1; end else begin b[j]:=x; j:=j+1; tabulka:=tabulka+1; end; until x=c; clrscr; t:=2; for f:=1 to tabulka do begin gotoxy(1,t); writeln('|-------|---------|'); writeln('| | |'); t:=t+2; end; writeln; gotoxy (2,3); writeln ('Parne'); gotoxy (10,3); writeln ('Neparne'); n:=5; p:=5; m:=5; for k:=1 to i-1 do begin gotoxy (m,n); writeln (a[k]); n:=n+2; end; m:=15; for l:=1 to j-1 do begin gotoxy (m,p); writeln (b[l]); p:=p+2; end; readln; end.
screen:
Tu je vysvetlene co je gotoxy: http://www.trsek.com/pascal/prikazy
Ano, cez gotoxy presunies kurzor, na poziciu, ktora je v zatvorke.
Mna nenapada okrem gotoxy nic, ako by sa to este dalo spravit.
Dobra stranka na zaklady pascalu je tato: http://www.programovanie.kromsat.sk/prog-b/index.htm
Takze premenne /i,j,k,l/ su riadiace premenne, a udavaju aktualny prvok pola.
Pole sa nikdy nenacitava cele! ale iba po jednotlivych prvkov. Na to tam je cyklus for. Takze ak napr: i:=3 tak a[i] bude treti prvok v poli.
Nieco o jednorozmernych poliach najdes tu: http://www.viliam.bur.sk/sk/2007-11-04/ ... yku-Pascal
|
|
Registrovaný: 07.11.11 Prihlásený: 19.11.11 Príspevky: 15 Témy: 2 | Napísal autor témy Dejvid: 21.11.2011 20:22 | |
|
Ďakujem ti veeeeľmi pekne a máš moje uznanie
|
|
Registrovaný: 27.12.08 Prihlásený: 13.12.22 Príspevky: 1874 Témy: 96 Bydlisko: Bratislava,... | Napísal nBXXL: 28.11.2011 17:21 | |
|
ferdo93: tvoj kod je strasne neprehladny (pismenkove nazvy premennych, kto sa v tom ma vyznat), pouziva zbytocnosti (gotoxy), nadbytocny pocet "riadiacich" premennych a vypisuje skaredu tabulku, skus daco takehoto:
Kód: uses crt; var max,i,pocetparnych,pocetneparnych,n,temp:integer; parne:array[1..100] of integer; neparne:array[1..100] of integer;
begin clrscr; readln(n);
repeat readln(temp); if (temp mod 2 = 0) then begin inc(pocetparnych); parne[pocetparnych]:=temp; end; if (temp mod 2 = 1) then begin inc(pocetneparnych); neparne[pocetneparnych]:=temp; end; until temp=n;
clrscr;
if (pocetparnych > pocetneparnych) then max:=pocetparnych else max:=pocetneparnych; writeln('+--------+----------+'); writeln('| PARNE: | NEPARNE: |'); writeln('+--------+----------+');
for i:=1 to max do begin write('| '); if (i <= pocetparnych) then begin write(parne[i]); write(' '); if (parne[i] < 10) then write(' '); end else write(' '); write('| ');
if (i <= pocetneparnych) then begin write(neparne[i]); write(' '); if (neparne[i] < 10) then write(' '); end else write(' '); writeln('|'); end;
writeln('+--------+----------+'); readkey; end.
_________________ ~Listen to your brain, not your heart~ NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot) NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI) |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal F3RY: 28.11.2011 17:45 | |
|
nBXXL píše: ferdo93: tvoj kod je strasne neprehladny (pismenkove nazvy premennych, kto sa v tom ma vyznat)
Ja viem, to je moj zlozvik Nechce sa mi pisat cele nazvy. To iste mi hovori aj nasa profka. Ja som si uz nejak na to zvykol, a priblizne viem, ktore pismena sa na co pouzivaju (a,b: array, i,j...: cyklus, x,y: string,char...)
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 27.12.08 Prihlásený: 13.12.22 Príspevky: 1874 Témy: 96 Bydlisko: Bratislava,... | Napísal nBXXL: 28.11.2011 17:53 | |
|
aj ja ked som zacinal tak som pouzival jednopismenkove nazvy premennych, ale proste ked svoj zdrojak davas niekomu inemu (napr. ho tu zverejnujes), tak ti ostatni maju dost velky problem sa v tom orientovat, obzvlast pokial mas dane na vstupe cislo N a ty si ho oznacis ako c..
_________________ ~Listen to your brain, not your heart~ NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot) NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI) |
|
Registrovaný: 07.12.14 Prihlásený: 07.12.14 Príspevky: 2 Témy: 0 | Napísal myska: 07.12.2014 20:56 | |
|
Ahojteee potrebovala by som mensiu pomoc mam za ulohu v skole zostavit program v PASCALE a neviem ako na to :/ uloha znie: Zostavte programe pre načítanie N čísel. Číslo vytlačte v tabuľke v 4 stĺpcoch: kladné párne, kladné nepárne.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 07.12.2014 21:57 | |
|
Ahoooooj, skús najprv objaviť tlačítko "Nová téma", tým založíš novú tému. A potom skús vyvinúť aj trochu snahy, domáce úlohy ti tu niekto riešiť nebude. Ak máš konkrétny problém, pomôžeme.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 07.12.14 Prihlásený: 07.12.14 Príspevky: 2 Témy: 0 | Napísal myska: 07.12.2014 22:01 | |
|
dakujem za odpoved akooo ja uz to robim asi 3 krat a nejde mi to staleee :/ neviemmm uz fakt co mam s tym robit
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 07.12.2014 22:07 | |
|
Tak ukáž, ako to robíš a čo ti nejde.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
| Stránka: 1 z 1
| [ Príspevkov: 17 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Rozdelenie tabuľky na viac častí v Databázy | 6 | 613 | 12.06.2010 17:44 M1rcO_o | | Vytlačenie formátu A2 v Ostatné programy | 0 | 273 | 25.05.2012 17:22 flip | | Generovanie cisel v PHP, ASP | 5 | 921 | 06.02.2010 17:44 Ďuri | | Generátor pseudonáhodných čísel v Assembler, C, C++, Pascal, Java | 11 | 1045 | 14.10.2007 19:35 Integer | | Z cisel text? v PHP, ASP | 3 | 426 | 21.03.2010 10:27 Ďuri | | Java - súčin čisel v Assembler, C, C++, Pascal, Java | 3 | 590 | 08.10.2014 20:31 Lessik | | Zoradenie cisel Java v Assembler, C, C++, Pascal, Java | 2 | 1665 | 09.11.2012 8:54 fista1 | | Zoradenie cisel v tabulke v PHP, ASP | 4 | 661 | 05.08.2009 17:38 rooobertek | | Delphi : Edit nacitanie cisel v Delphi, Visual Basic | 5 | 758 | 05.10.2011 12:40 Memorex88 | | C++ Čitanie znakov/čísel v Assembler, C, C++, Pascal, Java | 6 | 565 | 09.05.2014 12:04 Lukys12345 | | C++ nasobenie vacsich cisel v Assembler, C, C++, Pascal, Java | 5 | 744 | 30.12.2009 12:32 josi | | SW generator nahodnych cisel v Ostatné programy | 0 | 1193 | 16.02.2009 10:28 markog | | Nespravne zoradenie podla cisel v Databázy | 7 | 785 | 30.09.2010 20:29 camo | | Formatovanie cisel v php v PHP, ASP | 2 | 216 | 06.12.2012 18:36 JanoF | | Problem s urcenim cisel v PHP, ASP | 1 | 349 | 07.03.2009 14:17 Ďuri | | Vyber nahodnych cisel bez opakovania v Assembler, C, C++, Pascal, Java | 3 | 1006 | 08.03.2013 17:37 BX |
| 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
|
|