» Poradna » Programy

Programování

Odpovědět  |  Zobrazit bez stromu  |  Upozornit redakci  |  nových odpovědí: 50/50
 |   |  Microsoft Windows 10 Chrome 46.0.2490.33  |  [90.183.82.---]

Dobrý den,Chtěl bych se zeptat, jak se v programování řeší to, když je ve vývojovém diagramu zadán tento výraz : C=C+A*B , přičemž A= 5 a B= 7 a úkolem je zjistit C . Jinými slovy jak vyřešit výraz, kde je C proměnná a zároveň neznámá, kterou je potřeba vypočítat.Děkuji za odpověď

Odpovědi na otázku

 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [88.101.148.---]

Zkus přemyšlet matematicky a zjistíš co?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [88.101.148.---]

není to v cyklu? , pak by to asi bylo ze to sčítáš číslo predchazející c a pak to nahrazujes novým do c?

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 38.0.2103.0

na to se lze dívat z několika úrovní.- jako řešitel výrazů - výraz se rozparsuje (musí být známy dovolené operace, třeba stačí +-*), dosadí konstanty a pak nastoupí engine, na vyjadřování proměnných a tu proměnou získá. případně dosazení může být až na závěr-jako konstanta, která se určí při kompilaci, v tomto případě že programátor zapojí mozek a tu proměnou kurvа spočte. (constant expression substituton)- nebo že programátor zapojí mozek, najde výraz pro kurevské cé a ten vloží do programu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [93.185.57.---]

Mám pocit že si tak trochu blbec...Nepopsal si zda se jedná o iterativní výpočet nebo cyklus...Samozřejmě bez definovaní konstanty je to jenom algebra C=C+(35) , C=35

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Firefox 40.0  |  [90.177.51.---]

Tvé zadání jaksi nemá řešení.Stačí se na lo lehce podívat a logicky vidíš, že "C" se nikdy nemůže rovnat "C+35".

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [93.185.57.---]

Škoda že tazatel je dement a neuvedl v jakém programovacím jazyku pracuje...C=C+(7*5) matematicky je C+35 tudiž proměna C se algrebraicky rovná 35 ...Ty by ses měl vrátit do první třidy když nevíš že x+1= x , x=1

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 8 Opera 9.80

A ty chceš někoho posílat do první třídy?Pokud x= x + 1, tak podle tebe x = 1?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows Vista Firefox 41.0  |  [85.207.89.---]

Že by zase "domácí úkol" ???

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

C v takovém výrazu (napravo od rovnítka) nemůže být nikdy neznámá. Musí to být inicializovaná proměnná s přiřazenou hodnotou. Operátor = pak není v programovacím jazyku (v tomto případě) porovnání jako v rovnici, ale přiřazení. Například C odlišuje = (přiřazení) a == (porovnání). Jsou jazyky které tyto funkce rozlišují dle kontextu a obojí je =. Dále ovšem budu používat syntaxi jazyka C.Výraz se tedy vyhodnocuje stylem:Vytvoříme proměnné C, A a BC=1A=2B=3Program dostane:C=C+A*BPrioritu má násobení, tedyC=1+2*3C=1+6C=7nyní provedeme přiřazeníC=7(proměnná C dostala novou hodnotu 7)V případě že podobnou funkci provedeš jako podmínku:(C==C+A*B)(1==1+2*3)(1==7)>výstup false. 1 se nerovná 7.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

Nalevo od rovnítka, sorry.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

No a pokud C opravdu bude bez hodnoty, jazyk tě s takovou věcí pošle do háje, protože neví co je C :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 45.0.2454.93  |  [85.92.45.---]

Nic tě nepošle do háje, tady jde prostě o iterační řešení rovnice. Nic víc, nic méně. Podívej se na ten kód.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8.1 Firefox 40.0  |  [94.242.82.---]

