
Studentský problém s ukolem
Zdravím,
letos studuji první rok na VŠ, kde máme programování (kvůli tomu jsem tam šel). Nyní jsem však narazil na problém u jednoho z ukolu. K tomuto dotazu přiložím i zadání. Chci se zeptat, jak v daném kodu docilit toho aby na kazdem radku nebyl posledni znak mezera.
Meli jsme zde take pouzit int.TryParse. Nevim zda jsem pouzil dobre. Muj "program" funguje tak jak ma. Stale má však jen 40 bodu ze 100 nerozumim tomu proc. Jinak kod je v c sharpu.
Proč sem to dáváš jako obrázek a ne přímo kód?
Ti za každým prvkem vypíše mezeru. Tak si tam dej podmínku, aby to u posledního prvku vypsalo bez mezery.
TryParse bys měl používat pokaždé, když převádíš řetězec na číslo. A podle výsledku se rozhodnout, jestli je to zadané správně, nebo je potřeba zadání opakovat
Kód pro výpis trojúhelníku tam máš dvakrát, to je samo o sobě zásadní chyba.
uplne nevim jak by ta podminka mela vypadat, protoze promenny jsou zavisly na vstupu od uzivatele. Tudis jsou pokazde jinak velke.
TryParse jsem tam pouzil a do zavorek za to jsem vlozil znovu ten kod, ktery to spusti kdyz je hodnota false... Alespon tak rozumim ty funkci. Kdyz v tech zavorkach ten kod neni tak to potom blbne, bud to vypisuje o jeden trojuhelnik vic a nebo pri vynechani opakovani nevypise vubec. Podle toho zda u cyklu mam => nebo v int opakovani = 1 nebo 0. Nikdy se mi nepovede aby to fungovalo oboji. Jsem uz bezradny.
To je přece jedno, jak jsou velké. Poslední prvek snad můžeš poznat vždy.
Pokud uživatel zadá pouze dvě hodnoty, tak je to to samé, jako by zadal počet opakování = 1. Podle toho se zařiď a ten výpis tam budeš mít pouze jednou.
nevim jak mam poznat posledni prvek. Jsme teprve na zacatku. Minul hodinu jsme brali podminky. a google povida jen o poly....
Když tam máš for cyklus, který běží dokud je y > x. Jaký je poslední prvek? Na to nepotřebuješ žádné znalosti z programování, to je prostě čistá logika.
no dokud y = x :D ale jak to zapsat... ze pokud je prvek vetsi o 1, že nemá psát mezeru.
y = x nebude nikdy.
dobra... takze kod jsem predelal takto:
stale jen 65 bodu... pritom si myslim ze to zadani splnuje ze vsech stran.
Dvě zadaná čísla: řádky, sloupce
Tři zadaná čísla: počet opakování, řádky, sloupce
Takže opakování (pokud je zadané) je první číslo. Ale ty to bereš jako poslední.
Taky si nejsem jistý, že splňuješ tohle:
jojo to s tím číslem (první, poslední) jsem si teď taky uvědomil. Snažím se na to nějak přijít, zkouším to přes to int.TryParse. To poslední, že program sám opraví počet těch řádků je ošetřeno tím cyklusem.
Úplně ošetřené to nemáš, vypisují se tam zbytečně prázdné řádky.
i v jeho ukazkovych vystupech jsou jednotlive vystupy oddeleny prazdnym radkem.
O tom nemluvím. Ty jich tam ale vypíšeš víc.
coz to je jedno... muj hlavni problem je ted poprehazet hodnoty promennych podle toho kolik zada tech cisel. Nemuzu na to prijit.
dobra ukol poresen :D na 100 bodu
A zase tam ten výpis máš dvakrát. Hodnotit to já, tak dostaneš 0.
Ta podmínka je splněná vždy.
Musis si uvedomit že je to zacatecnicky cviceni, kdy mame vychazet z toho co jsme brali. Ano vypis je tam dvakrat, kvuli odradkovani o kterem se pise v zadani, bez nej je to zase chyba.
ta true podminka plati kdyz uzivatel zada to cislo ne? Tudiz kdyz zada 3ti cislo, probehne cyklus v podmince, ktery poprehazi hodnoty tak aby opakovani bylo 1. atd... jinak probehne cyklus ktery ma ty hodnoty zase jinak.
No zadani jsem ocividne splnil, takze parada. Nevim co se ti na tom nezda a proc musis "rypat" ale dik za "rady"...
Opakování kódu je jedna z nejhorších chyb, jakých se můžeš při programování dopustit.
Proměnná typu bool může mít pouze dvě hodnoty: true nebo false. Takže pokud to neprojde ifem, automaticky to znamená, že prohození = true a není tam nutné psát další if.
A zápis toho ifu je sice funkční, ale v praxi se s ním asi nesetkáš. Mnohem obvyklejší je:
Pokud ti jde pouze o splnění zadání a ne o to, aby tvůj kód byl kvalitní, tak by ses o programování radši ani neměl pokoušet.
Celé se to dá napsat např. takhle:
takhle jsem to zkousel, prohodit hodnoty v tom ifu. Ale nefungovalo to. Mozna to bude tim ze tam mas var a nebo je to v ty podmince. Nevim. Take nevim proc porad ty ustepecne poznamky. Musim rict ze me to urazi. Ocenuju tvoje prispevky, dost jsem se dozvedel ale opravdu nechapu ty neustale hroty. Muzes mi rict jak vypadali tvoje kody? Po mesici kodovani?
Jo jasne jsi lepsi a pravdepodobne se tim i zivis ale proc se vozit po nekom kdo tolik zkusenosti nema? Jako ze bych ani nemel programovat atp.?
Chceš se něco naučit? Tak si zvykni, že tě někdo bude upozorňovat na chyby. A ne jen první měsíc, nebo první rok, ale celý život. Na tom není nic urážlivého, protože jen tím, že se dozvíš o chybách se můžeš posunout někam dál.
A to že bys neměl programovat nebylo rozhodně myšleno tak, že na to nemáš. Správný programátor neustále přemýšlí o tom, jestli by se něco nedalo napsat lépe. Pokud se tohohle přístupu vzdáš hned na začátku, tak to nikam daleko nedotáhneš.
Ne, to me spatne chapes :) vubec mi nevadi, ze me upozornujes na chyby. Ba naopak, jak jsem napsal předtím, cením si toho a jsem rád, protože se dozvím něco jiného. Jediné co mi vadilo byly ty poznamky. Budu rád když tu na sebe ještě narazíme a těším se na každou další radu ;) (předpokládám že se ještě na pár věcí zeptám).
Na 100 % asi ne. Stále tam nemáš ošetřeno:
Dále zbytečná proměnná
A na tomto program sletí pokaždé, když nebude zadané číslo: