Anonymní profil gna – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil gna – Programujte.comAnonymní profil gna – Programujte.com

 

Příspěvky odeslané z IP adresy 213.211.51.–

gna
C / C++ › interval
3. 3. 2021   #387598

Zkus si to okomentovat, co ten program dělá. 

int main()
{
	int cislo;
	// načti číslo
	cin >> cislo;
	// pokud je sudé...
	if (cislo % 2 == 0) {
		// tak ho inkrementuj
		cislo++;
	}

	// máme i = 0
	// dokud je i mezi 15 a 69, něco dělej
	// a po každém kroku ho inkrementuj
	for (int i = 0; i < 69 && i > 15; i++) {
		// vypiš číslo
		cout << cislo << endl;
		// a přičti k němu 2
		cislo += 2;
	}
	return 0;
}

Takže celkově je to dost mimo a ten cyklus ani neproběhne.

Chceš něco jako toto:

int main()
{
	for (int i = 15; i < 69; i++) {
		if (i % 2 == 1) {
			cout << i << endl;
		}
	}
	return 0;
}

Nebo lehce optimalizováno jako toto: 

int main()
{
	for (int i = 15; i < 69; i += 2) {
		cout << i << endl;
	}
	return 0;
}
gna
PHP › Manipulace s JSON v PHP
2. 3. 2021   #387591

json_decode