Záleží v jakém jazyku. V Basicu, Pascalu a SQL je jedno rovnítko porovnávací operátor a přiřazení je v Basicu LET proměnná = hodnota a v Pascalu proměnná := hodnota.To až některé dnešní jazyky (Java, Javascript, C#, PHP) se opičí po Céčku, kde jedno rovnítko je přiřazení a dvě porovnání.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

V Basicu záleží na implementaci (pokud si dobře pamatuju, u některých je LET potřeba jen při deklaraci proměnné) na Pascal jsem zapoměl. Je fakt že právě syntaxe Pascalu je pro začátečníka celkem fajn, protože nevytváří zdání že jde o rovnici.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [90.183.82.---]

Není to domácí úkol, ale prosba o vysvětlení. Abych to ještě více přiblížil, tento příkaz je ve vývojovém diagramu a má se opakovat 6x.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

A kdo jiný ti zadal vývojový diagram a opakování 6x než zadavatel domácího úkolu? A co takhle napsat aspoň normálně zadání, místo těch nesmyslů?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [90.183.82.---]

Tak mě prosím poraď ,jak sem dát screen

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Chrome 45.0.2454.93  |  [78.102.249.---]

Když tohle není domácí úkol, jaký je důvod nepožádat učitele o lepší vysvětlení? Suplovat doučko opravdu není smyslem Poradny.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [90.183.82.---]

https://ctrlv.cz/vhzvZde je zadání :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

Výborně. Protože ses nezeptal na to jaký je výsledek, ale jak to funguje, nějaký čas ti věnuju rád. Ale příště nepiš nesmysly, ale řekni přímo o co ti jde. Ptal ses jak to funguje, řešení ti pro tvé dobro neřeknu, přijít si na to musíš sám. Ale pomůžu ti k tomu dojít. Takže, co znamenají jednotlivé části vývojového diagramu víš? (resp. asi ne, jinak by ti pomohlo už to co jsem napsal výše). Popiš čemu rozumíš, jak to podle tebe funguje a kde ses zasekl.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [90.183.82.---]

Nerozumím tomu ,jak může být v tom příkazu C=C+A*B písmeno C neznámou a zároveň proměnnou. Učitel nám to vysvětloval tak, že se místo toho jednoho C dosadí jakoby 1 (nebo nula, teď nevím, ale nula asi nedává smysl) a cyklus se 6* opakuje.Zároveň říkal, že se to nemůže řešit matematicky. Nejde mě o výsledek, ale o princip.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

Jak jsem psal výše, matematiku v tom nehledej, není tam. Alespoň pokud se jedná o výraz jako takový (a hlavně =)V zadání jako takovém máš napsáno že C=1C tedy není neznámou, C je velmi dobře známé a je rovné číslu 1= ve výrazu C=C+A*B není rovnítkem jako je tomu u rovnice, je to přiřazení. Přeložit do češtiny to můžeš jako:Ať je novou hodnotou C (C=) výsledek výrazu C+A*B (zde program dosadí hodnoty které zrovna proměnné mají a spočítá je)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [90.183.82.---]

Hele promiň ,spletl jsem, to není ten příklad....

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [90.183.82.---]

https://ctrlv.cz/mUaOTo je ten příklad, který nevím :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

V každém běžném jazyku je výsledkem chyba a pád programu (v případě kompilovaných jazyků jako C++ ti to ani nezkompiluje), protože C neexistuje. Není to inicializovaná proměnná, programovací jazyk neví co má přiřadit, sbohem.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

Pardon, C++ to zkompiluje, ale vzhledem k tomu že je C nepřiřazené, dostane nedefinovanou hodnotu podle kompilátoru. V případě gcc to byla 0, v případě clang jakéhokoliv bordelu co byl zrovna na stejném místě v RAM v době kdy ta paměť byla proměnné C přiřazena. Výsledek je poměrně nepředvídatelný. Jiné jazyky tě s tím opravdu pošlou do háje… Takže lepší odpověď než pád aplikace je „nedefinované chování aplikace závisející na jazyku“Tady můžeš vidět výsledek v C++ kompilovaném s clang: https://i.imgur.com/dSSs72X.png

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 45.0.2454.93

To je výsledek Mě to ve VB vyšlo takhle: https://www.dropbox.com/s/qq0yvse1nc693rx/Screens...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 38.0.2103.0

kurvаdrát, když není c inicializované, tak je VD neplatný

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [90.183.82.---]

Nevím, programování jsme měli cca. po čtvrté. Pravdou je, že ať jsem hledal kde chtěl, nikde na netu ani ve školních materiálech jsem se s podobnými příklady, kde by bylo neznámá zároveň proměnnou nesetkal. Takže nevím. Učitel to vsvětloval tak,že za to C si máme dosadit číslo 1,ale proč,to nechápu. Každopádně díky za snahu :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

Vyvaruj se pojmu neznámá. Neznámé jsou v matematice, v programovacím jazyku je to proměnná. Jestli vám řekl že si máte za C dosadit číslo 1, nemohl tím myslet že C=1 na začátku programu, jen to zapoměl napsat v zadání?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 9.0

Preco 1 ? No to je lahke. Zhruba asi tak, ked mas na zaciatku 1 iPod a stale prikupujes dalsie a dalsie. Kolko ich budes mat za tyzden, ked kazdy den pribudne jeden iPod ? Len nepovedz, ze nevies.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [93.185.57.---]

Ty seš retard lidi z Poradny ti mají vyrešit domací úkol??? Zdaní vypadá jak pro střední školy :D :D

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 40.0

Se ti nedivím že ho nevíš. Ten příklad je totiž nesmysl. Před prvním použitím C není definováno jaká hodnota je v C. Takže tam může být cokoli od mínus nekonečna do plus nekonečna (v reálném programu to bude omezeno rozsahem datového typu proměnné C), a k tomu ať už přičteš cokoli, tak výsledek stále může být od mínus nekonečna do plus nekonečna.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

no jo, no. GCC (alespoň verze 5.2.0) inicializuje integer na nulu, clang na bordel co byl v paměti, Ruby sletí na TypeError… Nepřiřadit hodnotu proměnné ve vývojovém diagramu a prostě předpokládat že tam je 0 (skoro to vypadá že to tak učitel opravdu myslel) je prasárna.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 42.0.2311.135

Noo ... v prvnim prubehu bych C povazoval za nulove... takze v prvnim prubehu tam bude C = 0+35v druhém průběhu tam bude C = 35+35 ..atd atd... tohle proběhne 6x .. takze tam bude .. cca 6*35 ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 45.0.2454.93  |  [85.92.45.---]

Dronik, Darm a podobní ať mlčí raděj když tom nerozumí. Algoritmus je prostě cyklus, ve kterém se řeší iterace, není "cyklus nebo iterace", ale "cyklus a iterace". Žádné vyjádření výrazu v tomto případě nelze. Ten Dronikuv řešitel v Exceliu nedělá nic jiného, ale použít řešitele není vůbec žádné programování.V cyklu musí být další vstupní proměnné:-horní mez-dolní mez-přesnostPak se v cyklu půlí intervaly a porovnávají obě strany rovnice. Až se levá strana rovná pravé v požadované přesnosti, je to výsledek.Ne každá taková rovnice má řešení, proto je nutné ošetřit maximální počet iterací, jinak se program zacyklí. c=c-a*b je problém, ale tento typ rovnic se řeší takto, v příkladu (Delpni, syntaxe Pascalu) jsem zvolil c=cos(c):http://paste.ofcode.org/aJYgRcXsCbb33SYTefT5rN

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

Až na to že zadání rozhodně takhle komplexní úloze neodpovídá.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 44.0.2403.89  |  [85.92.45.---]

Reagoval jsem naC=C+A*B , přičemž A= 5 a B= 7 a úkolem je zjistit C.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 45.0.2454.93  |  [85.92.45.---]

V upřesněném zadání bude prostě 6x počítat c=c+a*b. Měla by ale být uvedena i počíteční podmínka c, lze ho ovšem považovat za nulové na počátku.c:=0;a:=5;b:=6;for i:=1 to 6 do c:=c+a*b;

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

Ano, to se mu taky snažím vysvětlit. (vzhledem k tomu že napsal „Učitel nám to vysvětloval tak, že se místo toho jednoho C dosadí jakoby 1 (nebo nula, teď nevím, ale nula asi nedává smysl)“, buď je omylem c vynecháno ze zadání, nebo můžeme opravdu neinicializované c považovat za nulové a učitel je prase).Moje odpověď by, v případě že bych nedostal další informace o C, byla „nedefinovaný výsledek“.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

A já reagoval na přímé zadání úlohy a fakt že je to jeho 4. hodina programování. Samozřejmě vím jak řešit i takové úlohy, ale to fakt není věc pro člověka co je rád že ví co je cyklus.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [93.185.57.---]

Achjo někdo studuje IT nezná ani základy C# , C++ ....Ještě ze pot obě učitel nechtěl incializovat proměné do pole pres cyklus :D

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 AppleMAC-Safari 5.0  |  [85.92.45.---]

To není o C#, C++, ale obecně o algoritmizaci.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [93.185.57.---]

Kdyz nekdo nechape ze programovaní je jen o logice a matematice tak skoda vysvetlovat...primitivní cyklus by sel vyresit jednoduchou podminkou skoda slov...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 44.0.2403.89  |  [85.92.45.---]

Ano je to jen o logice.Tyhle rovnice se prostě řeší iterací, a ano, je to jednoduchá podmínka v cyklu. Je to prostě obecně o algorytmizaci, nic víc, nic méně. Ten příklad jsem dal na c=cos(c), jde tam dosadit jakákoli rovnice aje tam ošetřený i max. počet iterací, aby se cyklu se nemohl zacyklit. Připadá ti ta podmínka složitá? Měli jste programování počtvrté jak píšeš, někdo si s programnováním v několika jazycích "hraje" desítky let...škoda slov.pro c=c-a*bhttp://paste.ofcode.org/38qSsQMSDtVmcTg83DWBiLu

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

Hezká intelektuální exhibice a díky že mi sděluješ že tomu nerozumím, ale proboha, podívej se na vývojový diagram který ten člověk poslal. c=c-a*b tam není v podmínce, ale jednoduše jako dílčí operace přiřazení. Cyklus je definovaný prapodivně lichoběžníkem, ale zjevně má 6 iterací. A ani zadání ani další úkol který poslal omylem úrovní neodpovídá tomu co se tu snažíš předvést.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 45.0.2454.93  |  [93.185.57.---]

Adam 90.183.82.--- | 18. 9. 2015 23:30Nevím, programování jsme měli cca. po čtvrté. Pravdou je, že ať jsem hledal kde chtěl, nikde na netu ani ve školních materiálech jsem se s podobnými příklady, kde by bylo neznámá zároveň proměnnou nesetkal. Takže nevím. Učitel to vsvětloval tak,že za to C si máme dosadit číslo 1,ale proč,to nechápu. Každopádně díky za snahu :)------------------------------------------------------------------------------------------------------------------------AnonymFityCentBitch:Na internetu těch PDF knih jak se naucit programovat je málo???

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux AppleMAC-Safari 5.0  |  [212.79.110.---]

