#15 oxidián
Můžeš prosím ukázat (odchytit obrazovku, dát odkaz) ve které nápovědě jsi to viděl jinak? Fakt mě to zajímá, díky...
Příspěvky odeslané z IP adresy 88.103.236.–
#1 oxidián
A co si takhle přečíst nápovědu, kde je jasně napsáno, že FileSize nefunguje pro textové soubory?
FileSize je velikost typového souboru v položkách, textový soubor nemá položky...
Viz například zde: https://www.trsek.com/pascal/FileSize
#1 kuba
Jo a ještě jeden dotaz:
Následně jsem dostal pětku za neodevzdání programu. Kde je podle vás pravda ?
Takže jsi program neodevzdal? Vždyť jsi ho přece napsal s tou svojí variantou spojených řešení, jak tvrdíš... Proč jsi ho teda neodevzdal? Vždyť jsi mohl dostat třeba aspoň trojku za postup řešení...
Takže kde je pravda my určit nemůžeme ani kdybychom chtěli.
#1 kuba
Jen taková poznámka,
"To samé tvrdí u trojúhelníka, který odpovídá definicím pravoúhlosti a rovnoramennosti"
Ty umíš "uživatelsky zadat strany" rovnoramenného pravoúhlého trojúhelníka? Jaké jsi prosímtě zadal strany?
PS: co znamená "vyplyvnout"? Já znám jenom vyplynout nebo vyplivnout...
#1 Dominik
zkus:
print("Vaše čísla jsou ", str(list1).strip('[]'))
nebo cokoliv jiného najdeš...
Omlouvám se za odkaz, tady je přímý link na tu správnou verzi:
http://netcologne.dl.sourceforge.net/project/camdesk/1.2/camdesk-1.2.1-vb-source.zip
Protože nemám VB překladač, nemůžu si (verze pro windows) upravit tento program: https://sourceforge.net/…mdesk/files/?… (v licenci - jestli jsem to správně pochopil to autor dává k dispozici bez omezení)
Po spuštění se zobrazí obraz z kamery pouze 320x240 pixelů.
Ve zdrojáku jsou tyto hodnoty uvedeny, tak věřím, že by tam stačilo nastavit 1024x768 (nebo aspoň 800x600) a mohlo by to chodit.
Byl by prosím někdo tak hodný a zkompiloval by mi ten program ve verzích 800x600 a 1024x768? (Nevím, jestli to pak v té větší kvalitě bude stíhat...)
#3 anonym
Pokud umíš v Pascalu, tak si ten soubor otevři jako textový a přečti z něj cyklem jeden znak tolikrát, kolikáté číslo potřebuješ.
Ten přečtený znak převeď na celé číslo (buď odpovídající procedurou val nebo funkcí ord+posun na nulu) a máš hotovo...
Inu myslím, že hlavně ví co nechce...
Nechce se to sám naučit...
Prázdniny končí, blíží se reparáty, no a někde to řeší třeba zadáním programu, který je potřeba odevzdat...
#2 hlucheucho
Špatně jsi to četl, on nepotřebuje poradit jako to má udělat...
On jenom nesouhlasí s tím, že někdo určil, že součástí vzdělání na jeho škole je i znalost programování a zdá se mu morálně přijatelné vyřešit to tak, že si to nechá vyrobit od někoho, koho to naopak baví. Aby uspěl, musí se ovšem tvářit tak, že to udělal sám, takže o té cizí práci zřejmě bude muset něco říct, proto to musí být srozumitelně popsané v komentářích.
Nenastavuj počet cyklů, použij cyklus s podmínkou...
Dokud se v textu nachází < tak dělej...
while pos('<',radek)>0 do
begin
....
end;
Každopádně bych asi zkusil spíš použít modernější nástroje nějaký ten pchar nebo jaksetojmenuje, což je délkou neomezený dynamický řetězec, do něj bych to ze souboru naházel a pak v tom jednom řetězci odstraňoval... Tím se vyhneš tomu, že je nějaký HTML příkaz roztažený přes víc řádků...
#1 ladislaf
bubble sort je popsán na milionech stránek, tak si to tam nastuduj a aplikuj, v čem je problém?
např. zde, včetně animace: https://www.algoritmy.net/…/Bubble-sort
#3 MišelWu
Jestli nemáš tušení, co dělá cyklus FOR, tak si to nastuduj. Zdrojů informací máš k dispozici spoustu, kromě nápovědy v prostředí, ve kterém programuješ, je jich plný internet - namátkou:
http://www.itnetwork.cz/programovani/vbnet/vbnet-zaklady/visual-basic-vb-net-tutorial-cykly-for-while/
https://msdn.microsoft.com/cs-cz/library/5z06z1kb.aspx
http://www.soom.cz/clanky/155--Visual-Basic-Dil-4-Prace-s-Cykly
#1 baisikl
Asi někde děláš něco špatně. Právě jsem zkusil vytvořit nový obrázek a zadal jsem 50mm x 80mm. Měřil jsem nástrojem měření šířku a výšku, ukazuje mi to 50mm a 80mm (plus nějaké zaokrouhlené drobné, protože bitmapový obrázek nemá základní jednotku v mm). Když to vytisknu, má to víceméně přesně 5cm x 8cm.
PS: na monitoru nemáš co měřit, protože každý monitor má jiné rozlišení a navíc si můžeš přece obrázek libovolně zvětšovat či zmenšovat lupou.
Syntakticky je to správně, nemůže to žádnou chybu házet...
#1 El97za
A kdybys náhodou sem ještě nakoukla, tak abys porozumněla, co myslím těma menšíma kouskama:
1. načti jedno číslo a zjisti, jestli je dělitelné třemi. (například uživatel zadá 47, program vypíše 47 není dělitelné třemi, uživatel zadá 48, program vypíše 48 je dělitené třemi).
2. načti jedno číslo a zjisti čím vším je dělitelné (například uživatel zadá 28 a program vypíše 1, 2, 4, 7, 14, 28 nebo zadá 31 a program vypíše 1, 31)
3. načti jedno číslo a vypiš jestli je to prvočíslo (například uživatel zadá 28 a program vypíše 28 není prvočíslo a nebo zadá 31 a program vypíše 31 je prvočíslo)
3. no a pak načti jedno číslo a vypiš seznam prvočísel od 1 do zadaného čísla (například uživatel zadá 40 a program vypíše 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37)
PS:
nápověda:
x := 47 mod 3; {v proměnné x bude zbytek po dělení třemi nebo-li 2}
x := 48 mod 3; {v proměnné x bude zbytek po dělení třemi nebo-li 0}
#1 El97za
Podle mě nemáš problém s modem, ale s tím, co chceš spočítat a jak toho chceš dosáhnout...
Zkus to po menších kouscích.
To ovšem předpokládá, že se to chceš naučit a ne jen odevzdat domácí úkol...
Párkrát už jsem někomu zkoušel něco vysvětlit přes tento server, to ale moc nefunguje, tak doporučuju ukecat kamaráda (spolužáka), ať ti s tím pomůže.
PS: Když jsem na to jen zlehka nakoukl, tak špatně je tam snad všechno. Například základní nesmysl - mod je zbytek po dělení celých čísel. Ty se ho pokoušíš aplikovat na reálná čísla.
Další nesmysl - asi jsi zamýšlela v nějakém poli 30000 čísel prozkoumat a zapsat, které z nich je prvočíslem a které ne. Nebylo by jednodušší si do nějakého pole ukládat jenom ta prvočísla, pokud vůbec je potřeba je ukládat (když podle zadání se mají jen vypsat)...
#1 Ondra
Žebys myslel Posterizaci?
Někdo jiný by našel chvilku a pomohl mi prosím?
Zdrojový kód programu je zde: http://sourceforge.net/…zip/download
Bylo by možné provést takovou úpravy, aby místo výchozího rozměru okna 320x240 bylo přednastaveno 1024x768?
Je to otravné, protože při každém spuštění to musím měnit...
Děkuji předem...
#1 Ivette
Rozměry pro tisk se volí podle rozlišení tiskárny. Standard je 300dpi (obr. bodů na palec).
To vše se zadává při definici velikosti plátna ve Photoshopu. Když to uděláš, vyjde ti plátno 17717x23622 bodů. To už je hodně velký balík dat a počítač dostane docela zabrat...
Otázkou je, jestli pro to, co chceš dělat, je Photoshop vhodný - když to není tajné, co budeš tvořit?
Na tyhle "velké" věci bývá totiž vhodnější vektorový editor...
http://math.feld.cvut.cz/pospisil/m2m3/cviceni3.html
http://forum.matematika.cz/viewtopic.php?id=47422
a spoustu dalších...
http://www.strejda-google.cz/#vrstevnice+funkce%2C+extr%C3%A9my
#10 Romík644
Ty si odporuješ, na jednu stranu píšeš, že zkoušíš něco dělat a na druhou zas "nemáš vůbec nic"??? Tak jak to teda zkoušíš? Jenom v hlavě?
Tak jestli opravdu chceš pomoct, tak makej - začnem od jedoduchých věcí:
1. napiš program, který do jedné proměnné uloží náhodné číslo od 1 do 6 a vypíše ho. Až to budeš mít, zkopíruj to sem. Když něco nevíš, zkopíruj sem co máš a ptej se... (kontrola: spustíš program a on vypíše třeba 5, spustíš ho podruhé, vypíše třeba 2)
2. uprav ten předchozí program tak, aby to sám zopakoval 10x, tzn vypíše celkem 10 náhodných čísel od 1 do 6. (kontrola: spustíš program a on vypíše 1 4 2 5 5 1 6 4 3 4)
3. uprav ten předchozí program tak, že spočítá a vypíše součet těch deseti vypsaných čísel
(kontrola: spustíš program a on vypíše 1+4+2+5+5+1+6+4+3+4= 35)
To prozatím stačí...
Napiš si obecně vzorec pro výpočet objemu kužele v závislosti na ω.
Pak to obecně zderivuj podle ω a najdi hodnotu, pro kterou je tato výsledná rovnice rovna nule. Tím najdeš extrém. Když to zderivuješ podruhé, zjistíš, jestli je to maximum nebo minimum (jestli je menší/větší jak nula)...
nechápu assembler celkově
Tak to jsi asi v té škole nedával pozor ne?
Nebo-li typická situace dnešní běžné školy: žáci chodí do školy, ale protože je to, co se tam učí nezajímá a učitelé odmítají pochopit, že žáky nemají učit to, co je nezajímá, dokonce si dovolují po žácích chtít aby předvedli, co se je v hodinách snažili ze všech zbývajících sil naučit, tak žáci zkoušejí, jestli by to někdo hodný neudělal za ně. A když náhodou neudělá, tak ho zmydlí, nebo mu aspoň vyčiní (v případě, že to je přes dráty).
Otázkou je, proč vlastně do té školy chodí?
Proč ty chodíš do školy?
#17 Gooo
promiň,
Ale takhle nějak jsem to chápal, že metody volám tečkovou notací
tady píšeš něco jiného:
Problém je, že ta procedura na výpočet musí být součástí objektu TVektor a ještě k tomu musím dodělat předávání hodnot proměnných pomocí GET a SET, takže ty procedury musí být skutečně v TVektor.
Když to dám do ní, tak nefunguje. Když to dám jako samostatnou proceduru, tak to funguje.
Rozlišuj prosím obecnou proceduru mimo objekty, která nesmí přistupovat k datům objektu a proti tomu procedura v objektu alias metoda objektu, která naopak jediná může přistupovat k datům navíc bez nějakých teček!
Tedy od uživatele jsem získal množství rozměrů a uložil jsem ji do proměnné X
Formuluj přesně, v programování je to nezbytné! získal jsi množství rozměrů nebo množství souřadnic? do proměnné x jsi uložil jednu hodnotu, nebo celé to množství?
Ale chceš-li to obecně: zkus prosím taky nejdřív nastudovat nějakou teorii, než se pustíš do složitějšího programu.
Objekt má nějaká data (atributy), do kterých smí přistupovat jen metody objektu. Hodnoty do nich budou tedy ukládat metodou (procedurou) set a vybírat se budou metodou (funkcí) get. Má-li objekt vlastnost x, můžeš navrhnout takovéto metody (ne obecné procedury!):
procedure Tobjekt.SetX(vstup : integer);
begin
x := vstup;
end;
function Tobjekt.GetX;
begin
GetX := X;
end;
#12 Gooo
Teď mě tak napadlo, nebylo to spíš řečeno takto?
K datům objektů přistupujte výhradně prostřednitvím metod Get/Set, máte zakázáno pracovat s nimi mimo objekt tečkovou notací!
Tak tomu bych rozumněl... a tak je to správně... má pravdu předsedo... to je zapouzdření
Ale metody se volají přes tečkovou notaci, jinak to nejde!
#12 Gooo
Je výslovně napsáno, že lze řešit tečkovou notací, ale tu používat nesmíme.
Co to je za "blbost?" Samozřejmě bez teček se to dá zapsat pomocí with - když je toho víc, ale že by to někdo zakazoval s tečkovou notací, to slyším prvně? Nebylo to myšleno nějak jinak?
with vysledek do
begin
SetH(vektor1.GetH);
Pricti(vektor2.GetH);
Vypis;
end;
#3 valtak
Tak to příště napiš rovnou...
Jas diody lze snížit dvěma způsoby, buď snížíš proud diodou (to není tvůj případ), nebo použiješ PWM, nebo-li pulzní modulacie. Zjednodušeně řečeno, dioda nebude svítit pořád ale bude blikat, takže půlku času svítí/ půlku nesvítí.
Frekvenci blikání si zvol přiměřeně, 100x za sekundu by mělo stačit...
#37 romanzdk
To jsem rád. Máš pochvalu za tu konstantu maxR.
Dovol ještě jednu radu, není od věci psát program přehledně - odsazovat bloky, aby na první pohled bylo jasné odkud kam je třeba cyklus, nebo nějaký vnořený blok. Budou se ti pak lépe hledat případné logické chyby.
Takhle nějak to myslím:
program test;
const maxR=4;
var soubor:text;
i,j,delka_trasy:integer;
pole:array[1..maxR,1..2] of integer;
begin
assign(soubor,'udaje.txt');
reset(soubor);
for i:=1 to maxR do
begin
readln(soubor,pole[i,1],pole[i,2]);
end;
for i:=1 to maxR do
delka_trasy:=delka_trasy+pole[i,1];
writeln(delka_trasy);
close(soubor);
readln;
end.
#1 PiranhaGreg
Jinak než načtením do bufferu a zápisem do nového souboru (souborů) to nejde, takže nevím nad čím bádáš... Nejrychleji se to odjakživa dělo přes DMA kanál využívající buffer v RAM nezávisle na procesoru, jestli od té doby vzniklo něco ještě rychlejšího, tak snad někdo poradí...
Jestli to má jen zjistit našlo/nenašlo, tak asi takhle:
procedure Hledej(P:Uk);
var x:integer;
begin
x:=5;
while (p <> nil) and (p^.info <> x) do p:= p^.Dalsi;
if p=nil then writeln('Nenaslo se')
else writeln('Naslo se');
end;
#1 Matěj Andrle
Prosímtě, nevím o tom, že by existoval nějaký starý wav a nový wav. Podle toho co vím, je wav nekomprimovaný formát surových navzorkovaných dat. Je možné, že vymysleli variantu Wav, kde jsou třeba data zkomprimovaná, což by mělo být zapsáno v hlavičce souboru a dá se mimo jiné snadno zjistit výpočtem - pokud je soubor menší než velikost vzorku*frekvence*čas*počet kanálů, tak je určitě zkomprimován, což v době DOSu nebyl a to by mohl být ten problém.
Takže nehledej "convert new wav for old dos" ale hledej spíš něco jako definice formátu v hlavičce Wav souboru a případně nějaké normy, podle kterých se to do těch wav souborů zapisuje.
Pak si podrobně prozkoumej hlavičku wav souboru který ti funguje a který ne a porovnej rozdíly.
#1 Michaela Bednářová
S čím potřebuješ pomoct?
Mimochodem, v tom programu, ze kterého je ten výsledek zobrazen, mají chybu, vedou tam úhel jen jako celé číslo, takže výsledek je pro úhel 4° a ne pro 4,5°, to by bylo 8,5 sec.
#9 Kit
Aha, tak to jo, jde tedy jen o formální záležitost s názvoslovím. U tebe procedury nevrací hodnoty, ony je jen ukládají do proměnných. OK.
Pro mě cokoliv procedura zjistí nebo vypočítá, to předává = "vrací" volajícímu programu prostřednictvím parametrů...
#8 JoDiK
Nebo článek: http://www.linuxexpres.cz/…-freepascalu
Novinkou posledních verzí je možnost vývoje aplikací pro operační systém Android.
co třeba tohle?
https://play.google.com/store/apps/details?id=com.n0n3m4.droidpascal&hl=en
https://play.google.com/store/apps/details?id=me.zed_0xff.android.pascal&hl=cs
http://m.gracesleeping.store.aptoide.com/app/market/com.n0n3m4.droidpascal/353/1874252/PascalGUI%20%28Pascal%20compiler%29
#7 Kit
A na to jsi přišel jak?
Procedura nevrací žádný výsledek.
Například standardní procedura GetDir (zkopírováno z nápovědy Borland Pascal):
GetDir (procedura)
Vrací aktuální adresář určené diskové jednotky.
Deklarace
procedure GetDir(D: Byte; var S: String);
Nebo GetTime...
GetTime (procedura) (jednotka Dos a jednotka WinDos)
Vrací aktuální čas, nastavený v operačním systému.
Deklarace
procedure GetTime(var Hour, Minute, Second, Sec100: Word);
#2 JoDiK
Se to nějak rozhodilo...
def make_change(cents):
# Use modulo 25 to find quarter count.
parts = divmod(cents, 25)
quarters = parts[0]
# Use modulo 5 on remainder to find nickel count.
cents_remaining = parts[1]
parts = divmod(cents_remaining, 5)
nickels = parts[0]
# Pennies are the remainder.
cents_remaining = parts[1]
# Display the results.
print("Argument:", cents)
print("Quarters:", quarters)
print("Nickels:", nickels)
print("Pennies:", cents_remaining)
#1 Karel
def make_change(cents): # Use modulo 25 to find quarter count. parts = divmod(cents, 25) quarters = parts[0] # Use modulo 5 on remainder to find nickel count. cents_remaining = parts[1] parts = divmod(cents_remaining, 5) nickels = parts[0] # Pennies are the remainder. cents_remaining = parts[1] # Display the results. print("Argument:", cents) print("Quarters:", quarters) print("Nickels:", nickels) print("Pennies:", cents_remaining)
#3 Beči
Jestli chceš pomoct, tak ukaž cos zatím vymyslel, popiš na čem jsi se zasekl a určitě ti někdo poradí jak dál.
Jestli si pomoc představuješ tak, že to za tebe někdo udělá a ty se na to ani nekoukneš, tak to asi nepochodíš.
Ty se rozhodl studovat školu, takže je na tobě, aby ses naučil, co tam po tobě chtějí a předvedl jim jak jsi to zvládl ty sám a ne jim odevzdávat výsledky práce někoho jiného.
A takové trapné výhovorky typu "já to ale už nikdy nebudu potřebovat, na tohle fakt nemám buňky, vůbec tomu nerozumím, vy to zvládnete levou zadní za pět minut, já bych to dělal měsíc..." ty si nech od cesty...
Máš pozměnit indexy tak, aby se místo řádků procházely sloupce a místo sloupců řádky. Ale protože na rozdíl od požadovaného programu, kde se má třídit podle hodnot v prvním řádku, v tomto se programu třídí trochu jinak, jestli dobře vidím, tak se netřídí analogicky podle hodnot v prvním sloupci, ale hledá se maximum z celého řádku a třídí se to podle tohoto maxima. To znamená, že ta úprava nebude tak jednoduchá, jak sis asi myslela.
Doporučuju, abys neupravovala program, kterému zřejmě nerozumíš (přestože je docela dobře okomentovaný), ale aby sis to napsala sama..
#4 Patrik
Nemůžu mluvit za ostatní, ale co se mě týče, nemám problém poradit. Stačí, když se koukneš na jiné mé příspěvky na tomto webu. Z tvého dotazu ale není vůbec jasné, s čím chceš poradit.
Možná by ti pomohla tato rada: nauč se hledat na internetu, třeba to někde už je hotové (nebo je tam hotový velmi podobný příklad):
http://www.spsemoh.cz/vyuka/algor/resprikl.htm - co třeba příklad č. 4, není to prakticky totéž?
#1 Patrik
Programátor by se měl jako první věc naučit přesně formulovat. Protože bez jednoznačně a přesně formulovaného zadání se nedá dojít k požadovanému výsledku.
Takže příště prosím formuluj přesně:
Jsem línej jak veš a ve škole furt otravujou, že mám něco odevzdat. Vy to umíte, jednoduché věci máte hotové za pět minut, tak je vaší povinností to za mě udělat. Potřebuju to ještě dneska!
#8 jmeno
Ty to číslo vyrábět nebudeš, na to máš počítač. Počítač na rozdíl od člověka dvojkovým číslům rozumí nejlépe, takže jakmile mu do proměnné naskládáš ty jedničky a nuly hezky jednu po druhé, tak už mu nemusíš říkat, že to je číslo, to on ví.
Z toho souboru ale nečti čísla, to asi ani nepůjde, když je jich tam tolik, čti z něj po jednom znaku - ten znak bude 0 nebo 1, ten jeden znak převeď na číslo 0 nebo 1 a pak s ním pracuj dle předchozích rad.
Jestli jsem správně pochopil zadání, tak jakmile přečteš prvních 32 bitů, budeš mít první číslo. Pak načteš další jeden znak, převedeš na číslo 0/1, proměnnou posuneš o bit doleva, bitově přičteš ten nový bit a máš druhé číslo. Takhle budeš postupovat až do konce souboru. Předpokládám, že v podmínkách zadání je, že v souboru je minimálně 33 bitů, aby bylo co porovnávat...
Algoritmus hledání maxima doufám zvládáš.
Ten program co máš, uprav tak, aby četl jeden znak.
Jde to jednoduchou cstou přes bity.
#1 Exibit
Máš v tom chaos.
Pokud na pozici i najdeš mezeru, do z si přičteš o jedničku víc, tak jaký bude výsledek
i-z+1 ?
když z=i+1
i-z+1=i-(i+1)+1=i-i-1+1=0!
no a kolik asi znaků se pak nakopíruje v příkazu copy(txt,z,i-z+1) ? Přesně NULA znaků!
Tak tady hledej chybu.
#4 Tomáš
No skoro...
"v tom cyklu by byla nějaká podmínka, která by se ptala, zda ten konkrétní zkoumaný objekt je toho typu a pokud ano, cyklus by skončil a nic by se nepřidalo. Až proběhne celý cyklus aniž by se našel objekt onoho typu, tak by se teprve přidal!"
#1 Tomáš
Nevím, co přesně dělá enum (jestli jsem to pochopil správně, tak jde o výčtový typ - seznam předem definovaných hodnot).
Každopádně tvůj problém lze řešit i jednoduše - při kopírování z pole kde může být víc objektů stejné skupiny do pole kde může být pouze jeden z dané skupiny budeš brát objekty ze zdrojového pole jeden za druhým a každého objektu nejdříve projdeš celé cílové pole, jestli tam už objekt stejné skupiny je obsažen, pokud není můžeš přidat, pokud je tak jdeš na další objekt...
Sice to znamená, že pro každý objekt budeš znovu a znovu procházet celé cílové pole, ale počítače jsou rychlé ne? Kdyby to dělalo potíže, dá se to optimalizovat - třeba setříděním objektů v cílovém poli a z toho plynoucím zrychlením hledání, jestli tam už je nebo ne...
#1 Tomáš
Rozlišuj mezi writeln (vypsat a ukončit řádek) a write (vypsat a "čekat" na stejném řádku na další výpis).
Takže tvůj příklad by měl vypadat takto:
procedure VYPISMAT (a,b:byte;d:matice);
var
i,j :byte;
begin
for i:=1 to a do {cyklus pro radky}
begin
for j:=1 to b do {cyklus pro sloupce - vypise jeden radek hodnot}
write(d[i,j]:5:0); {vypsat jednu hodnotu na radek}
writeln; {ukoncit jeden vypsany radek}
end;
end;
{ :5:0 - zpusobi doplneni vypisovanych hodnot mezerami zleva tak,
aby zabraly celkem 5 znaku - tim se zaridi prehlednost vypsane matice }
#2 Frantisek
Chyby se neomlouvají, teda ty skutečné chyby...
Takže v jakém pascalu??? To není jedno, protože standardní pascal má jen druhou mocninu a odmocninu, další výpočty už si musíš naprogramovat sám...
V jiných Pascalech (frepascal) je třeba k dispozici jednotka math, kde je i funkce power a mnoho dalších: http://www.freepascal.org/…index-5.html
Takže jsi dal málo informací, to se neomlouvá :-)
Když odhlédnu od toho, že to děláš v nesmyslně velkém rozlišení - na plošňák podle mě musí stačit to, co na všechno - 300dpi - rozměr jednoho bodu je méně než setina milimetru. tak když něco nefunguje jedním způsobem, udělej to jinak.
Nevím proč se to snažíš tlačit přes vrstvy - chceš tam těch plošňáků na jeden papír naskládat víc? Pak zkus třeba ten jeden obrázek otevřít, zkopíruj ho celý do schránky, zvětši mu plochu/plátno na požadovaný rozměr a vkládej ze schránky, co se jich tam vejde.
#5 Kit
Protože v době, kdy se dosovský program po skončení zavřel a nebylo vidět co vypsal, někdo tento nevhodný postup vymyslel a použil v nějakých výukových materiálech, jiní to od něj kopírovali, tak se to "vžilo".
V té době to fungovalo celkem dobře - ten enter navíc v příkazové řádce prostě jen odřádkoval. Později ve Windows bohužel znovu spouští aktivní ikonu...
Tu prodlevu po skončení programu by měl zajistit editor.
Tomu vůbec nerozumím, co má editor společného s během programu? Proč by měl něco zajišťovat? Vždyť ani nemá jak... Když se program zkompiluje a uloží - pak už přece "žije" nezávisle na editoru, ve kterém se kdysi napsal jeho zdrojový text...
#1 Gooo
Jestli to čekání na konec programu máš konstrukcí repeat until keypressed, tak místo toho použij jenom readkey nebo readln.
keypressed nevybírá buffer klávesnice a ten enter co zmáčkneš v něm zůstane a protože máš ikonu vybranou, enterem se program spustí znovu...
Nabízí se otázka: co tě žene do španělské vesnice, když se nechceš učit španělsky? Tak tam nechoď...
#1 majus85
A já bych ještě doplnil chaos v názvech, procedura menu načítá rozměry matic, procedura vypis načítá hodnoty v maticích a procedura součin kromě násobení taky vypisuje.
Zkus prosím nazývat procedury pravými jmény - podle toho co skutečně dělají...
A pro začátek v první proceduře změň paramatery na vstupně/výstupní a možná to i něco začne dělat...
procedure MENU(var k,l,m,n: integer);
#27 Anetace
To se ale řeší velmí snadno a přehledně (posunutí středu).
Napiš si svoje podprogramy pro zobrazování, posílej do nich vypočítané údaje a teprve z nich vykresluj do skutečných souřadnic na obrazovce s posunutým středem...
Procedure Circle(x,y,Radius:integer)
begin
Graph.Circle(x+stredX,y+stredY,Radius);
end
#9 Anetace
Asi si nerozumíme, ty výsledky asi mají smysl, ale je nesmyslné je zaokrouhlovat a pokoušet se v těchto hodnotách něco vykreslovat.
Většinou se to dělá tak, že si zjistíš maximální rozsah těch výsledků a podle nich si vypočítáš měřítko. Tímto měřítkem budeš násobit všechny vypočítané výsledky a pak teprve budeš zaokrouhlovat. Tzn. že například vzdálenost planety od slunce ti vyjde mezi 1,2x10^8 a 1,6x10^8 a grafika má rozsah 800x600. Tak si určíš měřítko třeba 1x10^-6 a tímto vynásobíš každou vypočítanou vzdálenost a pak teprve zaokrouhlíš. Tim se dostaneš do rozsahu obrazovky.
#2 JoDiK
Takže opavdu je tomu tak, pokoušíš se zaokrouhlovat čísla někde x10^-15, což se funkci Round už nelíbí, navíc je to nesmysl, protože by všechno vyšlo 0.
Doporučuju si nejdřív to vykreslování nazkoušet na něčem jednoduchém, třeba po kružnici a postupně zapojovat složitější výpočty...
#12 Woody
Máš tam tenhle cyklus:
while not eof(s) do;
Překladač ho samozřejmě přeloží, je mu fuk, že nevíš co píšeš a která bije.
Až to spustíš, cyklus dělá přesně to, co je v něm napsáno - dokud není konec souboru, dělej NIC!
Tak se prosímtě nejdřív zorientuj v tom, jak se zapisují příkazy a hlavně si uvědom, co v zápisu znamená středník - ten opravdu neukončuje řádek ale celý příkaz!
Jak se čte ze souboru až do konce je popsáno na mnoha místech, je na to ověřený standardní postup, který ošetřuje i tu variantu (naprosto legální), že v souboru nemusí být nic (má velikost 0 bajtů) a tedy hned po jeho otevření nastane eof a nemůžeš z něj tedy hned něco číst - nastane chyba čtení za koncem souboru...
Inspiruj se třeba zde: http://www.spsemoh.cz/vyuka/pascal/file.htm
#9 KIIV
FreePascal stejně, až u reset...
Free Pascal Compiler version 2.6.2 [2013/02/16] for x86_64 Copyright (c) 1993-2012 by Florian Klaempfl and others
Pocet.pas(12,8) Error: Call by var for arg no. 1 has to match exactly: Got "Array[32..122] Of SmallInt" expected "Text"
Pocet.pas(19,10) Error: Can't read or write variables of this type
Pocet.pas(22) Fatal: There were 2 errors compiling module, stopping Fatal: Compilation aborted
#5 KIIV
Překvapuje mě, že i ty máš sem tam nějaké mezery (soudě podle tvých předchozích příspěvků).
pascal nebere znaky jako cislo, takze musis pouzit proste array [32..255] of integer;
Jeden z ordinálních typů je samozřejmě i znak (tzn. že ho opravdu bere vlastně jako číslo - jak taky jinak že) a indexem pole může být jakýkoliv ordinální typ, takže deklarace pole je v pořádku a nemusí nic převádět (s drobnou výhradou, že v textovém souboru mohou samozřejmě být i konce řádků, což jsou znaky #10 a #13 a ty jsou mimo rozsah deklarovaného pole).
#1 Navara
Zřejmě máš poněkud chaos v pojmech a filozofii objektů.
Takže místo otázky "Kam mám tedy vložit deklaraci "RN2Archiv: Array of TRn2_Archiv"" si spíše polož tyto otázky: Rozumím objektově orientovanému programování? Chápu význam zapouzdření, dědičnosti a jiných "objektových" záležitostí? Rozlišuju globální proměnné a data objektů? Pokud jsou tvoje odpovědi samé ne, zkus si nejdřív nastudovat teorii k objektům.
Protože až tu problematiku pochopíš, dojde ti nesmyslnost tvé otázky...
#12 JoDiK
Ještě jednou jsem si přečetl tvůj upřesňující dotaz a možná potřebuješ pochopit především toto:
Při čtení ze souboru žádně hodnoty zvlášť po bitech nezjistíš, ze souboru lze číst nejmenší velikost 1 bajt. Takže si to načteš do paměti po bajtech do nějakého bufferu (proměnné) a s tou už si budeš provádět jakékoliv bitové či jiné operace...
#11 Lenny
Předpokládám, že v C nevymysleli nějaké nové hranaté kolo a čtení ze souboru funguje "normálně", tzn, že fseek potřebuješ jen kdy chceš v souboru při čtení přeskakovat. Pokud ale chceš kontinuálně přečíst všechny údaje v souboru od začátku, o automatické posouvání v souboru je postaráno.
Přečtení hlavičky zrealizuj tak, že přečteš do nějakého bufferu všechny bajty hlavičky.
Předpokládám, že po otevření souboru hned první údaj v něm je hlavička. Takže rovnou čti například (pokud jsem to dobře spočítal, hlavička má 9 bajtů)
fread(buffer, 1, 9, f)
v bufferu tak budeš mít všechny bajty hlavičky - pokud ten buffer bude pole bajtů, v prvním máš hodnotu 9B, z druhého si bitovým posunem o 1 doprava vezmeš těch 7 bitů první údaj, bitovým součinem s 1 získáš hodnotu toho posledního bitu atd...
Ze třetího bajtu těch prvních pět bitů získáš zase bitovým posunem o tři doprava, zbývající tři bity získáš bitovým součinem s 7. Ten si uložíš do proměnné 32bit. Posuneš ji o tři bity doleva a bitově do ní přičteš hodnotu dalšího bajtu z bufferu, zase posuneš o osm bitů doleva, přičteš další atd atd.
Až zjistíš velikost dat, tak je přečteš, tím se automaticky přesune ukazatel v souboru na začátek další hlavičky a můžeš rovnou aplikovat předchozí postup.
Poud bys ale po otevření souboru chtěl přeskočit třeba na sedmý blok, to už tak snadné nebude a protože délka dat je proměnná, nelze rovnou skákat fseek. Pokud v hlavičce není uloženo nějaké pořadové číslo, nepůjde použít ani postupné přibližování, takže prostě budeš muset přečíst první hlavičku a fseek přeskočit data na začátek druhé hlavičky, tu přečíst a zase přeskočit až na tu sedmou...
#1 TomoeKi
Zjisti si v nápovědě, jak se počítá náhodné číslo (hledej něco jako random)
Až naplníš matici, aplikuj algoritmus hledání maxima a buď rovnou během hledání zjišťuj kolikrát, případně až najdeš maximum, projdi matici znovu a spočítej kolikrát tam to maximum je. Budeš na to potřebovat jenom dvě obyčejné proměnné (maximum a počet maxim).
Algoritmus hledání maxima můžes najít třeba zde (příkad 6.):
http://www.spsemoh.cz/vyuka/algor/resprikl.htm
#1 Pavel
Kdyby ses kouknul na nějaké minulé dotazy, zjistil bys, že tento server je mimo jiné o tom, že sem chodí radit lidé, kteří jsou ochotni pomoci. Takže odpověď zní ano, někdo tu je.
Další věc, kterou bys ve starších dotazech zjistil je, že drtivá většina moderních studentů si "vůbec neví rady" a to tak že "se vším". Jinými slovy, dostali ve škole nějaké zadání a rádi by, aby to za ně vypracoval někdo jiný. Jsou tak líní, že si to ani neumí najít na internetu... Takovým bohužel není rady a velmi často ani pomoci...
Takže s čím potřebuješ pomoct?
#5 peter
Že se vám do toho pletu...
"obhajovat přidělený maturitní projekt"
tomu rozumím tak, že na tom bude "rok a něco dělat" a u maturity to bude jen obhajovat...
v každém případě nejdůležitější u těchto prací je pochopit zadání - proto tazateli radím:
# leftlol
ptej se zadavatele furt dokola, dokud ti nebude jasné co se po tobě chce... Protože to, jak si ty myslíš že to má vypadat se většinou s představou zadavatele často diametrálně rozchází...
A když chceš rady od jiných a neřekneš jim přesné zadání, nemůžeš očekávat konkrétní rady...