gna
PHP › API vrací {"message":"Unknow…
2. 3. 2021   #387587

Tak tam dej ten token a ne celou odpověď.

gna
PHP › API vrací {"message":"Unknow…
2. 3. 2021   #387583

Těžko říct, co používají na parsování JSONu, ale zjevně jim tam běží PHP a u standardního json_decode by to bylo JSON_ERROR_UTF8.

Nevyráběj ten JSON ručně a použij json_encode.

gna
PHP › iframe-Obsah sa nedá zobrazi…
2. 3. 2021   #387577

Ano, zakazuje. V odpovědi je

X-Frame-Options: DENY

Obejít by to asi šlo, ale jestli správně chápu jejich podmínky, tak ani to není dovoleno.

gna
JavaScript, AJAX, jQuery › chyba Access-Control-Allow-…
1. 3. 2021   #387572

V téhle formě si myslím, že to nepůjde, ale jestli máš v dokumentaci příklad s XHR, tak nějak jinak asi jo.

gna
JavaScript, AJAX, jQuery › chyba Access-Control-Allow-…
1. 3. 2021   #387570

To neznamená, že server tu hlavičku nepřijímá, ale že nechce, aby prohlížeč požadavky s touto hlavičkou dovolil. Serverový node.js na acces-control asi kašle a nejspíš preflight vůbec nedělá.

gna
JavaScript, AJAX, jQuery › chyba Access-Control-Allow-…
1. 3. 2021   #387568

A neběží repl.it na serveru, takže se tam prohlížečový CORS vůbec neřeší?

Ono jako dává smysl, aby to nefungovalo. Mít přihlašovací údaje někde ve skriptu na potenciálně veřejném webu je samozřejmě nesmysl, ale pokud tomuhle chtějí zabránit, tak bych čekal, že nebude fungovat ani ten login.

gna
JavaScript, AJAX, jQuery › chyba Access-Control-Allow-…
1. 3. 2021   #387566

#9 marioDD
Jo, podle dokumentace to máš správně. To je na tom to divné, proč to přes wen funguje jen na půl (login a pak nic).

gna
JavaScript, AJAX, jQuery › chyba Access-Control-Allow-…
1. 3. 2021   #387564

On se vlastně login indikuje jen tím tokenem, takže na tom asi nesejde.

A jinak mi to vrací toto:

Access-Control-Allow-Headers: DNT, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Content-Type, Cache-Control, X-Wa-api-token, X-Wa-ssid
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *

Takže není povolená ta hlavička Authorization.

gna
JavaScript, AJAX, jQuery › chyba Access-Control-Allow-…
1. 3. 2021   #387562

Když login funguje, tak by asi měl fungovat i zbytek. Nevím.

Já se přes login nedostanu, tak orders nevyzkouším.

gna
JavaScript, AJAX, jQuery › chyba Access-Control-Allow-…
1. 3. 2021   #387560

Já nevím, jak to mají implementované, ale typicky se u preflightu neřeší, jestli něco chybí. Spíš posíláš něco, co oni nedovolují. A podle dokumentace to máš asi správně. Podívej se na detail toho OPTIONS, co je v dotazu a co v odpovědi. Dost možná to záměrně nemá fungovat přes web.

Access-Control-Request-Headers
Access-Control-Allow-Headers
gna
JavaScript, AJAX, jQuery › chyba Access-Control-Allow-…
1. 3. 2021   #387558

Když se připojuješ na jinou doménu (cross origin), tak prohlížeč nejdříve pošle "preflight request", ve kterém cíl požádá o svolení; řekne co se chystá poslat a zkontroluje, co je server ochoten přijmout.

Je to OPTIONS request a měl by být vidět v nástrojích pro vyvojáře. Tak se podívej, co ti tam lítá.

gna
PHP › suplování funkce webmailu po…
26. 2. 2021   #387553
gna
XML / XSL(T) › xml do tabulky
26. 2. 2021   #387550

table/table

<xsl:for-each select="ports/port/script/table/table/elem">
  <td><xsl:value-of select="@key"/>:</td>
  <td><xsl:value-of select="."/></td>
</xsl:for-each>
gna
PHP › suplování funkce webmailu po…
25. 2. 2021   #387548

Můžeš přečíst email a odeslat email. Když to spojíš, tak máš přeposílání.

gna
C / C++ › C++, Diakritika
23. 2. 2021   #387545

To je to, co jsem popsal. Možná budeš mít víc štěstí s GetEnvironmentVariable. Jinak přejdi na Unicode.

gna
C / C++ › C++, Diakritika
23. 2. 2021   #387541

Fajn, ale v čem je ten problém? Dovedu si představit, že nejde ta hodnota zkonvertovat do MBCS/SBCS a funkce getenv teda vrací špatnou hodnotu a pak je prostě nepoužitelná.

gna
C / C++ › C++, Diakritika
23. 2. 2021   #387536

K jakému problému a kde? Text je vždycky v nějakém kódování a může být potřeba ho patřičně převádět. Na Widows jsi typicky v situaci, kdy nějaké kódování používáš interně v programu, nějaké kódování používá systém a ještě jiné kódování používá třeba konzole.

gna
Delphi › Založení složky v dané cestě
23. 2. 2021   #387533

Tak ještě jednou - už jsi tu samou věc dělat - co ti na tom nefunguje?

if not CreateDir('c:\cesta\jakou\chces') then
  begin
    ShowMessage('Nepodařilo se vytvořit složku');
    Exit;
  end
gna
.NET › opera - revize prvků/zdrojov…
22. 2. 2021   #387526

Obecně tyto úpravy nejde uložit a je potřeba je aplikovat vždy znova.

Rozšíření Stylus vypadá použitelně, ale nevím, kolik toho umí. Na pokročilejší úpravy si asi bude museš udělat vlastní rozšíření.

gna
PHP › Náhrada websocket
20. 2. 2021   #387521

Jestli všechno musí jít přes ten server, tak není moc co řešit. Buď můžeš mít stálé spojení a pak použiješ WebSocket (nebo SSE, pokud to stačí) a nebo nemůžeš a pak ti holt nezbývá nic jiného než ten polling.

Ale zmínil jsi oponenty a pokud je to nějaká hra, tak tam by možná šlo použít WebRTC. Tam jsou klienti spojení přímo mezi sebou a sice pořád potřebuješ meziserver na signalling a v příkladech se na to většinou používá WebSocket, ale můžeš ho implementovat i jakkoliv jinak. Akorát to nemusí vždycky fungovat, tak bys k tomu nejspíš ještě měl zase polling jako zálohu.

Jestli data v souboru nebo DB je nesmyslný dotaz. Zkus, změř, vyber.

gna
C / C++ › Nefungující knihovna <cstring>
20. 2. 2021   #387518

Tak, jak to máš, by to mělo fungovat. Ale protože to VS se strcpy ani nezkompiluje, tak ten výstup, který jsi ukázal, nejpíš bude z nějaké rozpracované dřívější verze a těžko říct, co tam máš špatně.

std::string je třída pro textové řetězce, takže bys ji použil místo polí charů (a ukazatelů na ně).

gna
Python › Paralelní proces - build nef…
20. 2. 2021   #387517

Zkus zavolat freeze_support a pak se na buildování windowsích exáčů vybodni.

gna
Python › Paralerní zpracování metody…
20. 2. 2021   #387515

A pointa je v tom, že opuštění toho bloku zavolá pool.terminate(), což můžeš dělat i bez toho, ale s with na to nemusíš myslet.

gna
Python › Paralerní zpracování metody…
20. 2. 2021   #387514

Úplně vnitřnosti neznám, ale asi je možné, že se ty procesy uvolňují až se zpožděním. Když to dáš do with, tak by se měly kompletně ukončit a uvolnit hned (po vyskočení z toho bloku with).

if __name__ == '__main__':
  try:
    for epoch in range(3):
      with multiprocessing.Pool(multiprocessing.cpu_count()) as pool:
        res1 = pool.apply_async(process1)
        res2 = pool.apply_async(process2)

        pool.close()
        pool.join()

        print('results:', res1.get(), res2.get())
        print('---')
        time.sleep(5)
    input('exit')
  except Exception as err:
    print('err', err)
    input('exit exception')
gna
HTML / XHTML › pracovní úloha
19. 2. 2021   #387506
gna
Python › Pyserial posílání dat z PC
19. 2. 2021   #387502

Ono ti přichází to, co jsi odeslal, ale odesílaš něco jiného než si asi myslíš. Nepřeváděj to na string a rovnou vyrob bytes

>>> chr(128).encode('utf8')    # toto nechceš
b'\xc2\x80'
>>> chr(128).encode('latin1')  # toto by fungovalo, ale nedělej to
b'\x80'
>>> bytes([128])               # takhle to dělej
b'\x80'
gna
C / C++ › Pole - Znalostní test z AJ
17. 2. 2021   #387495

   

do {
    x = rand() % 20;
} while (zadani[x] ==  "");
...
...
zadani[x] = "";
gna
C / C++ › Pole - Znalostní test z AJ
17. 2. 2021   #387493

Můžeš třeba použít prázdný řetězec, jako indikátor použité položky. Budeš "losovat" dokud nenajdeš neprázdný řetězec a po použití ho nahradíš prázdným.

gna
C / C++ › Pole - Znalostní test z AJ
15. 2. 2021   #387478

 Fajn, a co přesně nevíš?

string cz[] = { "pes", "kocka" };
string en[] = { "dog", "cat" };

int main()
{
	cout << "cz: " << cz[0] << ", en: " << en[0] << "\n";
}
gna
Python › Paralerní zpracování metody…
15. 2. 2021   #387475

Určitě by to šlo, ale na co?

import multiprocessing as mp


def dostuff():
  return 5


if __name__ == '__main__':
  pool = mp.Pool(mp.cpu_count())
  res = pool.apply_async(dostuff)

  pool.close()
  pool.join()

  print('value', res.get())
gna
Python › Paralerní zpracování metody…
15. 2. 2021   #387473

Mění, ale v jiném objektu v jiném procesu. Teda ani to ne, protože se to vůbec nespustí.

gna
C / C++ › Pole - Znalostní test z AJ
15. 2. 2021   #387471

Pole je pole, pracuje se s ním vždy stejně. Akorát teď v něm budeš mít prvky jiného typu.

Co přesně nevíš?

gna
Python › Paralerní zpracování metody…
15. 2. 2021   #387470

Jo, a func jako list se mi nějak nezdá. Jseš si jistý, že se ti to vůbec spouští?

func=[procedure]
gna
Python › Paralerní zpracování metody…
15. 2. 2021   #387469

Multiprocessing používá izolované procesy, které nesdílejí data. Takže ten "worker" zdědí data hlavního procesu, ale změny se nikam jinam nepromítnou. (Existují explicitně sdílené proměnné jako mp.Value, ale to už je zase jinde.)

Je to určené na volání funkcí - pošleš parametry, dostaneš návratovou hodnotu. Nekomplikuj si život :-)

gna
C / C++ › Vytvoření příkazu "mirror"
15. 2. 2021   #387464

Ten else-if nefunguje jak si asi myslíš. Když přidám složené závorky, tak ti to asi bude jasné: 

if (trojuhelnik < 3 || trojuhelnik > 12){
	...
}
else {
	if (trojuhelnik <= 12 && trojuhelnik >=3){
		...
	}
	else {
		if (trojuhelnik <= 12 || trojuhelnik >=3){
			...
		}
	}
}

Buď se provede if-blok nebo else-blok. Když chceš vykreslit oba trojúhelníky, tak je prostě vykresli oba - bez podmínky. A ještě když ti if chytá neplatnou hodnotu, tak do else půjde platná hodnota - není potřeba ji znova testovat. Takže takhle: 

#include <iostream>
using namespace std;

int main(){

	int trojuhelnik;
	cout << "zadejte hodnotu 3 - 12 pro urceni velikosti trojuhelniku: ";
	cin >> trojuhelnik;

	if (trojuhelnik < 3 || trojuhelnik > 12){
		cout << "zadejte platnou hodnotu!";
	}
	else {
		for (int i = 1; i <= trojuhelnik; i++){
			for (int y = i; y <= trojuhelnik; y++){
				cout << "*" << " ";
			}
			cout << endl;
		}

		for (int i = 1; i <= trojuhelnik; i++){
			for (int y = 1; y <= i; y++){
				cout << "*" << " ";
			}
			cout << endl;
		}
	}
}
gna
Delphi › Založení složky v dané cestě
15. 2. 2021   #387460

#1 ZAČÁTEČNÍKDE
U minulého dotazu máš vytváření složky i kopírování souboru. Co nefunguje, jakou chybu to vraci... ?

gna
Python › Podmínka jako parametr
14. 2. 2021   #387455

Můžeš vracet pořád objekt a definovat mu __call__, takže bude použitelný i jako funkce. To ve skutečnosti jsou i "normální" funce - volatelné objekty. Všechny tyhle speciální metody jsou popsané tady.

Akorát and nejde přetížit, můžeš to zřetězit bez něj, nebo použít podobný & (ten ale má ale jinou prioritu, tak to musíš správně ozávorkovat) 

class Filter:
    def __init__(self, func=lambda x: True):
        self.func = func

    def __gt__(self, other):
        return Filter(lambda x: self(x) and x > other)

    def __lt__(self, other):
        return Filter(lambda x: self(x) and x < other)

    def __and__(self, other):  # &
        return Filter(lambda x: self(x) and other(x))

    def __call__(self, x):
        return self.func(x)


x = Filter()
data = [1, 2, 3, 4, 5]

print(*filter(x > 2, data))              # 3 4 5
print(*filter((x > 2) < 5, data))        # 3 4
print(*filter((x > 2) & (x < 5), data))  # 3 4

Na hraní pěkné, ale nikde to proboha nepoužívej :-)