18. 9. 2015 22:21: "...Není to domácí úkol, ale prosba o vysvětlení..." Jo, jasně! Která ekonomka?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

Ať je to jak je to, narozdíl od toho blba předtím který chtěl rovnou odpověď na zadání, se tenhle člověk ptá na to jak to funguje. Navíc to nemusí být domácí úkol, ale jen nepochopená skripta.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 40.0

Já bych to shrnul. Buď ti opravdu řekl „dosaďte za C=1“ a opravoval tím chybu v zadání, nebo „dosaďte za C=0“ a je to tak trochu trotl, protože i u vývojového diagramu je dobré být specifický a nepředpokládat hodnotu do té doby neexistující proměnné. (takový přístup se pak může vymstít když dojde na reálnou věc)Problém v tom tak velký není, můžeš to vyřešit pro C=0 i pro C=1. U cyklu se vyplatí jít po trase diagramu tužkou a zapisovat si u každé iterace aktuální hodnotu C. Doufám že tohle zvládneš.Pokud je to úkol, můžeš říct že jsi přeslechl hodnotu C a raději to vyřešil pro 0 i 1, protože sis myslel že jsi ho zaslechl říkat něco o C=1. Dále můžeš říct že jinak je bez zadaného C výsledek nedefinovaný.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Proměnná



Určitě si přečtěte



Aktuální číslo časopisu Computer

26 procesorů v důkladném testu

Zhodnotili jsme 18 bezdrátových reproduktorů

Jak fungují cash back služby?

Pohlídejte své děti na internetu