Začíname s pascalom- jednoduchší algoritmus?

Programovacie jazyky, rady, poradňa...
Fabo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6810
Registrovaný: 16 nov 2007, 17:23
Bydlisko: 's Chravenhache
Kontaktovať používateľa:

Re: Začíname s pascalom- jednoduchší algoritmus?

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

to je dajaka hovadina. nesedi syntax.
Mr-Freek
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 469
Registrovaný: 14 júl 2014, 13:23

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa Mr-Freek »

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?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Začíname s pascalom- jednoduchší algoritmus?

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

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
Mr-Freek
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 469
Registrovaný: 14 júl 2014, 13:23

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa Mr-Freek »

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

Kód: Vybrať všetko

while (cis>='32') and (cis<='122') then ....
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.
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa S-player »

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.
Mr-Freek
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 469
Registrovaný: 14 júl 2014, 13:23

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa Mr-Freek »

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

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; 
fungujúci kód ku ktorému potrebujem už len fungujúci cyklus
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa S-player »

1. Ak to ma za úlohu šifrovať text tak ho šifruj a nie kóduj.
...fungujúci kód ku ktorému potrebujem už len fungujúci cyklus...
... čiže ti treba už len tú hlavnú časť.

Č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?
Mr-Freek
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 469
Registrovaný: 14 júl 2014, 13:23

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa Mr-Freek »

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 :)
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa S-player »

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
V prvom rade potrebujem pochopiť čo vlastne chceš urobiť. K tretiemu bodu:

Čiže užívateľ môže zadať len jeden znak resp. jeden ASCII kód a ten chceš následne previesť áno?
2. nemyslím si že cyklus je hlavná časť, tak isto by mi bol naprd cyklus bez tela ale nehádam sa
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.
*edit= naštudované, odteraz sa budem vyjadrovať správne a daný String šifrujem a nie kódujem
Tak tebe musí isť štúdium jedna radosť. Nevadí, pomôžem ti http://stackoverflow.com/questions/4657 ... encryption
Mr-Freek
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 469
Registrovaný: 14 júl 2014, 13:23

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa Mr-Freek »

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ť.
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa S-player »

Ja som to pochopil správne a môj program má znemožniť prečítanie správy niekomu kto nepozná klúč (ascii tabuľka)
Ten tvoj kľúč je verejne dostupný/známy a ani neviem či sa to dá vôbec považovať za nejaký "kľúč".
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ť.
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.
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
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ť?

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.
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... :o Prepáč, možno mi to dnes nedopína rýchlo no ja v tom mám pekne veľký bordel.
Mr-Freek
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 469
Registrovaný: 14 júl 2014, 13:23

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa Mr-Freek »

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
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;        
čísla som vypisoval postupne pretože nepoznám dátový typ do ktorého by som mohol priradiť tak veľké číslo

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;           
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.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Začíname s pascalom- jednoduchší algoritmus?

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

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)
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa S-player »

Vopred sa ospravedlňujem no nedá mi to pokoja...
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äť.
Č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.
Mr-Freek
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 469
Registrovaný: 14 júl 2014, 13:23

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa Mr-Freek »

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)
ďakujem.. vôbec ma také riešenie nenapadlo mal som sa viac snažiť :)

//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.
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa S-player »

...dostal som za úlohu vymeniť meno a priezvisko v reťazci edit1.text ktorý obsahuje meno a priezvisko oddelené medzerou.
WTF?

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
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Začíname s pascalom- jednoduchší algoritmus?

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

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
dalo by sa to aj rekurziou, ale to je zrejme ešte mimo tvojich možností
Mr-Freek
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 469
Registrovaný: 14 júl 2014, 13:23

Re: Začíname s pascalom- jednoduchší algoritmus?

Príspevok od používateľa Mr-Freek »

ďakujem teraz sa viem na to riešenie pozrieť aj z iného uhľa
Fabo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6810
Registrovaný: 16 nov 2007, 17:23
Bydlisko: 's Chravenhache
Kontaktovať používateľa:

Re: Začíname s pascalom- jednoduchší algoritmus?

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

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.
Nevidim dovod preco by sa string cislic nemohol povazovat za zasifrovany text.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Začíname s pascalom- jednoduchší algoritmus?

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

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:

Kód: Vybrať všetko

jankomrkvickatrhalfialkyvdazdipredustavompsychiatrie
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.
Napísať odpoveď