gna
Python › Podmínka jako parametr
14. 2. 2021   #387453

Můžeš přetěžovat operátory. Pokud máš v tom výrazu svůj objekt, tak máš kontrolu nad jeho výsledkem. Takže můžeš vyrábět i funkci, ale je lepší neměnit význam operátorů, aby tě to pak někde nepřekvapilo.

class Filter:
    def __gt__(self, other):  # Greater Than
        return lambda x: x > other

    def __lt__(self, other):  # Less Than
        return lambda x: x < other


x = Filter()
data = [1, 2, 3, 4, 5]

print(*filter(x > 2, data))  # 3 4 5
print(*filter(x < 4, data))  # 1 2 3
gna
Python › Podmínka jako parametr
14. 2. 2021   #387451

Do toho where nejde podmínka, ale výsledek toho porovnání. 

a=np.array([1,2,3])

a==2
# a: [1,2,3]
# 2: [2,2,2]
# => [False, True, False]

np.where(a==2, a, 0)
# cond: [False, True, False]
#    x: [1, 2, 3]
#    y: [0, 0, 0]
# => [0, 2, 0]

Pokud potřebuješ předávat něco jako podmínku, tak můžeš předávat funkci a tu v té cílové funkci volat.

gna
C / C++ › Náhodné číslo
14. 2. 2021   #387447

   

