Přidej to zalomení do prvního názvu. Podle něj se nastavuje výška hlavičky.
Příspěvky odeslané z IP adresy 213.211.51.–
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ě.
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).
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.
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é.
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.
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.
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.
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
To lomítko vlastně ani nemusí být zdvojené.
\n (respektive \\n ve stringu)
Text je nejspíš bílý na bílém pozadí a čára je mimo obrázek :-D
Random(10000) vrátí celé číslo od 0 do 9999, což po vydělení 1000 bude desetinné číslo od 0 do 9,999. Samozřejmě s omezenou přesností a ne vždy zrovna na 3 des. místa.
Zkusil jsem to zkompilovat, abych se podíval, kde ti to blbne, ale vzdal jsem to u opravování asi desáté chyby. Tak nevím, jak to tobě něco generuje, pokud to nejde zkompit a spustit.
Necheš pevnou alphu na celý obrazek, ale per-pixel alphu/masku z obrázku. Na další manipulace prolítni dokumentaci PIL.Image, těch funkcí tam není moc.
img1 = Image.open('Earth.png')
img2 = Image.open('annulus.png')
comp1 = Image.new('RGBA', (500, 500))
thumb = img1.copy()
thumb.thumbnail((200, 200)) # resize se zachovanim pomeru stran
pos = ((comp1.width - thumb.width) // 2, (comp1.height - thumb.height) // 2)
comp1.paste(thumb, pos)
comp2 = Image.new('RGBA', comp1.size)
thumb = img2.copy()
thumb.thumbnail((400, 400))
pos = ((comp2.width - thumb.width) // 2, (comp2.height - thumb.height) // 2)
comp2.paste(thumb, pos)
out = Image.alpha_composite(comp1, comp2)
comp1.show()
comp2.show()
out.show()
S tím prstencem je problém v tom, že to není jen prstenec, ale čtverec. Takže do toho budeš muset nějak zakomponovat průhlednost. Nejednoduší je to "oříznout".
...
img = np.ma.masked_where(img < 0.2, img)
Co myslíš sloučením obrázků?
pole[real:1:3] je nesmyl a překvapuje mně, že to vubec jde. Random vždycky vrací celé číslo a takhle z něj real neuděláš.
pole[index] := random(10000) / 1000;
Kreslil bys samozřejmě programově. Není problém udělat jednu stranu a tu pak otočit. Podle toho, co přesně chceš, já bych to viděl spíš na zobrazení předem připraveného obrázku.
Už v původní Wirthově specifikaci Pascalu je řečeno, že takhle se určuje návratová hodnota funkce.
Pascal User Manual and Report: ISO Pascal Standard
Within the function declaration there must be an executed assignment (of the result type) to the function identifier to "return n" the result of the function.
Rozhodně to není specialita Turbo Pascalu, i když asi můžou existovat varianty Pascalu, kde to takhle nejde.
K "duplikácii nazvou" nedojde, protože nedefinuješ "dve veci". Je to jen příkaz přiřazení, ne definice něčeho nového.
Já tam vidím int a Project1.exe ve stejné složce, takže v tom asi problém nebude.
To jsem se nepodíval na tu cestu. Nakonec v tom ten problém asi bude, že zdrojový a cílový int jsou ta samá složka.
Je řeč o tom tvém instalátoru.
- Ten smaže "c:\program files\infiniteloop\DS9TheFallen\int"
- Znovu vytvoří "c:\program files\infiniteloop\DS9TheFallen\int"
- A zkopíruje obsah "<slozka_kde_je_exac_instalatoru>\int" do "c:\program files\infiniteloop\DS9TheFallen\int".
Třetí bod je to, co nefunguje. Tak se ptám jestli tam tu zdrojovou složku máš.
První obrázek naznačuje, že možná ten instalátor máš v cílové složce, což samozřejmě nemůže fungovat. A druhý obrázek je úplně na hovno.
Já tam vidím int a Project1.exe ve stejné složce, takže v tom asi problém nebude.
Pokud trváš na tom, že exáč je v system, tak tam musí být i ta zdrojová složka int.
myZdroj := ExtractFilePath(Application.ExeName) + 'int\*.*';
A SHFileOperation v případě chyby vrací chybový kód, tak z něj by možná šlo něco vyčíst.
To je standardní způsob a měl by fungovat všude. Tak prostě Pascal funguje. Konkrétně toto ti nejde zkompilovat, protože tu funkci máš deklarovanou špatně a překladač ti v chybovém hlášení nejspíš i říká, kde přesně je problém.
Já si Windows a Delphi instalovat nebudu, abych se podíval, kam se to kompiluje :-) Byl to jen tip, který si musíš vyhodnotit sám.
Pascal v ifu vyžaduje pravdivostní hodnotu a nedělá implicitní konverze, takže z řetězcem si tady neporadí. Můžeš to napsat takhle
if meno <> '' then {meno neni prazdny retezec}
...
Ale to je pravidlo Pascalu, ne nutně obecně programování. Třeba Python vyhodnotí prázdný řetezec jako False a neprázdný jako True, takže tam by taková podmínka fungovala.
Nejsem si jistý správností použití PChar na dočasné proměnné, ale ten kdo ti poradil asi víc, co dělá. Jinak tam nic okatého nevidím.
Možná bude problém v tom, že to kopíruje ze složky int ve složce, kde je exáč. Nevím, v čem to kompiluješ, ale pravděpodobně umístění exáče bude něco jako win32\debug\program.exe a win32\release\program.exe. Takže tam musí být i ta tvoje složka int (nebo přesuň exáč).
To [100, 20] jsou souřadnice v pixelech? Tak pokud má ta šachovnice třeba velikost políčka 10 pixelů, tak jsi na políčku [100/10, 20/10] => [10, 2] (což je teda mimo šachovnici)
sloupec := (pointer_x - sachovnice_x) div sirka_policka;
radek := (pointer_y - sachovnice_y) div vyska_policka;
Ale na takovou drobnost se asi neptáš. Takže nevím.
IOUtils do uses na začátku souboru a Copy do funkce obsluhující kliknutí na Install.
Ale než psát vlastní installer, tak možná mrkni na Inno Setup, NSIS, Windows Installer a podobné programy pro vytváření instalátoru.
Je kolmá, ale zase máš "zmáčknuté" zobrazení. To sakra na těch hodnotách nevidíš?
uses System.IOUtils;
...
TFile.Copy('odkud', 'kam', true);
Není mi jasné, co tím myslíš. [0,0] je vlevo nahoře. Grafický mód (rozlišení) můžeš vybrat při inicializaci grafiky, nebo později zjistit šířku a výšku pomocí GetMaxX a GetMaxY.
Každý objekt bude tam, kam ho umístíš. Pro funkce, které kreslí na aktuální pozici kurzoru, můžeš jeho pozici zjistit pomocí GetX a GetY, nebo nastavit pomocí MoveTo.
Co konkrétně na tom potřebuješ vysvětlit?
url = image.get_attribute('src')
response = requests.head(url)
response.status_code == 200
HTTP metoda HEAD stahuje jen hlavičky. Kód 200 znamená OK. Ve výsledku to zjišťuje jestli ten obrázek existuje.
Jestli chceš střed otáčení uprostřed toho polygonu, tak nevím, jestli na to je něco chytřejšího, ale jednoduché řešení je posunout ho na [0,0] (nebo rovnou definovat tak ať je jeho střed na nule), pootočit a pak vrátit zpátky.
Samozřejmě tím, že nemáš poměr stran zobrazení 1:1, tak bude trochu pomačkaný.
center_x = (min(x) + max(x)) / 2
center_y = (min(y) + max(y)) / 2
t_start = ax.transData
c = mpl.transforms.Affine2D().translate(-center_x, -center_y)
r = mpl.transforms.Affine2D().rotate_deg(-45)
t_end = c + r - c + t_start
Když na to koukám víc, tak ještě tam máš ctr místo crt a řetězce v uvozovkách místo v apostrofech.
Vyplněný kruh můžeš vykreslit jako vyplněnou elipsu se stejně dlouhými poloosami.
SetColor(Green);
SetFillStyle(SolidFill, Blue);
FillEllipse(100, 100, 50, 50);
Příště si odpusť ty řeči okolo a jdi rovnou k věci.
Defunuješ proměnnou OutText a chceš použít funkci OutText. Nevzpomínám si, že by to Pascal dokázal nějak kontextově rozlišit, takže tam máš kolizi názvů.
OutText vykreslí text na aktuální pozici a MoveTo umožňuje nastavit aktuální pozici. Takže aby to vůbec mělo smysl, tak MoveTo musí být před OutText.
pole[index] = hodnota;
if (delky[i] > delky[i+1]) {
int pom = delky[i];
delky[i] = delky[i+1];
delky[i+1] = pom;
}
Nevím, co jsi zkoušel, ale v nastavení Appearance & Behavior je možnost změnit Theme. Mělo by tam být i světlé téma (Light).
Jednodušší bude, když budeš mít ty délky v poli. A to pole pak seřadíš.
Primitivní algoritmus řazení je porovnávat sousedící prvky pole a v případě potřeby je prohodit. A to celé opakovat tak dlouho, dokud není pole seřazené (v posledním průchodu nebylo potřeba nic prohodit).
Porovnání můžeš udělat if-em.
if (pole1[i] > pole2[j]) {
pole3[i] = pole1[i];
} else {
pole3[i] = pole2[j];
}
#4 Keyzio
Ordinální (pořadová) hodnota znaku je to, co jsem popsal. Jestli to je to, co chceš, tak to funguje správně.
Pokud chceš načítat (víceciferná) čísla, tak nedělej vlastní konverzi (i když se takovými low-level věcmi hodně naučíš), ale použij funkci pro načtení čísla. Třeba scanf("%d", &intpromenna).
Pokud někde opravdu potřebuješ vlastní konverzi znaku/číslice na číslo, tak neodečítej nicneříkající 48, ale zase znak '0'.
Tenkrát se používalo register_globals, které automaticky vytvářelo proměnné pro přijatá data. Stačí tam doplnit $_POST[] a ten for je tam takovej ošklivej :-)
<?php
if (@$_POST['odeslano'] === 'ano') {
$soubor = fopen('./data.csv', 'w');
foreach ($_POST['data'] as $radek) {
fwrite($soubor, implode('|', $radek) . "\n");
}
fclose($soubor);
}
echo '<form method="post">';
$radky = file('./data.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($radky as $i => $radek) {
$radek = explode('|', $radek);
foreach ($radek as $j => $hodnota) {
$escaped = htmlspecialchars($hodnota);
echo '<input type="text" name="data[' . $i . '][' . $j . ']" value="' . $escaped . '" />';
}
echo '<br>';
}
echo '<br><input type="hidden" name="odeslano" value="ano" /><input type="submit" />';
echo '</form>';
?>
Jednorázovou úpravu 140 záznamů bych asi nijak extra neřešil. Ale šlo by třeba importovat CSV do dočasné tabulky a udělat jeden UPDATE s JOINen (nebo subselectem).
Nemůžeš jen napsat zadání. Obzvlášť u triválního úkolu na něco, co jste nepochybně probírali. Co přesně nevíš?
Délka řetězce - String.length()
Část řetezce - String.substring()
Druhá odmocnina - Math.sqrt()
Mocnina - Math.pow() nebo násobení
No, neměň jejich šířku, nebo ne tak hodně. Mně se to nechce moc zkoumat, ale toto vyprodukuje co asi chceš.
# ax5
x = np.linspace(-1, 1, 100)
y = -x**2
ax5.set_ylim(-1.02, 0.3)
width_l = ax5.get_ylim()[1] - ax5.get_ylim()[0]
for t in np.linspace(0, 1, 40):
length = -0.1*width_l*t
ax5.plot(*get_parallels(length=length), color=cmap(t/2 + 0.25))
# ax6
x = np.linspace(-3, 3, 100)
y = -(1/4*x**4 - 1.6*x**2)
ax6.plot(x, y)
ax6.set_xlim(ax6.get_xlim()[0]-0.5, ax6.get_xlim()[1]+0.5)
ax6.scatter(1/2*(ax6.get_xlim()[0] + ax6.get_xlim()[1]), 1.2, marker = 'o', s=900, facecolors='none')
width_l = ax6.get_ylim()[1] - ax6.get_ylim()[0]
for t in np.linspace(1, 0, 40):
# XXX hardcoded
ax6.plot(*offset_curve(ax, x, y, -1000*t), color=cmap(t/2 + 0.25))
plt.show()
Ten přechod je plynulý, ale čáry jsou moc tlusté, takže je vidět jen/hlavně ta posledné světlá.
$("#response").html(msg);
Je otázka, co s tím datumem potřebuješ dělat, ale výběr v datepickeru můžeš odchytit v onSelect a data na server můžeš poslat AJAXem.
<?php
if (isset($_GET['action'])) {
if ($_GET['action'] == 'setdate') {
echo 'Zvoleny datum: ' . $_GET['date'];
}
exit;
}
?>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$(function() {
$("#datepicker").datepicker({
onSelect: function(date) {
setDate(date);
}
});
});
function setDate(date) {
$.ajax({
data: { action: 'setdate', date: date }
}).done(function(msg) {
$("#response").text(msg);
});
}
</script>
</head>
<body>
<div id="datepicker"></div>
<br>
<div id="response">???</div>
</body>
</html>
Dokumentace je tady. Pošleš HTTP dotaz na nějakou adresu s nějakými parametry a dostaneš odpověď jako XML.
Např. http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_std.cgi?ico=27074358
Requests samozřejmě JavaScript neinterpretuje.
V prohlížeči si otevři Developer Tools a na záložce Network bys měl vidět ten API request vyvolaný JavaScriptem. A ten dělej v tom svém programu.
Není mi jasné v čem je problém. Předpokládám to otevření PDF.
Windows CMD má příkaz start, který otevře soubor v programu asociovaným s danou příponou. Takže nejjednodušeji asi něco jako toto:
os.system("start cesta_k_souboru.pdf")
Co máš a na čem ses zaseknul?
V té funkci máš blbě odsazení a netuším co myslíš tím zobrazením výsledku.
To co se má provést vždycky, prostě nebude v podmíněném bloku.
Ale dejme tomu, že ty podmínky mají nějaký smysl a pak prostě můžeš tu testovanou proměnnou nastavit na požadovanou hodnotu.
#4 Mark123
A co na tom neumíš udělat? I kdybys to měl matlat appendama, tak je to věc na minutu.
sachovnice = []
for i in range(n):
radek = []
for j in range(n):
radek.append(" ")
sachovnice.append(radek)
sachovnice[0][0] = "!"
Už potřetí je tady stejné zadání a pokaždé nemáte hotový ani řádek.
Tkinter neumí načíst JPG, můžeš na to použít PIL.ImageTk.
Nevím, co přesně tím myslíš, ale obecně můžeš reagovat na různé události a implementovat tak výběr oblasti.
import tkinter as tk
import tkinter.filedialog as fd
def main():
root = tk.Tk()
canvas = tk.Canvas(root, width=640, height=480)
canvas.pack()
image = canvas.create_image(0, 0, anchor=tk.NW)
selrect = canvas.create_rectangle(0, 0, 0, 0)
filename = fd.askopenfilename(filetypes=[("GIF images", ".gif")])
if filename:
img = tk.PhotoImage(file=filename)
canvas.itemconfig(image, image=img)
def selstart(event):
canvas.coords(selrect, event.x, event.y, event.x, event.y)
def selupdate(event):
x1, y1, x2, y2 = canvas.coords(selrect)
canvas.coords(selrect, x1, y1, event.x, event.y)
canvas.bind("<Button-1>", selstart)
canvas.bind("<B1-Motion>", selupdate)
root.mainloop()
if __name__ == "__main__":
main()
No, seznam je snad jasný.
seznam = [1, 2, 3]
hodnota = seznam[index]
Takže třeba řádek může být list políček a šachovnice list řádků.
sachovnice = [
[11, 12, 13],
[21, 22, 23],
[31, 32, 33]
]
hodnota = sachovnice[cisloradku][cislosloupce]
Akorát ho vytvoříš a naplníš dynamicky. Je to jen šaškování s indexy, to bys měl zvládnout a ptát se konkrétně.
Ta úvaha s breakem byl nějaký brain-fart. To sice jde, ale samozřejmě by se taková situace řešila přímo v hlavičce toho cyklu -- while pocet < maximum. To jen pro doplnění
Cyklus while se dá ukončit příkazem break. Takže bys tam mohl mít počitadlo a po dosažení nějakého maxima to breaknout.
Ale spíš bych doporučil prostě použít cyklus for.
for _ in range(10):
provede se 10x
A při vyhodnocování odpovědí zase budeš aktualizovat nějaké počitadlo správných odpovědí.
A máš tam 6x stejný kod, zkus podmínit jen to, co se liší.
import random
print("="*100)
print("Nasobeni = 1")
print("Scitani = 2")
print("Odcitani = 3")
operace = int(input("Vyber si : "))
print("="*100)
print("Lehka = 1")
print("Tezka = 2")
obtiznost = int(input("Vyber si obtiznost: "))
if operace == 1:
operator = "*"
maxoperand = 9 if obtiznost == 1 else 20
elif operace == 2:
operator = "+"
maxoperand = 30 if obtiznost == 1 else 200
else:
operator = "-"
maxoperand = 30 if obtiznost == 1 else 200
spatne, spravne = 0, 0
for _ in range(10):
a = random.randint(1, maxoperand)
b = random.randint(1, maxoperand)
priklad = "%d %s %d" % (a, operator, b)
vysledek = eval(priklad)
print(priklad)
odpoved = int(input("Kolik to je?: "))
if odpoved == vysledek:
print("Správně")
spravne += 1
else:
print("Špatně")
spatne += 1
print("Správně", spravne)
print("Špatně", spatne)
Mám na mysli to, že třeba pro hodnotu 0 ten cyklus projde [-1, 0, 1]. Takže bude potřebat vyloučit/ošetřit hodnoty mimo rozsah.
Můžeš tu oblast prostě projít dvojitým cyklem.
for yy in range(y-1, y+2):
for xx in range(x-1, x+2):
if pole[yy][xx] != volno:
obsazeno
Akorát to trochu uprav, aby ti souřadnice nevylezly mimo pole.
Co znamená více předmětů najednou? Jak přesně to má fungovat?
To opakovaně počítá průměr nějakého počtu čísel, takže to asi zadání splňuje a netuším na co se ptáš.
Jen odkomentuj to nulování sumy.
A ty známky nepotřebuješ mít uložené, tak zruš to pole a s tím i omezení počtu známek.
A pro ukončení by asi počet 0 dával větší smysl než 100.
Nechápu, co myslíš vypisováním na jeden řádek. Vstup na jednom řádku bude fungovat.
Počet máš v cnt a vypisuješ sum/n.
Nebo možná až dvojnásobek, pokud AreaSeries potřebuje v obou setech stejný počet bodů.
#5 Kubas
FunctionSeries dělá to samé, takže jich bude stejný počet.
Zřejmě místo FunctionSeries s funkcí, vygeneruješ jednotlivé body a použiješ AreaSeries s těmi body.
Zkušenost s tím nemám, ale po letmém zkouknutí dokumentace bych řekl, že chceš AreaSeries.
Ano, regex sám o sobě nic nenahrazuje, jen napasuje popsaný vzor na data. Když to má začátek/prostředek/konec (ABC), tak to musíš popsat všechno a pak si z toho vytáhneš, co chceš (AC).
U některého z minulých dotazů jsi měl nějakou vizualizaci/vysvětlení regexu, tak se tam na to podívej.
,---------------- začátek skupiny
|,--------------- libovolný znak
||,-------------- 0 nebo více opakování
|||,------------- co nejkratší match
|||| ,------- konec skupiny
|||| |
vvvv v
(.*?(;|$)){10} -- 10 opakování
^^^^^
|||||
||||`-------- konec skupiny
|||`--------- konec dat/řádku
||`---------- nebo
|`----------- středník
`------------ začátek skupiny
Takže jsi správně poznamenal, že ten tvůj pokus je nesmysl :-)
Nevím kde, jak a k čemu to používáš, tak nevím, jestli půjde ten prostředek nějak vynechat, ale obecně máš prostě AA BB CC a vezmeš si z toho jen AA a CC.
^(([^;]*;){3}).*;(([^;]*;){3})$
Začátek je ve skupině 1 a konec ve skupině 3.
.*KW.*
Pokud ty názvy nejsou nějaké pakárny, tak to můžeš hodit rovnou do toho selektoru, ne? Místo url rovnou image1.
Jinak ten výsledek můžeš projít a podle libosti vyfiltrovat.
$('span[style*="url"]').filter(function() {
return $(this).css('background').includes('image1');
});
Ono záleží na tom jaké funkci v jakém jazyce to předhodíš. Nejspíš bude potřeba to ještě ukotvit -- na začátek ^ -- a výsledek bude v grupě 0 (všechno co se matchlo, tj. těch N hodnot).
Pak je ještě otázka, co s tím chceš dál dělat, jestli nebude lepší prostě nějaký string.split.
A jestli je to opravdu CSV, tak hodnoty s oddělovačem budou v uvozovkách, a uvozovky v hodnotách budou zdvojené, a bůhví co ještě. To se prostě regexama nedělá.
Počet opakování jde určit pomocí {počet} / {od,do}.
(.*?(;|$)){3}
Já bych ještě doplnil, že r"" vypíná escape sekvence, takže v tom stringu nemáš odřádkování, ale doslova lomítko-er-lomítko-en.
Po každém tahu se nastavuje, že je na řadě další hráč. Takže ten, který je na řadě, není ten, který udělal konečný tah.
Žádná randomizace tam není. Máš výšku a vynásobíš ji koeficientem odrazu.
Výška je v metrech, když je pod 1m, tak ji vypíšeš v centimetrech.
if (vyska < 1.0)
cout << vyska * 100 << " cm";
else
cout << vyska << " m";
V cyklu budeš přičítat nebo násobit. Napiš, co přesně nevíš.
Tady je to s diagramy, mělo by z toho být jasné, jak různé cykly fungují:
Teda #include, ne #import
Nainstaluj ty knihovny pipem do standardního umístění, nebo je zkopíruj k tomu programu, nebo Pythonu řekni kde jsou - PYTHONPATH před spuštěním, sys.path za běhu.
PyCharm instaluje knihovny "bokem" a při spouštění programu Pythonu říká, kde jsou. Jinak o nich Python neví.
Já jsem myslel, že win32api je součástí Windowsové verzi Pythonu. Zjevně není, ale měl bys mít k dispozici ctypes, takže by toto mělo chodit i bez doinstalovávání knihoven.
import ctypes
@ctypes.WINFUNCTYPE(ctypes.c_int, ctypes.c_uint)
def zavirame(ctrl_type):
...
ctypes.windll.kernel32.SetConsoleCtrlHandler(zavirame, True)
Jinak proces jde vždycky sestřelit tak, že na to nemůže reagovat a bylo by lepší věci dělat tak, abys to nepotřeboval.
Ve Windows? Toto by mohlo chodit:
import sys, win32api
def zavirame(ctrl_type):
print('nashledanou')
sys.exit(0)
win32api.SetConsoleCtrlHandler(zavirame, True)
Pochybuju, že by šlo nastavit formát v jakém se data kopírují do schránky i o tom, že by se to kopírovalo v takovémto formátu. Schválně to zkus vložit do jiného programu, jestli to bude stejné. Při nejhorším holt budeš dělat ten export, tj. ukládat do souboru.
Každopádně Excel má nějaké možnosti nastavení formátu dat, tak buď to zprasí až Excel, nebo to v něm půjde aspoň přeformátovat. Tak koukni do nastavení. Já ho nepoužívám, tak nevím.
Načte to celý obsah souboru (pokud existuje).