Předem děkuju za pomoc Small Basic - načtení čísel a určení MIN a MAX*
Small Basic - načtení čísel a určení MIN a MAX*
Ahoj, potřebovala bych poradit jak mám udělat program ve Small Basicu. Program má načíst čísla a po dokončení zadávání vypsat nejmenší a největší zadané číslo. Vůbec nevím jak na to...
Předem děkuju za pomoc 
Předem děkuju za pomoc
Naposledy upravil(a) Žbeky dne 03 čer 2011 07:50, celkem upraveno 1 x.
Důvod: Nadpis upraven. Když ti někdo řekne, Ať upravíš nadpis, tak to neznamená, že máš založit duplicitní téma. Stačí upravit první příspěvek
Důvod: Nadpis upraven. Když ti někdo řekne, Ať upravíš nadpis, tak to neznamená, že máš založit duplicitní téma. Stačí upravit první příspěvek
- domitea
- Tvůrce článků
-
Level 4.5
- Příspěvky: 1971
- Registrován: červen 09
- Bydliště: Královehradecký kraj
- Pohlaví:

- Stav:
Offline
- Kontakt:
Re: Small Basic
OT: Změň si název tématu aby byl jasný - co je se small basicem? vyprdunul se na tebe? stojí ti přede dveřmi? + špatná sekce
Přes cyklus projdeš všechny prvky v poli s tím, že porovnáváš jejich hodnoty a ta, která je největší a nejmenší si dáš do speciálních proměnných. Zkusím vyhrabat někde svůj kód, ale škola volá
Přes cyklus projdeš všechny prvky v poli s tím, že porovnáváš jejich hodnoty a ta, která je největší a nejmenší si dáš do speciálních proměnných. Zkusím vyhrabat někde svůj kód, ale škola volá
Re: Small Basic - načtení čísel a určení MIN a MAX*
To Žbeky: Děkuju za opravení, jsem tu poprvé a nevěděla jsem jak to mám dát do nové sekce, tak se omlouvám...
To domitea: Moc jsem nepochopila jak to myslíš...:( Tovíš holka z gymplu, informatika nepatří mezi mé silné stránky...takže kdybys našel kód bylo by to skvělé :)
To domitea: Moc jsem nepochopila jak to myslíš...:( Tovíš holka z gymplu, informatika nepatří mezi mé silné stránky...takže kdybys našel kód bylo by to skvělé :)
Re: Small Basic - načtení čísel a určení MIN a MAX*
Ahoj, technická otázka: odkud máš ty čísla načíst a jak program pozná že už byla všechna? Předpokládám že neznáš předem jejich počet.
Nejjednodušší možnost je načítat čísla zadávaná přímo uživatelem na klávesnici, a je určená hodnota (mimo rozsah) která řadu čísel ukončuje, třeba když jde o počet kusů něčeho, tak čísla budou pouze celá kladná, takže ukončení může být buď nula nebo jakékoliv záporné.
Návod k Small Basicu v češtině najdeš tady: http://download.microsoft.com/download/ ... 0Czech.pdf Je v něm všechno potřebné pro tvůj úkol.
Lehký návrh bych si představoval takhle nějak: (zatím v lidštině
)
Trochu upřesni zadání (a pokus se něco stvořit) ať můžeme pokračovat.
Nejjednodušší možnost je načítat čísla zadávaná přímo uživatelem na klávesnici, a je určená hodnota (mimo rozsah) která řadu čísel ukončuje, třeba když jde o počet kusů něčeho, tak čísla budou pouze celá kladná, takže ukončení může být buď nula nebo jakékoliv záporné.
Návod k Small Basicu v češtině najdeš tady: http://download.microsoft.com/download/ ... 0Czech.pdf Je v něm všechno potřebné pro tvůj úkol.
Lehký návrh bych si představoval takhle nějak: (zatím v lidštině
Kód: Vybrat vše
cislo=načti.číslo()
min=cislo
max=cislo
dokud (cislo>LIMIT)
když (cislo<min)
min=cislo
koneckdyž
když (cislo>max)
max=cislo
koneckdyž
cislo=načíst()
konecdokud
zobraz ("Nejmenší: ",min)
zobraz ("Největší: ",max)Trochu upřesni zadání (a pokus se něco stvořit) ať můžeme pokračovat.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
-
d1amond
- člen HW spec týmu
-
Elite Level 12
- Příspěvky: 16119
- Registrován: květen 08
- Bydliště: České Budějovice
- Pohlaví:

- Stav:
Offline
Re: Small Basic - načtení čísel a určení MIN a MAX*
Jak už bylo napsáno, použiješ pole pro uložení hodnot ze vstupu. Cyklus Ti je pak jen projde a zaznamená min a max.
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?
Chcete si nechat sestavit nový počítač?
Re: Small Basic - načtení čísel a určení MIN a MAX*
d1amond píše:Jak už bylo napsáno, použiješ pole pro uložení hodnot ze vstupu. Cyklus Ti je pak jen projde a zaznamená min a max.
Pro vytvoření pole potřebuješ předem znát počet těch čísel, navíc ti bude zbytečně zabírat spoustu místa v paměti, když potřebuješ pracovat vždy jen s jedním právě zadaným číslem. Mimochodem, co když těch čísel bude deset miliard?
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Small Basic - načtení čísel a určení MIN a MAX*
A kdybych to chtěla udělat podle toho návodu v tý prezentaci a zadala bych třeba 4 čísla a mělo by mi to najít to největší, tak jak by byla ta podmínka? Nějak mi to necvaklo
Zkusila sem to takhle ale nějak se mu to nelíbí tomu Basicu
Co je na tom špatně? :(
Kód: Vybrat vše
TextWindow.Write("Zadejte první číslo: ")
cislo1 = TextWindow.ReadNumber()
TextWindow.Write("Zadejte druhé číslo: ")
cislo2 = TextWindow.ReadNumber()
TextWindow.Write("Zadej třetí číslo: ")
cislo3 = TextWindow.ReadNumber()
TextWindow.Write("Zadej čtvrté číslo: ")
cislo4 = TextWindow.ReadNumber()
NajdiMax()
TextWindow.WriteLine("Větší číslo je: " + max)
Sub NajdiMax
If (cislo1 > cislo2, cislo3, cislo4)
Then
max = cis1
If (cislo2 > cislo1, cislo3, cislo4)
Then
max = cislo2
If (cislo3 > cislo1, cislo2, cislo4)
Then
max = cislo3
Else
max = cislo4
EndIf
EndSub
Re: Small Basic - načtení čísel a určení MIN a MAX*
Já bych řekl že se mu nelíbí ty tvoje podmínky. Ve většině programovacích jazyků můžeš porovnávat jen dvě čísla mezi sebou, například if (a > b), počítač nepochopí že mu chceš říct "když a je větší než b a c a d...". Jsou jazyky ve kterých se to dá, ale v těch se programuje úplně jinak
Nejlepší je tvořit program po malých kouscích, které budou fungovat samostatně. Tenhle se dá rozdělit na tři základní části:
1. načtení dat,
2. zpracování dat,
3. výpis výsledků.
To načtení a zpracování se dá dělat současně, ale pro přehlednost je oddělíme a budeme plýtvat pamětí i výkonem procesoru.
Takže pokud máš jistotu že ta čísla budou vždy čtyři, můžeš to načítání udělat takhle:
cislo[ ] pak nebude obyčejná proměnná, ale pole, a i udává kolikátá buňka (kolikáté zadané číslo) v pořadí se zrovna zpracovává. Je to pracovní proměnná cyklu a ukazatel do pole, i je odvozené od slova index. Pokud potřebuješ indexů víc najednou, používají se další písmena v pořadí: j, k, l...
Druhá možnost je že uživatel zná počet čísel, který zadá jako první údaj:
Výsledek bude tentýž, pole naplněné čísly v pořadí v jakém byla zadávána.
Myslím že na takhle jednoduchou úlohu není potřeba používat podprogramy, takže Sub je trochu nadbytečný, pokud to není přímo požadováno v zadání. Druhá část programu by mohla vypadat takhle nějak, ve tvém podání s jednotlivými proměnnými:
Při použití pole to nebude tak roztahané:
Na začátku se jako počáteční hodnota do max nastaví první zadané číslo, aby bylo s čím porovnávat, proto může cyklus začít až od 2. buňky pole.
Teď by mohla následovat další část programu, skoro stejná jako ta předchozí, kde budeš to pole znovu projíždět a hledat pro změnu minimální hodnotu, a nebo tuhle činnost můžeš přidat do toho předchozího cyklu jako druhou podmínku. Nezapomeň před cyklem nastavit počáteční hodnotu do proměnné min!
A na závěr se podíváme co nám vyšlo:
Tak si z toho vyber, pohraj si s tím, a dej vědět jak pokračuješ.
Nejlepší je tvořit program po malých kouscích, které budou fungovat samostatně. Tenhle se dá rozdělit na tři základní části:
1. načtení dat,
2. zpracování dat,
3. výpis výsledků.
To načtení a zpracování se dá dělat současně, ale pro přehlednost je oddělíme a budeme plýtvat pamětí i výkonem procesoru.
Takže pokud máš jistotu že ta čísla budou vždy čtyři, můžeš to načítání udělat takhle:
Kód: Vybrat vše
For i = 1 To 4
TextWindow.Write("Zadej " + i + ". číslo: ")
cislo[i] = TextWindow.ReadNumber()
EndForcislo[ ] pak nebude obyčejná proměnná, ale pole, a i udává kolikátá buňka (kolikáté zadané číslo) v pořadí se zrovna zpracovává. Je to pracovní proměnná cyklu a ukazatel do pole, i je odvozené od slova index. Pokud potřebuješ indexů víc najednou, používají se další písmena v pořadí: j, k, l...
Druhá možnost je že uživatel zná počet čísel, který zadá jako první údaj:
Kód: Vybrat vše
TextWindow.Write("Zadej počet čísel: ")
pocet = TextWindow.ReadNumber()
For i = 1 To pocet
TextWindow.Write("Zadej " + i + ". číslo: ")
cislo[i] = TextWindow.ReadNumber()
EndForVýsledek bude tentýž, pole naplněné čísly v pořadí v jakém byla zadávána.
Myslím že na takhle jednoduchou úlohu není potřeba používat podprogramy, takže Sub je trochu nadbytečný, pokud to není přímo požadováno v zadání. Druhá část programu by mohla vypadat takhle nějak, ve tvém podání s jednotlivými proměnnými:
Kód: Vybrat vše
If (cislo1 > cislo2) Then
max = cislo1
Else
max = cislo2
EndIf
If (cislo3 > max) Then
max = cislo3
EndIf
If (cislo4 > max) Then
max = cislo4
EndIfPři použití pole to nebude tak roztahané:
Kód: Vybrat vše
max = cislo1
For i = 2 To Pocet
If (cislo[i] > max) Then
max = cislo[i]
EndIf
EndForNa začátku se jako počáteční hodnota do max nastaví první zadané číslo, aby bylo s čím porovnávat, proto může cyklus začít až od 2. buňky pole.
Teď by mohla následovat další část programu, skoro stejná jako ta předchozí, kde budeš to pole znovu projíždět a hledat pro změnu minimální hodnotu, a nebo tuhle činnost můžeš přidat do toho předchozího cyklu jako druhou podmínku. Nezapomeň před cyklem nastavit počáteční hodnotu do proměnné min!
A na závěr se podíváme co nám vyšlo:
Kód: Vybrat vše
TextWindow.Write("Největší číslo je: " + max)Tak si z toho vyber, pohraj si s tím, a dej vědět jak pokračuješ.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Small Basic - načtení čísel a určení MIN a MAX*
Tak jsem to udělala a vypadá to takhle:
Teď mám ale problém udělat to samý ale s min. :( Když jen přepíšu max na min. tak mi to nejde :( Poraď prosím
Kód: Vybrat vše
TextWindow.WriteLine("Kolik čísel chceš zadat?")
pocet = TextWindow.ReadNumber()
For i = 1 To pocet
TextWindow.Write("Zadej " + i + ". číslo: ")
cislo[i] = TextWindow.ReadNumber()
EndFor
max = cislo[i]
For i = 2 To Pocet
If (cislo[i] > max) Then
max = cislo[i]
EndIf
EndFor
TextWindow.WriteLine("Největší číslo je: " + max)
Teď mám ale problém udělat to samý ale s min. :( Když jen přepíšu max na min. tak mi to nejde :( Poraď prosím
-
d1amond
- člen HW spec týmu
-
Elite Level 12
- Příspěvky: 16119
- Registrován: květen 08
- Bydliště: České Budějovice
- Pohlaví:

- Stav:
Offline
Re: Small Basic - načtení čísel a určení MIN a MAX*
Kód: Vybrat vše
TextWindow.WriteLine("Kolik čísel chceš zadat?")
pocet = TextWindow.ReadNumber()
For i = 1 To pocet
TextWindow.Write("Zadej " + i + ". číslo: ")
cislo[i] = TextWindow.ReadNumber()
EndFor
max = cislo[1]
min = cislo[1]
For i = 2 To Pocet
If (cislo[i] > max) Then
max = cislo[i]
EndIf
If (cislo[i] < min) Then
min = cislo[i]
EndIf
EndFor
TextWindow.WriteLine("Největší číslo je: " + max)
TextWindow.WriteLine("Nejmenší číslo je: " + min)
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?
Chcete si nechat sestavit nový počítač?
Re: Small Basic - načtení čísel a určení MIN a MAX*
Svetýlko: Ale no tak, to už jsi zapomněla jaký je rozdíl mezi > a <? Na jednoduché programování nepotřebuješ víc než znalosti matematiky ze základní školy 
Pro srovnání se podívej jak by se to dalo udělat bez toho pole a spousty zbytečně zabrané paměti:
Pro srovnání se podívej jak by se to dalo udělat bez toho pole a spousty zbytečně zabrané paměti:
Kód: Vybrat vše
TextWindow.WriteLine("Kolik čísel chceš zadat?")
pocet = TextWindow.ReadNumber()
For i = 1 To pocet
TextWindow.Write("Zadej " + i + ". číslo: ")
cislo = TextWindow.ReadNumber()
If i = 1 Then
max = cislo
min = cislo
Else
If (cislo > max) Then
max = cislo
EndIf
If (cislo < min) Then
min = cislo
EndIf
EndIf
EndFor
TextWindow.WriteLine("Největší číslo je: " + max)
TextWindow.WriteLine("Nejmenší číslo je: " + min)"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Small Basic - načtení čísel a určení MIN a MAX*
No jooo já sem to tak zkousela, ale nešlo mi to
Tak děkuju za radu 
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 32 hostů