if ((rand() % 100) < 80)
    cislo = 1;
else
    cislo = 2;
// `cislo` je s 80% pravdepodobnosti 1
gna
Pascal › Lazarus - TButton
13. 2. 2021   #387445

Hlucheucho ti poradil metodu Close, s tím ať si to ověříš v dokumentaci, protože on VCL už dlouho nepoužívá a odpovídá ti jen ze vzpomínek. Na to ty jsi zase začal s C&C, tak jsem ti objasnil o čem je řeč.

Tobě Close z nějakého důvodu nějak nefunguje, tak jen tipuju, co přesně to znamená a čím by to mohlo být. Už nebudu. Nainstaluj s v DOSBoxu Turbo Pascal s českou nápovědou a nejméně na rok máš co dělat.

A to volání na technickou podporu nějakého náhodného spammera a nainstalovat si jakousi jejich aktualizaci je vrchol debility.

gna
C / C++ › Náhodné číslo
13. 2. 2021   #387440

Když vygeneruješ náhodné číslo třeba od 0 do 100, tak s 80% pravděpodobností bude menší než 80.

To sice nemusí být pravda, ale pro běžné programy takový předpoklad stačí.

gna
HTML / XHTML › Skrytí textu na základě jiné…
13. 2. 2021   #387435

To nastavení je tam opravdu na houby. Problém je v tom, že nejde o skrytí textu, ale je to potřeba odstranit z košíku, ať to pak není v objednávce; a to asi nejde. Jinak čistě vizuálně by to šlo, pokud do té šablony dostaneš JavaScript:

<script>
$(() => {
  if ($('.single-merchandise-text-info > span').text().includes('Nazev produktu'))
    $('#additional-stuff-in-cart').remove();
});
</script>
gna
HTML / XHTML › Skrytí textu na základě jiné…
13. 2. 2021   #387433

#1 czsars
Na cizí stránce to neuděláš a na vlastní to dělat nemusíš - prostě ten obsah rovnou generuj tak, jak ho chceš mít.

gna
Pascal › Lazarus - Programy
13. 2. 2021   #387431

Application je GUI aplikace s formulářem; Simple program jsou věci, co jsi dělal doteď. Co víc potřebuješ?

U každé položky je popis a můžeš si ty projekty vytvořit a podívat se, co to udělá a vybrat si svůj ořechovník ;-)

gna
Pascal › Lazarus - TButton
12. 2. 2021   #387430

   

unit DvaOknaZmena1;
...
procedure MoznostExit(Sender: TObject);

DvaOknaZmena1 ? -- Pokud máš více oken, tak to zavře jen to jedno okno. (Můžeš použít ještě třeba Application.Terminate.)

MoznostExit ? -- Pokud to máš na událost OnExit, tak ta je, když ten button ztratí focus (focus znamená, že je prvek aktivní a vstup z klávesnice jde na něj). Tak to dej normálně na OnClick, nebo po kliknutí na tenhle button klikní na nějaký další, abys vyvolal OnExit.

gna
Pascal › Lazarus - PopupMenu
12. 2. 2021   #387427

Ještě tomu formu nastav property PopupMenu na to tvoje PopupMenu1

Ta vlastnost se jmenu je PopupMenu, to tvoje menu se jmenuje PopupMenu1. Vlastnost PopupMenu nastav na hodnotu PopupMenu1. Možná tam není, možná se jmenuje jinak, nevím.

gna
Pascal › Lazarus - PopupMenu
12. 2. 2021   #387425

Property je vlastnost.

gna
Python › Python - Sellenium - Javascr…
12. 2. 2021   #387423

Nevím, jak tu strukturu zkoumáš teď, ale v DevTools je pěkně vidět, že ten scrollbar je na DIVu s ID 'leftmenuinnerinner'.

gna
Pascal › Lazarus - Programy
12. 2. 2021   #387417

Prostě abys to nemusel všechno vytvářet a nastavovat sám, tak ti to vývojové prostředí umožňuje si vybrat a automaticky ti připraví projekt. Používej to, co dělá to, co chceš a víc tím se tím zatím nezabývej.

gna
Pascal › Lazarus - TButton
12. 2. 2021   #387416

#3 doma22
VCL znamená Visual Component Library, která obsahuje implementaci těch různých tříd jako TForm. Nijak se to netýká Red Alertu.

Close je metoda třídy TForm. Ty ve svém programu máš třídu, která dědí od TForm, takže jen zavoláš Close, což ten tvůj formulář zavře a tím se ukončí celý program.

gna
Pascal › Lazarus - PopupMenu
12. 2. 2021   #387414

#3 doma22
Komentář od contactforhelp je jen spam, který se nijak netýká tvého dotazu :-)

Samotné vložení popup menu na formulář asi nic neudělá. Ještě tomu formu nastav property PopupMenu na to tvoje PopupMenu1.

gna
Pascal › Paskal - Polygon
9. 2. 2021   #387400

