Začíname s pascalom- jednoduchší algoritmus?
-
Fabo
Hardcore addict
- Príspevky: 6810
- Registrovaný: 16 nov 2007, 17:23
- Bydlisko: 's Chravenhache
- Kontaktovať používateľa:
Re: Začíname s pascalom- jednoduchší algoritmus?
to je dajaka hovadina. nesedi syntax.
Re: Začíname s pascalom- jednoduchší algoritmus?
To som nepísal ja, bol to príklad v literatúre.. ale ďakujem nebudem sa tým zaoberať.
//autoeditácia príspevku (01 Aug 2014, 15:36)
Zdravím, rozhodol som sa napísať svoju prvú jednoduchú hru.. ide o posúvanie guličky a snahe sa vyhnúť lietajúcim štvorčekom. Narazil som na problém pri pohybe guličky.. snažil som sa to cez spojazdniť OnMouseDown ak sú súradnice myši na tele objektu ale ten pohyb je trhaný a nevyhovuje mi to.. niaky nápad ako pohybovať nakresleným objektom v pascale?
//autoeditácia príspevku (01 Aug 2014, 15:36)
Zdravím, rozhodol som sa napísať svoju prvú jednoduchú hru.. ide o posúvanie guličky a snahe sa vyhnúť lietajúcim štvorčekom. Narazil som na problém pri pohybe guličky.. snažil som sa to cez spojazdniť OnMouseDown ak sú súradnice myši na tele objektu ale ten pohyb je trhaný a nevyhovuje mi to.. niaky nápad ako pohybovať nakresleným objektom v pascale?
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Začíname s pascalom- jednoduchší algoritmus?
keď už tak onmousemove a nie mousedown, lebo ten sa vykoná iba raz (pokiaľ to nebude cez timer). A na sekaný pohyb by mohlo pomôcť nastaviť doubleBuffered na true
Re: Začíname s pascalom- jednoduchší algoritmus?
díky za radu skúsim a hádam to bude vyzerať lepšie.
//autoeditácia príspevku (19 Aug 2014, 17:18)
Tak po dovolenke otravujem zase
pustil som sa do "šifrovacieho" programu ktorý zadanú vetu prepíše do ascii a následne po stlačení tlačidla aj odšifruje. Problém nastal pri určení kedy má skončiť cyklus ktorý odšifrovával jednotlivé zadané čísla. Pôvodne som napísal niečo na štýl
za predpokladu že cis bol string 3 alebo 2 čísel a hodnota 32 predstavovala najnižšie číslo v ascii ktoré šifra mohla dosiahnuť ' ' a 122 zase najvyššie 'z' ale cyklus sa nezastavil. Potreboval by som poradiť efektívnejší spôsob alebo zistiť hodnotu ktorú by "cis" nadobudlo keď už použije všetky užívateľom zadané čísla. ďakujem za pomoc.
//autoeditácia príspevku (19 Aug 2014, 17:18)
Tak po dovolenke otravujem zase
Kód: Vybrať všetko
while (cis>='32') and (cis<='122') then ....Re: Začíname s pascalom- jednoduchší algoritmus?
1. Pracuješ na kódovaní nie šifrovaní.
2. Prečo to vlastne riešiš so String premennými?
... myslím ,žeby nebolo odveci keby si tu ukázal väčšiu časť tvojej práce.
2. Prečo to vlastne riešiš so String premennými?
... myslím ,žeby nebolo odveci keby si tu ukázal väčšiu časť tvojej práce.
Re: Začíname s pascalom- jednoduchší algoritmus?
1. ja viem že pracujem na kódovaní ale môj program má za úlohu šifrovať/dešifrovať text preto som sa tak vyjadril
2. výsledné číslo je príliš veľké aby som ho načítal ako Integer ktorý som chcel pôvodne použiť a preto používam String a príkaz copy, je mi jasné že sa to dá určite aj jednoduchšie ale moje znalosti sú zatiaľ dostatočné len na takýto algoritmus
fungujúci kód ku ktorému potrebujem už len fungujúci cyklus
2. výsledné číslo je príliš veľké aby som ho načítal ako Integer ktorý som chcel pôvodne použiť a preto používam String a príkaz copy, je mi jasné že sa to dá určite aj jednoduchšie ale moje znalosti sú zatiaľ dostatočné len na takýto algoritmus
Spoiler
Kód: Vybrať všetko
begin
zmaz;
cis:=copy(edit1.text,m,m+1);
if cis[1]='1' then begin
cis:=copy(edit1.text,m,m+2);
m:=m+3;
end
else m:=m+2;
with image1.canvas do
begin
font.height:=20;
font.style:=[fsBold];
textout(50,50,char(StrToInt(cis)));
end;
end; Re: Začíname s pascalom- jednoduchší algoritmus?
1. Ak to ma za úlohu šifrovať text tak ho šifruj a nie kóduj.
Čo je teraz vlastne `cis`? Myslel som ,že ide len o jeden znak... "Dešifrovanie" chceš ako urobiť? Ukladáš resp. používaš všetky ASCII kódy ako trojciferné?
// Je `cis` len jeden znak alebo ich môže byť niekoľko?
... čiže ti treba už len tú hlavnú časť....fungujúci kód ku ktorému potrebujem už len fungujúci cyklus...
Čo je teraz vlastne `cis`? Myslel som ,že ide len o jeden znak... "Dešifrovanie" chceš ako urobiť? Ukladáš resp. používaš všetky ASCII kódy ako trojciferné?
// Je `cis` len jeden znak alebo ich môže byť niekoľko?
Re: Začíname s pascalom- jednoduchší algoritmus?
1. nepochopil som tvoj dotaz a pod "kódovaním" som pochopil programovanie, nepoznám rozdiel medzi šifrovaním a kódovaním informácií ale teraz keď mi to vŕta v hlave si to idem hneď naštudovať 
2. nemyslím si že cyklus je hlavná časť, tak isto by mi bol naprd cyklus bez tela ale nehádam sa
3. dešifrovanie sa skladá z postupného vyňatia daného ascii kódu (cis) z čísla zadaného užívatelom a vyjadrením jeho znaku "char(StrToInt(cis))", ukladám ich buď dvoj alebo trojciferné podla potreby a to pomocou podmienky v kóde ktorú som sem už postol
BTW: nechcem byť hnusný ale keď sa už zapájaš mohol by si mi pomôcť s mojím problémom a navrhnúť potrebný cyklus prosím
*edit= naštudované, odteraz sa budem vyjadrovať správne a daný String šifrujem a nie kódujem
2. nemyslím si že cyklus je hlavná časť, tak isto by mi bol naprd cyklus bez tela ale nehádam sa
3. dešifrovanie sa skladá z postupného vyňatia daného ascii kódu (cis) z čísla zadaného užívatelom a vyjadrením jeho znaku "char(StrToInt(cis))", ukladám ich buď dvoj alebo trojciferné podla potreby a to pomocou podmienky v kóde ktorú som sem už postol
BTW: nechcem byť hnusný ale keď sa už zapájaš mohol by si mi pomôcť s mojím problémom a navrhnúť potrebný cyklus prosím
*edit= naštudované, odteraz sa budem vyjadrovať správne a daný String šifrujem a nie kódujem
Re: Začíname s pascalom- jednoduchší algoritmus?
V prvom rade potrebujem pochopiť čo vlastne chceš urobiť. K tretiemu bodu:BTW: nechcem byť hnusný ale keď sa už zapájaš mohol by si mi pomôcť s mojím problémom a navrhnúť potrebný cyklus prosím
Čiže užívateľ môže zadať len jeden znak resp. jeden ASCII kód a ten chceš následne previesť áno?
Myslel som ,ale že už máš niečo spravené a pridáš sem nejakú "logiku" a nie to čo je vyššie. Nepodstatná časť ,ktorá vyžaduje 30 sekúnd práce a žiadne rozmýšľanie.2. nemyslím si že cyklus je hlavná časť, tak isto by mi bol naprd cyklus bez tela ale nehádam sa
Tak tebe musí isť štúdium jedna radosť. Nevadí, pomôžem ti http://stackoverflow.com/questions/4657 ... encryption*edit= naštudované, odteraz sa budem vyjadrovať správne a daný String šifrujem a nie kódujem
Re: Začíname s pascalom- jednoduchší algoritmus?
Ja som to pochopil správne a môj program má znemožniť prečítanie správy niekomu kto nepozná klúč (ascii tabuľka). Nie úžívateľ ich môže zadať koľko len chce, preto je tam ten príkaz copy s premennou M ktorá sa bude zvyšovať a tým pádom z radu čísel ktoré užívateľ zadal brať dvoj/trojčíslia, nechápeme sa tak to skúsim ešte raz. Užívateľ zadá vetu do edit1 a stlačí tlačidlo zašifrovať, každému znaku sa zistí ascii kód a vypíše do grafickej plochy. V prípade potreby môže užívateľ tieto vypísané čísla zadať do programu a stlačiť dešifrovať, v tom momente sa začne cyklus ktorý som nedomyslel a po dvoch/troch cifrách bude meniť číslice s5 na znaky. Dúfam že si pochopil myšlienku mojej 30 sekundovej práce ktorá nevyžaduje žiadne rozmýšľanie avšak je pravdepodobne tak primitívna že sa nedá pochopiť. A k tejto malej výmene názorov, ja som sem hodil ten program pretože sa učím programovať a hľadám rady a konštruktívnu kritiku, nie narážky na moje samoštúdium a z môjho pohľadu nevrlé správanie ktoré by som od zrelého človeka nečakal. Keď raz prečítaš fórum na ktorom žiada niekto o pomoc tak aj keby napísal najväčšiu **** na svete slušnosť káže pekne povedať že to asi nedomyslel a nie sa vyvyšovať.
Re: Začíname s pascalom- jednoduchší algoritmus?
Ten tvoj kľúč je verejne dostupný/známy a ani neviem či sa to dá vôbec považovať za nejaký "kľúč".Ja som to pochopil správne a môj program má znemožniť prečítanie správy niekomu kto nepozná klúč (ascii tabuľka)
30 sekúnd práce zabral kód ,ktorý si zverejnil vyššie. Dosť jasne som nato poukazal tak neprekrucaj skutočnosti. To tvoje vysvetlenie s jedným riadkom kódu stojí za jednu vec, preto som to nepochopil.Dúfam že si pochopil myšlienku mojej 30 sekundovej práce ktorá nevyžaduje žiadne rozmýšľanie avšak je pravdepodobne tak primitívna že sa nedá pochopiť.
Z toho čo píšeš to vyzerá tak ,že edit1 bude (môcť) obsahovať ako ASCII kód tak aj normálnu vetu. O tomto nieje niekde ani jednej zmienky... v poskytnom kóde nieje možné vidieť nič ohľadom možnosti "šifrovať" / "dešifrovať". *K tomu všetkému sú písmena v premennej `cis`lo... ako mám z tohto bordelu asi výjsť?Užívateľ zadá vetu do edit1 a stlačí tlačidlo zašifrovať, každému znaku sa zistí ascii kód a vypíše do grafickej plochy. V prípade potreby môže užívateľ tieto vypísané čísla zadať do programu a stlačiť dešifrovať, v tom momente sa začne cyklus ktorý som nedomyslel a po dvoch/troch cifrách bude meniť číslice s5 na znaky
Najprv píšeš o "rade čísel" teda o ASCII kódoch a potom o vete (čiže o písmenach) ,ktoré sa transformujú do ASCII kódu...Nie úžívateľ ich môže zadať koľko len chce, preto je tam ten príkaz copy s premennou M ktorá sa bude zvyšovať a tým pádom z radu čísel ktoré užívateľ zadal brať dvoj/trojčíslia, nechápeme sa tak to skúsim ešte raz. Užívateľ zadá vetu do edit1 a stlačí tlačidlo zašifrovať, každému znaku sa zistí ascii kód a vypíše do grafickej plochy.
Re: Začíname s pascalom- jednoduchší algoritmus?
V záujme kludu mojej duše sa budem tváriť že sa nič z tejto konverzácie nestalo a zajtra alebo ak nazbieram silu tak dnes sem hodím presne definovanú otázku s vysvetlením aj celým kódom. Ak má niekto kompetencie zmazať tento bordel čo tu ostal a bol by taký zlatý.. nenahneval by som sa 
//autoeditácia príspevku (20 Aug 2014, 13:31)
Takže ešte raz a od začiatku. V mojej literatúre som dostal za úlohy vymyslieť program ktorý by zašifroval a aj odšifroval zadaný text. Nechcel som používať systém štýlu posunutia o písmeno dopredu/dozadu a podobne... preto som sa rozhodol text previesť do ascii kódu a samozrejme aj naspäť.
šifrovanie čísla som vypisoval postupne pretože nepoznám dátový typ do ktorého by som mohol priradiť tak veľké číslo
dešifrovanie za predpokladu že "cis" je string a "m" je integer s priradenou hodnotou 1, program vyberie zo zadaného čísla dvojčíslie a otestuje či sa prvá číslica rovná 1, ak áno pridá tretiu číslicu keďže najnižší znak ktorý vie užívatel do textu zadať je " " s hodnotou 32 a iba trojciferný kód môže začínať jednotkou. Problém spočíva v tom že táto časť programu vyrieši len prvé dvoj/trojčíslie a neviem navrhnúť fungujúci cyklus ktorý by prešiel celým číslom. Dúfam že som problém aj program objasnil dosť jasne a dočkám sa pomoci
s pozdravom.
//autoeditácia príspevku (20 Aug 2014, 13:31)
Takže ešte raz a od začiatku. V mojej literatúre som dostal za úlohy vymyslieť program ktorý by zašifroval a aj odšifroval zadaný text. Nechcel som používať systém štýlu posunutia o písmeno dopredu/dozadu a podobne... preto som sa rozhodol text previesť do ascii kódu a samozrejme aj naspäť.
šifrovanie
Spoiler
Kód: Vybrať všetko
ascii:=0;
x:=50;
sprava:=edit1.text;
image1.canvas.font.style:=[fsBOLD];
image1.canvas.font.height:=20;
for I:= 1 to Length(sprava) do
begin
ascii:= ord(sprava[I]);
image1.canvas.textout(x,20,IntToStr(ascii));
if (ascii div 100) = 0 then x:=x+20
else x:=x+30
end; dešifrovanie
Spoiler
Kód: Vybrať všetko
cis:=copy(edit1.text,m,m+1);
if cis[1]='1' then begin
cis:=copy(edit1.text,m,m+2);
m:=m+3;
end
else m:=m+2;
with image1.canvas do
begin
font.height:=20;
font.style:=[fsBold];
textout(50,50,char(StrToInt(cis)));
end; -
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Začíname s pascalom- jednoduchší algoritmus?
myslím že ti stačí overiť či je m >= Length(cis). To znamená že sme už za koncom slova a stopneš cyklus. V optimálnom prípade bude na konci m rovné dlžke slova, ale radšej by som tú podmienku postavil na rovné väčšie aby ti to nezlyhalo ak bude "šifra" v zlom formáte (nesprávna dlžka)
Re: Začíname s pascalom- jednoduchší algoritmus?
Vopred sa ospravedlňujem no nedá mi to pokoja...
Čiže tvojou úlohou je vymyslieť program ,ktorý zašifruje/odšifruje text. OK, nechcel si použiť štýl posúvania lenže to je to "šifrovanie" a namiesto toho používaš len prevádzanie písmen do ASCII kódu teda to celé len kóduješ čo znamená ,že jednoducho nespĺňaš danú úlohu.V mojej literatúre som dostal za úlohy vymyslieť program ktorý by zašifroval a aj odšifroval zadaný text. Nechcel som používať systém štýlu posunutia o písmeno dopredu/dozadu a podobne... preto som sa rozhodol text previesť do ascii kódu a samozrejme aj naspäť.
Re: Začíname s pascalom- jednoduchší algoritmus?
ďakujem.. vôbec ma také riešenie nenapadlo mal som sa viac snažiťaudiotrack napísal:myslím že ti stačí overiť či je m >= Length(cis). To znamená že sme už za koncom slova a stopneš cyklus. V optimálnom prípade bude na konci m rovné dlžke slova, ale radšej by som tú podmienku postavil na rovné väčšie aby ti to nezlyhalo ak bude "šifra" v zlom formáte (nesprávna dlžka)
//autoeditácia príspevku (20 Aug 2014, 14:31)
nechystám sa šifrovať správy pre ukrajinských povstalcov ani nič podobné takže sa žiadna katastrofa nestane, s mojimi znalosťami mi to prišlo ako zaujímavé riešenie a ak to nespĺňa zadanie tak ma to mrzí a ďakujem za upozornenie
//autoeditácia príspevku (20 Aug 2014, 20:52)
Zdravím, dostal som za úlohu vymeniť meno a priezvisko v reťazci edit1.text ktorý obsahuje meno a priezvisko oddelené medzerou. Podmienka bola že nesmiem použiť žiadne iné premenné ako retazec obsahujúci edit1.text. Navrhol som riešenie s cyklom so známym počtom opakovaní a až neskôr som si uvedomil že je to ďalšia premenná... dlhšie som sa s tým trápil ale neobjavil som spôsob ako to spraviť. Možno sa mi raz taký postup zíde preto by som bol rád keby mi to niekto objasnil. ďakujem.
Re: Začíname s pascalom- jednoduchší algoritmus?
WTF?...dostal som za úlohu vymeniť meno a priezvisko v reťazci edit1.text ktorý obsahuje meno a priezvisko oddelené medzerou.
Kedže píšeš o mene & priezvisku tipujem ,že máš na mysli cyklus v prvom príklade tz. "šifrovanie". Tých premenných je tam ,ale viac... keď chceš eliminovať len premennú `I` tak jednoducho nahoď Length(sprava) do while cyklu s tým ,že nakonci cyklu budeš z premennej "sprava" odoberať jedno písmeno.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Začíname s pascalom- jednoduchší algoritmus?
Kód: Vybrať všetko
retazec := retazec + ' '; //pridam na koniec medzeru, aby oddelovala priezvisko od mena
while retazec[1] <> ' ' do begin //pokial nie je na zaciatku medzera (nezmazal som cele meno)
retazec := retazec + retazec[1]; //presuniem pismenko na koniec
delete(retazec,1,1); //a zmazem zo zaciatku
end;
delete(retazec,1,1); //zmazem medzeru co mi na zaciatku ostava
Re: Začíname s pascalom- jednoduchší algoritmus?
ďakujem teraz sa viem na to riešenie pozrieť aj z iného uhľa
-
Fabo
Hardcore addict
- Príspevky: 6810
- Registrovaný: 16 nov 2007, 17:23
- Bydlisko: 's Chravenhache
- Kontaktovať používateľa:
Re: Začíname s pascalom- jednoduchší algoritmus?
Nevidim dovod preco by sa string cislic nemohol povazovat za zasifrovany text.S-player napísal:Čiže tvojou úlohou je vymyslieť program ,ktorý zašifruje/odšifruje text. OK, nechcel si použiť štýl posúvania lenže to je to "šifrovanie" a namiesto toho používaš len prevádzanie písmen do ASCII kódu teda to celé len kóduješ čo znamená ,že jednoducho nespĺňaš danú úlohu.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Začíname s pascalom- jednoduchší algoritmus?
tiež mi to pripadá ako extrémne slovíčkarenie. Ale ak to nie je nejaká množina jasne oddelených tých hodnôt, ale jedno dlhé číslo, tak to šifra je lebo ti nič nehovorí o tom že je to množina ani ako ju posekať. Rovnako ako keď napíšeme text bez medzier všetko v jednom slove: tak to je šifra, i keď veľmi biedna a z hlavy rozlúštiteľná
A mimochodom, kodovanie a šifrovanie sa nevylučuje. To že použil kodovanie vo svojej šifre ešte neznamená, že to už automaticky nemôže byť šifra.
Kód: Vybrať všetko
jankomrkvickatrhalfialkyvdazdipredustavompsychiatrieA mimochodom, kodovanie a šifrovanie sa nevylučuje. To že použil kodovanie vo svojej šifre ešte neznamená, že to už automaticky nemôže byť šifra.