úkol do školy – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

úkol do školy – Pascal – Fórum – Programujte.comúkol do školy – Pascal – Fórum – Programujte.com

 

stop0
Duch
4. 1. 2009   #1
-
0
-

Zdravím, potřeboval bych poradit, jak vytvořit vývojový diagram na toto zadání:
Je dána posloupnost 50 čísel, z nichž některá mohou být stejná. Určete, kolik hodnot se mezi vstupními čísly nachází pouze jednou.

Vůbec nevím, jak na řešení, vývojový diagramy jsou pro mě dost težké.

Nahlásit jako SPAM
IP: 212.111.4.–
Mircosoft+1
Věrný člen
4. 1. 2009   #2
-
0
-

Jenom vývoják? Ne program? Tak o to je to jednodušší, stačí jenom slovní vyjádření algoritmu:

Vstupní posloupnost čísel uložím do pole.
Zapamatuju si, že zatím nic nebylo nalezeno (N=0).
Cyklus:
- Z pole přečtu a odstraním jedno číslo (je jedno které).
- Zapamatuji si, že ho mám zatím jednou.
-- Vnořený cyklus: Projedu zbytek pole a pokud najdu stejné číslo, z pole ho odstraním a zvýším počet výskytů o 1.
- Pokud je počet výskytů rovný jedné, zvýším N.
Cyklus opakuji tak dlouho, dokud není pole prázdné.
Na konci je v N uloženo, kolik čísel se v posloupnosti vyskytuje jen jednou.

Vývojový diagram je už jenom převedení slovního popisu do grafické formy. Začátek a konec jsou takové kulaté rámečky, vstupy a výstupy (načítání posloupnosti, zobrazení výsledku) se píšou do kosodélníků, příkazy typu "udělej něco" do obdélníků, větvení se řeší otázkou zapsanou v kosočtverci, od kterého vedou dvě šipky (jedna pro "ano", druhá pro "ne") (tímhle se řeší i cykly typu while nebo repeat), for cyklus (při procházení pole a hledání dalších výskytů) bych asi vyjádřil nějakým větším rámečkem, ve kterém by bylo "pro každé číslo v posloupnosti:" a následovaly by příkazy a větvení v běžných rámečcích (vše uvnitř toho velkého).

Přeji veselé malování :-).

Nahlásit jako SPAM
IP: 86.49.83.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
stop0
Duch
5. 1. 2009   #3
-
0
-

Moc díky za tvoje vysvětlení, zkusím se s tým poprat. Pár věcem ale nerozumím, jak udělat odstranění čísla a jak poznám, že je pole prázdné?

Nahlásit jako SPAM
IP: 212.111.4.–
Mircosoft+1
Věrný člen
6. 1. 2009   #4
-
0
-

To u vývojového diagramu vůbec nemusíš řešit, tam prostě napíšeš rámeček "odstraň číslo" nebo "je pole prázdné?" a konkrétní implementace tě nezajímá.

V praxi bych si asi udělal pomocné pole booleanů, stejně dlouhé jako to pole čísel. Na začátku by byly všechny true (čísla v poli jsou). Odstranění čísla by se provedlo nastavením booleanu na příslušném indexu na false a kdyby byly false všechny, tak je pole prázdné.
Nebo by se čísla dala opravdu fyzicky mazat, tj. na pozici mazaného čísla zkopírovat následující, na pozici toho následujícího zase jeho následující atd. až do konce pole a zapamatovat si, že máme o jedno číslo míň.
Množina (typ Set) použít nepůjde, protože v té posloupnosti se mohou čísla opakovat a v množině ne.

Nahlásit jako SPAM
IP: 86.49.83.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
stop0
Duch
6. 1. 2009   #5
-
0
-

Takže to znamená, že musím zkontrolovat všech 50 čísel, dokud nenajdu, kolik jich je tam pouze jednou. A když se dostanu ke konci dám do kosodélníků Tisk a kolik čísel je tam pouze 1x.

Nahlásit jako SPAM
IP: 212.111.4.–
Mircosoft+1
Věrný člen
6. 1. 2009   #6
-
0
-

Přesně tak ;-).

Nahlásit jako SPAM
IP: 86.49.83.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
KIIV
~ Moderátor
+43
God of flame
7. 1. 2009   #7
-
0
-

vyvojovej diagram je neco jako recept v kucharce... pripravime si mouku, 5 vajec (inicializace promennych).... uvarime to to a to do toho pridavame to (vykonani pokynu - prikazy)... solime podle chuti (cyklus) ... nakonec pripravime na talire s kouskem bobkoveho listu... (vypis vysledku) ....

v kucharce je to akorat zapsano slovne... u vyvojovych diagramu na to mas takovy pekny obrazce a podle toho co delas je pouzijes

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Pavel
~ Anonymní uživatel
383 příspěvků
8. 2. 2009   #8
-
0
-

Přečetl jsem si otázku a docela mě potěšila, že jsem nad tím i chvíli přemýšlel.

Navrhnutý algoritmus má složitost O(N^2).
Jinou možností je čísla nejdříve seřadit a pak vypisovat čísla, která mají různá sousední čísla - O(N*log(N)).
A nejlepší by bylo si čísla ukládat do hash tabulky - O(N).

Tazateli tento příspěvek asi nepomůže, ale školní problém se mi líbí.

Nahlásit jako SPAM
IP: 88.102.73.–
plasmo0
Věrný člen
8. 2. 2009   #9
-
0
-

Teda, to se mi líbí od záři děláme vývojáky, karla a teď pascal, ale na moc primitinvní úrovni :-(. Teď máme taky úkol, vytvořit program na počítání králiků v kotci.

Nahlásit jako SPAM
IP: 82.150.166.–
Jak vzniká vynález? To všichni vědí, že je něco nemožné, a pak se objeví nějaký blázen, který neví, že je to nemožné, a udělá vynález. [br] Albert Einstein [br][br] http://plasmo.cz [br] http://bleskovaregistrace.cz [br] http://livetrading.cz
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 15 hostů

Podobná vlákna

Úkol do školy C++ — založil Dominik

Ukol do školy — založil Ales

Ukol do skoly — založil sniff

Ukol do skoly:( — založil Martina

C++ ukol do skoly — založil Aleš

Moderátoři diskuze

 

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