#16 doma22
Tady je ale jen jedno auto. A podle toho jestli zařadíš jedničku nebo zpátečku, tak ti jede dopředu nebo dozadu.

gna
Pascal › Paskal - Kreslenie
9. 2. 2021   #387392

Programy pořád mohou zjišťovat pozici myši a vypisovat text, takže s úpravou by to samozřejmě fungovalo.

gna
Pascal › Paskal - Polygon
9. 2. 2021   #387391

Lazarus kompiluje pomocí FPC, takže nemůžeš říct ve FPC tak a v Lazaru jinak. Pořád je to ten samý FPC, jen se může lišit nastavení.

gna
Pascal › Paskal - Polygon
8. 2. 2021   #387388

Parametry se předávájí hodnotou nebo odkazem (deklarované jako var). Při zápisu do parametrů předávaných odkazem se mění hodnota původní proměnné, proto je potřeba aby byla správného typu.

Integer může být SmallInt nebo LongInt v závislosti na režimu kompilace. Když je Integer alias pro SmallInt, tak to bude fungovat. To platilo v Turbo Pascalu pro DOS a proto jsem ti radil zkoušet ty staré programy ve FPC s uvedením {$mode tp}.

Jinak parametry InitGraph jsou SmallInt, takže čisté řešení je použít SmallInt.

Lazarus kompiluje pomocí FPC, takže nemůžeš říct ve FPC tak a v Lazaru jinak. Pořád je to ten samý FPC, jen se může lišit nastavení.

gna
Pascal › Paskal - Kreslenie
8. 2. 2021   #387387

To pole scrbuf je definované, že je na adrese video paměti používané v textovém režimu. Takže čtení/zápis do scrbuf přistupuje přímo k video paměti. To v dnešních systémech nejde.

Přerušení $33 v DOSu sloužilo ke komunikaci s ovladačem myši. V dnešních systémech ovladač myši funguje jinak a přímé volání libovolného přerušení opět ani nejde.

gna
Pascal › Paskal - Polygon
7. 2. 2021   #387377

tak ještě jinak. wincrt neřeší readln, ale má readkey, který můžeš použít místo readln. to by mělo fungovat.

gna
Pascal › Paskal - Polygon
7. 2. 2021   #387375

Tak to vypadá, že když použiješ wincrt (přídej do uses) místo crt, tak by to mohlo fungovat bez přepínání.

gna
Pascal › Paskal - Uholnik
7. 2. 2021   #387374

To je to samé jako u toho polygonu. Prostě ti to visí v readln.

gna
Pascal › Paskal - Polygon
7. 2. 2021   #387373

Prostě klikni na to konzolové okno a zmáčkni ten enter.

gna
Pascal › Paskal - Polygon
7. 2. 2021   #387369

Včera u Úhelníku jsi měl proceduru a prázdný program. Tady ti nefunguje jen readln a snad vidíš, že ten program je kompletní.

Já jsem napsal, že pokud to ve Windows funguje jako u mně, tak je problém jen v tom, že ten Enter mačkáš ve špatném okně.

Připojen obrázek.

gna
Pascal › Paskal - Polygon
7. 2. 2021   #387365

Nevím, ale tipl bych, že ten program běží v konzoli, ze které readln čte a Graph vytváří nové grafické okno, které je aktivní. Takže přepni zpátky do konzole.

Ten problém s integerem je v tom, že parametry InitGraph jsou typu smallint, což bývalo to samé jako integer, ale ve FPC to nemusí platit. Na zkoušení starých programů pro TP můžeš použít {$mode tp}.

gna
C / C++ › C program Kompresia Dekompre…
7. 2. 2021   #387363

Nemůžeš dostat takový úkol a neumět napsat ani řádek. Takže s čím přesně potřebuješ poradit?

Zkus RLE, to je jen hodnota a počet opakování. To musíš zvládnout.

gna
Pascal › Paskal - Uholnik
6. 2. 2021   #387357

To párování begin-end je úplně blbě. Nevím, z čeho jsi vycházel, tak nevím, kde jsi udělal chybu.

gna
Pascal › Paskal - Uholnik
6. 2. 2021   #387355

   

uses
  crt, graph;

procedure Uholnik(N: Byte; SX, SY: Integer; R: Word);
var
  Zoznam : array[Byte] of record
                            X, Y: Integer
                          end;
  Alfa   : Real;
  I      : Byte;
begin
  if N > 2 then
    begin
      Alfa := 2 * Pi / N;
      for I := 0 to N - 1 do
        with Zoznam[I] do
          begin
            X := SX + Round(R * Cos(I * Alfa));
            Y := SY + Round(R * Sin(I * Alfa));
          end;
      Zoznam[N] := Zoznam[0];
      DrawPoly(N + 1, Zoznam);
    end;
end;


var
  gd, gm: integer;
  error: integer;

begin
  gd := VGA;
  gm := VGAhi; // 640x480x16
  InitGraph(gd, gm, '');
  error := GraphResult;
  if error <> grOk then
  begin
    writeln(GraphErrorMsg(error));
    exit;
  end;

  Uholnik(3, 100, 100, 100);
  Uholnik(8, 400, 100, 100);

  readln;
  CloseGraph;
end.
gna
Pascal › Paskal - Mnoziny
5. 2. 2021   #387346

#4 doma22
To jsou speciální sekvence, které když program vypisuje a konzole detekuje, tak je interpretuje jako příkazy. Ale to je potřeba nejdříve zapnout, nebo použít terminál, který je podporuje automaticky.

To co v tom programu vyvádíš s množinami není špatně, ale samozřejmě to nemůže mít vliv na formát následně vypisovaného textu.

Jestli chceš formátovaný text, tak to dělej v grafické aplikaci.

gna
Pascal › Paskal - Mnoziny
4. 2. 2021   #387338

Můžeš měnit barvu textu/pozadí a konzole ve Windows umí podtržený text, ale nevím, jestli na to Free Pascal má nějakou extra funkci nebo musíš použít WinAPI.

Konzole/terminál není určená ro formátovaný text.

gna
Pascal › Dynamická datova štruktúra
4. 2. 2021   #387335

#27 doma22
Já chápu tu myšlenku projít si ty jazyky postupně, ale zároveň je to ztráta času. I v moderních jazycích můžeš postupovat pomalu. Já bych doporučil rovnou skočit na C# (ne C, ne C++, ale C#), nebo ty webové technologie jak zmínil Jerry.

gna
Pascal › Dynamická datova štruktúra
4. 2. 2021   #387330

#21 doma22
V tomto konkrétním případě u programu, který nic moc nedělá a uvolňuje paměť až na konci, tak to víceméně není potřeba, protože to systém udělá automaticky. Jinak to není žádný archaismus a nepotřebnou paměť musíš uvolňovat. Obecně ke každému new musí být zase dispose.

Další věc byla, že to uvolňování fronty (program obchod) vypadalo, že je špatně. Ale když na to koukám znova, tak to asi funguje správně, jen je to napsané tak, že mně (nás) to zmátlo.

gna
Pascal › Dynamická datova štruktúra
4. 2. 2021   #387327

#18 doma22
Aha, ona jak je ta diskuze dlouhá, tak se v tom trochu ztrácím. Ten readln jen přeskočí řádek, tj. čeká na enter a nezáleží na tom, co zadáváš.

A Jerry má pravdu s tou frontou. Ty tam jakoby děláš 2 kroky a tím se ti to rozbije.

gna
Pascal › Dynamická datova štruktúra
3. 2. 2021   #387322

Rušení tam samozřejmě zůstane. Když dynamicky alokuješ paměť, tak ji potom musíš taky uvolnit. (Teda nemusíš, protože na všech moderních systémech se paměť alokovaná programem při jeho ukončení automaticky uvolní, takže v tomhle konkrétním případě na tom nesejde, ale jindy třeba jo.)

To, co o tom rušení píšu je, že zásobník nejdříve rušíš a pak ho vypisuješ. Po zrušení není co vypisovat. Možná to tak máš schválně, ale nedává to smysl. Nevím, co je na tom k nepochopení.

Za tím 'Zostalo nieco v zásobniku?' nevidím nic, co by mělo čekat na nějaké potvrzení, takže netuším o čem mluvíš. Jestli tam máš další readln, tak jsem ti už popsal, jak funguje a není snad problém to prostě zkusit.

gna
Pascal › Dynamická datova štruktúra
2. 2. 2021   #387320

Pokoušíš se vypsat obsah zrušeného zásobníku. Nevím, jestli je to pro kontrolu, že rušení funguje, nebo je to omyl a výpis měl před rušením.

repeat
...
until ...

{rusenie zásobniku}
...

writeln('Zostalo nieco v zásobniku?');
...
gna
Pascal › Dynamická datova štruktúra
1. 2. 2021   #387316

Mně to funguje :-) Dej si za ty ready ještě výpis, třeba to něco odhalí.

readln(akcia);
writeln('akcia >>', akcia, '<<');
...
readln(koniec);
writeln('koniec >>',koniec,'<<');
gna
Python › Python dědění z více tříd
1. 2. 2021   #387313

Fungování super je trochu zamotané a je potřeba, aby ty bázovky "spolupracovaly". 

class Dog():
  def __init__(self, dog_name, **kw):
    super(Dog, self).__init__(**kw)
    self.dog_name = dog_name

class Cat():
  def __init__(self, cat_name, **kw):
    super(Cat, self).__init__(**kw)
    self.cat_name = cat_name

class Mouse():
  def __init__(self, mouse_name, **kw):
    super(Mouse, self).__init__(**kw)
    self.mouse_name = mouse_name

class SecondClassMutant(Dog, Cat, Mouse):
  def __init__(self, mutant, mutant_color, dog, cat, mouse):
    super(SecondClassMutant, self).__init__(dog_name=dog, cat_name=cat, mouse_name=mouse)
    self.mutant_name = mutant
    self.mutant_color = mutant_color

Upřímně, já jsem vždycky všechny složitější případy vzdal. Nejjednodušší je nepoužít super. 

class SecondClassMutant(Dog, Cat, Mouse):
  def __init__(self, mutant, mutant_color, dog, cat, mouse):
    Dog.__init__(self, dog_name=dog)
    Cat.__init__(self, cat_name=cat)
    Mouse.__init__(self, mouse_name=mouse)
    self.mutant_name = mutant
    self.mutant_color = mutant_color
gna
Pascal › Dynamická datova štruktúra
1. 2. 2021   #387312

read(char) - Načte libovolný znak.
read(string) - Načte znaky do konce řádku. (Znaky nad maximální délku stringu se tiše přeskočí.) Samotný ukončovač řádku se nenačte a zůstává na vstupu.
read(integer|real) - Přeskočí bílé znaky na začátku a načte číslo ukončené bílým znakem. (Pokud je číslo ve špatném formátu, tak se vyhodí chyba.) Ukončovací znak se nenačte a zůstavá na vstupu. Bílé znaky jsou mezera/tabulátor/konec řádku.

readln - Udělá read a pak přeskočí na další řádek (tj. přeskočí data do konce řádku i následující ukončovač řádku)

Problém je v tom, co po čtení zůstává nezpracováno na vstupu a půjde do dalšího čtení.

Takže modelový příklad: 

// první průchod cyklem:
readln(char);    // zadám: X<Enter> -- OK, načte znak 'X' a přeskočí na další řádek
read(string);    // zadám: HAHA<Enter> -- OK, načte string 'haha', na vstupu zůstává <Enter>

// další průchod:
readln(char);    // Err, načte znak <Enter> z minula a čeká na další řádek, který přeskočí

Už v prvním průchodu můžeš být ve stejné situaci, pokud rovnou zadáš jen <Enter>. V obou případech jsi ztracený v tom, kam co zadáváš a program se chová divně.

Jednoduché řešení, jak se do toho nezamotat, je používat jen readln(string|cislo) pokud nic víc nepotřebuješ.

gna
Pascal › Dynamická datova štruktúra
30. 1. 2021   #387307

Ano, v obou programech máš stejný problém. Pokud rozdíl mezi read a readln nechápeš, tak prostě všechno zadávej po řádcích a načítej pomocí readln.

Rušení nepřesunuj na začátek, kde není co rušit. Jen píšu, že po tom rušení máš ještě výpis, který nemá co vypsat.

gna
Pascal › Dynamická datova štruktúra
30. 1. 2021   #387304

Tam, kde je read(koniec) místo toho dej readln(koniec); A nechápu význam toho readln na řádku před tím, ten bych úplně vyhodil.

Potom, za tím cyklem, máš rušení zásobníku a výpis zásobníku. Po zrušení není co vypisovat.

gna
Pascal › Dynamická datova štruktúra
29. 1. 2021   #387298

Problém je v tom dotazování na konec.

readln;
read(koniec);

Na vstupu ti zůstane Enter a pak se v dalším průchodu načte při volbě akce. Dej tam jen readln(koniec);

A potom když končíš, tak celý zásobník nejdřív zrušíš a pak ho vypisuješ.

gna
Python › Spirála kolem křivky zadané…
28. 1. 2021   #387295

Ta spirála jsou body na několikrát obkreslené kružnici, jejíž střed se posunuje. A může se posunovat jakkoliv. 

A = [-0.1646169553829357, -0.18045534297929358, -0.19607272004818602, -0.211354488132617, -0.22616904489940454, -0.24036624624003963, -0.25377639986609546, -0.26621030641288784, -0.27746107555189253, -0.287309176814374, -0.2955313683720342, -0.3019143406048014, -0.3062726740423563]
B = [0.13385167110565344, 0.13161004556697875, 0.12815132761818687, 0.1234273074581178, 0.11739746666382476, 0.11003213593352616, 0.10131707253912245, 0.09125949610772532, 0.07989522181968708, 0.06729724452652447, 0.053583847907859236, 0.038924841462667246, 0.023542804704085943]
# mene dementni cisla
A = [a * 1000 for a in A]
B = [b * 1000 for b in B]

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.azim = 90
ax.elev = 90


ax.plot(A, B)


r = 50
t = np.linspace(0, 100, 1000)
x = r * cos(t)
y = r * sin(t)
z = t
ax.plot(x, y, z)


count = 10  # pocet kruznic
detail = 40  # pocet bodu na kruznici
# puvodni krivku prolozim at ma dost bodu pro spiralu
aa = scipy.ndimage.zoom(A, count * detail / len(A))
bb = scipy.ndimage.zoom(B, count * detail / len(A))
# a pak kolem ni udelam spiralu
angles = np.linspace(0, count * 2 * np.pi, len(aa))
# s prohozenym X a Z at se otoci a jakoby navlekne na tu krivku
x = np.zeros(len(angles)) + aa
y = r * sin(angles) + bb
z = r * cos(angles)
ax.plot(x, y, z)


plt.show()

Připojen obrázek.

Připojen obrázek.

gna
Python › Spirála kolem křivky zadané…
28. 1. 2021   #387293

Asi střed té spirály posuneš na tu křivku :-)

gna
Python › Textové soubory
28. 1. 2021   #387292

   

>>> radek = 'Data jsou v souboru cislo.txt i s informacemi.'
>>> 
>>> 
>>> radek.split()
['Data', 'jsou', 'v', 'souboru', 'cislo.txt', 'i', 's', 'informacemi.']
>>> radek.split()[4]
'cislo.txt'
>>> 
>>> 
>>> zacatek = len('Data jsou v souboru ')
>>> konec = radek.find(' i s informacemi')
>>> zacatek, konec
(20, 29)
>>> radek[zacatek:konec]
'cislo.txt'
>>> 
>>> 
>>> import re
>>> re.findall(r'v souboru (\S+) i s', radek)
['cislo.txt']
>>> re.findall(r'v souboru (\S+) i s', radek)[0]
'cislo.txt'

gna
Python › Textové soubory
28. 1. 2021   #387289

To záleží na tom, co probíráte a na jakých znalostech máš stavět.

Můžeš text rozdělit na slova (str.split), najít pozici podřetězce (str.find), použít regex, ... Upřesni.

gna
Python › Pozadí obrázku
27. 1. 2021   #387282

Vkládáš pixel RGBA do obrázku ve formátu RGB . Když dáš v konvertu RGBA, tak to bude fungovat.

Ale už v tom savefig můžeš zadat transparent=True a nemusíš to upravovat "ručně".

gna
Python › Exception, pomoc s kodem
27. 1. 2021   #387281

Ano, ten break se provede hned při prvním průchodu, takže celkově je ten while nesmysl. Možná měl být odsazený až do toho exceptu. To je jeden z těch umělých příkladů, které jsou z principu nesmyslné, takže těžko říct, co všechno v tom kódu má význam.

Pointa je ale nejspíš v tom, že se ta vyjímka dá "pohltit".

Já jsem tu knihu letmo proletěl a moc se mi nelíbí, včetně té indické angličtiny. Možná přeskoč na jinou :-)

gna
Pascal › Náhodné desatinné čísla
26. 1. 2021   #387277

Tak na uložení budeš potřebovat datový typ, který zvládá desitnná čísla -- Třeba Real zjevně znáš.

Pak vygeneruješ ta čísla -- máš tady 3 způsoby.

A desetinná čísla jsou z principu nepřesná, tak při porovnávání budeš asi potřebovat nějakou toleranci/zaokrouhlování.

Jinak se na logice toho programu nic nemění.

gna
Python › Python Tkinter Treeview
26. 1. 2021   #387276

Přidej to zalomení do prvního názvu. Podle něj se nastavuje výška hlavičky.

gna
Pascal › Náhodné desatinné čísla
26. 1. 2021   #387266

To je část toho, co už tady je a s desetinnými čísly se tam nepracuje.

Ukaž mi program, kde generuješ desetinná čísla a nefunguje ti to. Pak ti můžeme říct, co děláš špatně.

gna
C / C++ › C++ program, nutnost, děkuji
26. 1. 2021   #387265

Pravděpodobně používáš funkci pro načtení slova (cin >> string?). Na načtení řádku můžeš použít getline.

gna
C / C++ › logicke OR
26. 1. 2021   #387264

Když c není 'q', tak je splněno (c != 'q') a cyklus pokračuje.

Když c je 'q', tak je splněno (c != EOF) a cyklus pokračuje.

Místo || (or) použij && (and).

gna
C / C++ › Proč porovnávání elementu z…
24. 1. 2021   #387256

Ještě mě napadlo, že pokud děláš debug build s kontrolou mezí polí, tak tím by se to dost zpomalilo. Ale pořád asi ne tolik, aby toto samo o sobě bylo úzké hrdlo programu.

gna
C / C++ › Proč porovnávání elementu z…
24. 1. 2021   #387255

Načtení intu z paměti, i kdyby nebyl v cache, a otestování jeho hodnoty je záležitost nanosekund. Pokud ti tam program tráví hodně času, tak prostě proto, že to tak máš naprogramované.

gna
Delphi › Registry a daná aplikace
23. 1. 2021   #387250

Ale asi ten instalátor neděláš jen pro sebe. Koukal jsem, co je zač to DS9Fallen a to bude taky 32-bit, takže ve verzi registrů problém nebude.

gna
Pascal › Náhodné desatinné čísla
22. 1. 2021   #387248

Já nevím, co víc k tomu napsat. Ukaž mi příkaz, který ti nefunguje, napiš co dělá a co cheš, aby dělal a já ti ho opravím.

gna
Delphi › Registry a daná aplikace
22. 1. 2021   #387247

Na vyhledání zaregistrované aplikace s možností automatické odinstalace můžeš použít toto:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID}\DisplayName
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID}\InstallLocation

Nevím, jestli tam ten tvůj 32-bitový instalátor uvidí 64-bitové programy. Jakou verzi registů chceš viděť se dá určit v RegOpenKeyEx, což Delphácké TRegistry asi nemají, takže budeš muset použít přímo WinAPI.

gna
Pascal › Náhodné desatinné čísla
22. 1. 2021   #387243

To je v pohodě, nikdo učený z nebe nespadl.

To :1:3 se týkalo indexování pole. To pole prostě má N prvků a indexy jsou celočíselné. Pokus o formátování realu jako indexu tam nemá smysl. Ve writeln jako formátování výpisu je to vpořádku. 

pole[x:1:3] := neco;  // nene
writeln(y:1:3); // vpoho

Tady to nemáš, tyhle programy jsou vpohodě. Chtěl jsem vidět ten problematický, kde ti něco pořád vrací nulu. (A na vkládání kódu tady používej v editoru tlačítko [<?] ať je to čitelnější.)

K těm desetinným číslům -- V tom prvním programu používáš random bez parametrů, který vrací desetinné číslo 0<=x<1, a random s parametrem, který vrací celé číslo 0<=x<N. V tom je možná to nepochopení jeho fungování.

Pokud chceš desetinné číslo ve vlastním rozsahu, tak si ho můžeš vyrobit násobením nebo dělením čísla získaného z random

random * 10; // nasobim male desetinne cislo
random(10000) / 1000; // delim velke cele cislo
gna
JavaScript, AJAX, jQuery › Enter do RexExp
21. 1. 2021   #387239

To lomítko vlastně ani nemusí být zdvojené.

gna
JavaScript, AJAX, jQuery › Enter do RexExp
21. 1. 2021   #387238

   

\n (respektive \\n ve stringu)

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý