Forum » Programiranje » Pomoč pri sestavi algoritma
Pomoč pri sestavi algoritma
mihy11 ::
Danes smo na računalniški šoli začeli z osnovami proramiranja. Začeli smo z algoritmi, ki smo jih tudi kar nekaj načrtovali. Programski jezik, ki ga bomo na začetku obdelali bo c# sedaj pa me zanima, če bi mi lahko kdo pomagal kako tale algoritem rešiti. Profesor nam ga je dal za domačo nalogo. Probal sem ga narediti vendar sem prišel do več kot polovice najprej pa ne vem kaj naj storim. prosil bi vas, da bi mi dali kakšen namig ali kaj podobnega
Algoritem;
Sestavi algoritem, ki bo omogočal vnos števil tako dolgo dokler so različna od nič. Algoritem naj ugotovi koliko smo jih vnesli in koliko je njihova vsota.
Za majhno pomoč se vam iskreno zahvaljujem.
Algoritem;
Sestavi algoritem, ki bo omogočal vnos števil tako dolgo dokler so različna od nič. Algoritem naj ugotovi koliko smo jih vnesli in koliko je njihova vsota.
Za majhno pomoč se vam iskreno zahvaljujem.
amacar ::
1. (do)while zanka, ki preverja vpisano število
2. Spremenljivka stevec za količino števil, ki ga povečaš ob vsaki iteraciji while zanke
3. Spremenljivka vsota, ki ji pri vsaki iteraciji while zanke dodaš vpisano število
2. Spremenljivka stevec za količino števil, ki ga povečaš ob vsaki iteraciji while zanke
3. Spremenljivka vsota, ki ji pri vsaki iteraciji while zanke dodaš vpisano število
mihy11 ::
1. (do)while zanka, ki preverja vpisano število
2. Spremenljivka stevec za količino števil, ki ga povečaš ob vsaki iteraciji while zanke
3. Spremenljivka vsota, ki ji pri vsaki iteraciji while zanke dodaš vpisano število
Kako pa bi potem vse skupaj zgledalo v algoritmu? To se pravi za stevec bi lahko napisali...stevec=stevec+1 če sem prav razumel.
Zgodovina sprememb…
- spremenil: mihy11 ()
def0r ::
Se mi zdi da ti je povedal kolikor ti je lahko, brez da bi ti celotno kodo spisal :)
Glede tvojega vprasanja ja, vsakic ko bo sel loop skozi bos povecal za 1 :) Ne pozabi inicilizirat prvo.
Glede tvojega vprasanja ja, vsakic ko bo sel loop skozi bos povecal za 1 :) Ne pozabi inicilizirat prvo.
Zgodovina sprememb…
- spremenilo: def0r ()
Xpie ::
Približni izgled kode. Vem da ni optimizirana ker je bolj na hitro narejena. Se opravičujem ker ni C# koda.
public static void main(String[] args) { int count = 0; int sum = 0; while(true){ //neskončna zanka Scanner scan = new Scanner(System.in); //Branje stevil int stev = scan.nextInt(); //Dobljeno prebrano število if (stev == 0){ //preverimo če smo vnesli ničlo break; } count = stev + 1; sum = sum + stev; } System.out.println("Vnesli smo jih: " + (count-1)); //rezultat brez seštet brez ničle System.out.println("Njihova vsota je " + sum); //izpis seštetih števil }
spletne-novice.si
Zgodovina sprememb…
- spremenil: Xpie ()
mihy11 ::
Najlepša hvala drugače pa moramo mi to narediti nne v obliki kode ampak podobnem temu;
Mi zaenkrat samo še načrtujemo algoritme kasneje pa bomo v obliki programa "spravili" na računalnik ;)
Mi zaenkrat samo še načrtujemo algoritme kasneje pa bomo v obliki programa "spravili" na računalnik ;)
Zgodovina sprememb…
- spremenil: mihy11 ()
mihy11 ::
mlamat ::
Kaj ti ni jasno? Kako deluje zanka?
Nalogo imaš praktično že rešeno, samo 2 stvari je potrebno spremeniti.
Nalogo imaš praktično že rešeno, samo 2 stvari je potrebno spremeniti.
mihy11 ::
mlamat ::
Saj sem misli sliko.
Za vhod spremenljivke vstaviš isti tip kvadrata kot za izhod, vse drugo ti je pa napisal ze amacar.
Za vhod spremenljivke vstaviš isti tip kvadrata kot za izhod, vse drugo ti je pa napisal ze amacar.
mihy11 ::
Saj sem misli sliko.
Za vhod spremenljivke vstaviš isti tip kvadrata kot za izhod, vse drugo ti je pa napisal ze amacar.
Če se nisem kje zmotil je tako potem...Samo sedaj nevem točno kaj naj še v romb napišem, kjer se napiše odločitev
http://prntscr.com/1q2b9c
Zgodovina sprememb…
- spremenil: mihy11 ()
mlamat ::
Potrebuješ še eno spremenljivko, ki bo sprejela vrednost iz VHODA in se bo nahajala znotraj zanke.
mihy11 ::
Xpie ::
Za lažje risanje diagramov poteka(algoritmov), lahko uporabiš program z imenom Raptor klik
spletne-novice.si
mihy11 ::
def0r ::
Ni problem da se sele ucis. Problem je bolj kakor vidim, da noces pomoci ampak hoces resitev. Vsi tukaj so ti podali cisto vse kar rabis.
Mogoce bi se ti splacalo malce ponoviti solske primere da vidis kako izdelati diagram.
Mogoce bi se ti splacalo malce ponoviti solske primere da vidis kako izdelati diagram.
mihy11 ::
Ni problem da se sele ucis. Problem je bolj kakor vidim, da noces pomoci ampak hoces resitev. Vsi tukaj so ti podali cisto vse kar rabis.
Mogoce bi se ti splacalo malce ponoviti solske primere da vidis kako izdelati diagram.
Diagram znam kar dobro, vendar mi niso ti izrazi najbolj jasni, ker jih ima profesor čisto drugačne...
mlamat ::
Če so ti jasni diagrami, prosim da nam napišeš koliko je vrednost spremenljivk šolskega primera po koncu vsake zanke in končen rezultat, pa recimo da gre samo do 5 in ne do 100
Npr. :
1. zanka: N=?, VSOTA=?,
2. zanka: N=?, VSOTA=?,
...
Npr. :
1. zanka: N=?, VSOTA=?,
2. zanka: N=?, VSOTA=?,
...
mihy11 ::
Če so ti jasni diagrami, prosim da nam napišeš koliko je vrednost spremenljivk šolskega primera po koncu vsake zanke in končen rezultat, pa recimo da gre samo do 5 in ne do 100
Npr. :
1. zanka: N=?, VSOTA=?,
2. zanka: N=?, VSOTA=?,
...
Vrednost spremenljivk nam profesor ni podal...dal nam je samo dokler so števila različna od 0.
shadeX ::
Ce take osnovne naloge ne znas resit, ne vem kaj delas na racunalniskem faksu.
Zakaj kritiziranje? Lepo prosim malo motivacije za fanta. Seveda je enostavna naloga, ampak za nekoga ki šele vstopi v svet računalništva/programiranja, je to nekaj čisto novega. Izraz "spremenljivka" itak pozna vsak že iz osnovne šole. Najprej je pa seveda potrebno rahlo znanje rač. jezika za tako nalogo. Pač moraš poznat kaj dela "while", "do while", variable increment..itd.
Vse to je za fanta novo in jaz verjamem da je zmeden, kritike ga bojo pa samo še bolj na dno postavile in se bo fant težje učil oz. ne bo imel veselje do tega.
Veš kaj je pomembno? To da imaš veselje in voljo. Potem si zmagal. Ne obupaj. Kar se tiče naloge, imaš pa zgoraj kar nekaj dobrih primerov. In ne išči rešitev. Išči namige, iz namigov pa dobi svojo rešitev. Tako boš postal najboljši!
Zgodovina sprememb…
- spremenil: shadeX ()
mihy11 ::
Ce take osnovne naloge ne znas resit, ne vem kaj delas na racunalniskem faksu.
Ti pa si tapravi ;) sem v 2. letniku srednje šole in šele začenjamo z programiranjem.
Ce take osnovne naloge ne znas resit, ne vem kaj delas na racunalniskem faksu.
Zakaj kritiziranje? Lepo prosim malo motivacije za fanta. Seveda je enostavna naloga, ampak za nekoga ki šele vstopi v svet računalništva/programiranja, je to nekaj čisto novega. Izraz "spremenljivka" itak pozna vsak že iz osnovne šole. Najprej je pa seveda potrebno rahlo znanje rač. jezika za tako nalogo. Pač moraš poznat kaj dela "while", "do while", variable increment..itd.
Vse to je za fanta novo in jaz verjamem da je zmeden, kritike ga bojo pa samo še bolj na dno postavile in se bo fant težje učil oz. ne bo imel veselje do tega.
Veš kaj je pomembno? To da imaš veselje in voljo. Potem si zmagal. Ne obupaj. Kar se tiče naloge, imaš pa zgoraj kar nekaj dobrih primerov. In ne išči rešitev. Išči namige, iz namigov pa dobi svojo rešitev. Tako boš postal najboljši!
HVALA ZA VZPODBUDO.
Zgodovina sprememb…
- spremenil: mihy11 ()
matejm1994 ::
najprej moraš vedeti točno, kaj želiš, da program dela. Potem se lotiš reševanja problema. In ne skrbi, vsi smo bili na začetki. Prav tako kot ti je nekdo zgoraj povedal, priporočam, da si pobereš dol program raptor, ki je namenjen prav učenju tega. Sedaj pa k problemu. Ti želiš, da bi program preštel, koliko je števil, ki smo jih vnesli, različnih od nič. Torej, recimo ,da se program ustavi in izpiše koliko števil je različnih od nič, šele, ko uporabnik vnese število nič.
Kaj sploh rabiš za ta program:
- Neko spremenljivko, ki se bo povečala vedno, ko bo uporabnik vpisal število različno od ničle
- neki spremenljivko "vsota"
- eno spremenljivko, v katero bomo shranjevali kar je uporabnik vnesel.
- Zanko, ki se bo nehala izvajat, ko bo uporabnik pritisnil številko nič.
- Če pa uporabnik ne pritisne številke nič, potem potrebujemo ukaz, ki spremenljivko poveča za eno.
- Ko se zanka konča (uporabnik pritisne nič) mora program izpisati vrednost spremenljivke.
Potek programa
- Najprej naj program določi spremenljivko z nekim imenom (recimo ime: "st") te ji da vrednost nula. Ta bo uporabljena za šteti, koliko števil različnih od nula je uporabnik vpisal.
- Program določi spremenljivko, kjer bodo shranjena zadnja vrednost, ki jo je uporabnik vnesel. (recimo z imenom "stevilo")
- Program sedaj določi spremenljivko vsota "vsota" in da vrednost nula.
(od tukaj naprej je v do...while zanki)
- program prebere kar je uporabnik vnesel ter shrani v "stevilo"
-program iz if pogojem preveri, če je vrednost nula, če je, gre v pogoj do...while zanke, sicer poveča števec za ena in prišteje to število vsoti
(pogoj do...while zanke)
v pogoj do...while zanke pa lahko uporabiš tole: "!=" Ta znak (brez navednic) preverja, če je prvi številko, različno od drugega. (Primer: 13 != 2)...torej, tu primerja, če je 13 različno od 2. Lahko pa bi tudi uporabil to, da bi pogledal če je številko večje ali manjše od nula.
|| ali
&& in
Lp
Kaj sploh rabiš za ta program:
- Neko spremenljivko, ki se bo povečala vedno, ko bo uporabnik vpisal število različno od ničle
- neki spremenljivko "vsota"
- eno spremenljivko, v katero bomo shranjevali kar je uporabnik vnesel.
- Zanko, ki se bo nehala izvajat, ko bo uporabnik pritisnil številko nič.
- Če pa uporabnik ne pritisne številke nič, potem potrebujemo ukaz, ki spremenljivko poveča za eno.
- Ko se zanka konča (uporabnik pritisne nič) mora program izpisati vrednost spremenljivke.
Potek programa
- Najprej naj program določi spremenljivko z nekim imenom (recimo ime: "st") te ji da vrednost nula. Ta bo uporabljena za šteti, koliko števil različnih od nula je uporabnik vpisal.
- Program določi spremenljivko, kjer bodo shranjena zadnja vrednost, ki jo je uporabnik vnesel. (recimo z imenom "stevilo")
- Program sedaj določi spremenljivko vsota "vsota" in da vrednost nula.
(od tukaj naprej je v do...while zanki)
- program prebere kar je uporabnik vnesel ter shrani v "stevilo"
-program iz if pogojem preveri, če je vrednost nula, če je, gre v pogoj do...while zanke, sicer poveča števec za ena in prišteje to število vsoti
(pogoj do...while zanke)
v pogoj do...while zanke pa lahko uporabiš tole: "!=" Ta znak (brez navednic) preverja, če je prvi številko, različno od drugega. (Primer: 13 != 2)...torej, tu primerja, če je 13 različno od 2. Lahko pa bi tudi uporabil to, da bi pogledal če je številko večje ali manjše od nula.
|| ali
&& in
Lp
MrBrdo ::
Ne podpirat lenobe. To je lenoba. Obstajajo knjige, kjer je vse razloženo, če si že prešprical predavanja. Lenoba.
MrBrdo
def0r ::
flowchart diagrami
Malce se googlaj to in malce poskusi delati primere, najbrz po dnevu ali dveh bos znal vse napisati kar ti bo najbrz dal.(Ceprav se mi zdi lazje napisat kodo v minutki kakor oblikovat flowchart za tako kratko nalogo :), ampak ce imas to zahtevo jo pac imas.)
Malce se googlaj to in malce poskusi delati primere, najbrz po dnevu ali dveh bos znal vse napisati kar ti bo najbrz dal.(Ceprav se mi zdi lazje napisat kodo v minutki kakor oblikovat flowchart za tako kratko nalogo :), ampak ce imas to zahtevo jo pac imas.)
kr?en ::
+1@MrBrdo
In? To ni izgovor, da ne mores sprasevat na netu za resitev in ne sam priti do zakljucka (ne nucas znat programirat, da resis tako nalogo, samo malo zdrave pameti).
Ce take osnovne naloge ne znas resit, ne vem kaj delas na racunalniskem faksu.
Ti pa si tapravi ;) sem v 2. letniku srednje šole in šele začenjamo z programiranjem.
In? To ni izgovor, da ne mores sprasevat na netu za resitev in ne sam priti do zakljucka (ne nucas znat programirat, da resis tako nalogo, samo malo zdrave pameti).
Zgodovina sprememb…
- spremenil: kr?en ()
sirotka ::
+1@MrBrdo
Ce take osnovne naloge ne znas resit, ne vem kaj delas na racunalniskem faksu.
Ti pa si tapravi ;) sem v 2. letniku srednje šole in šele začenjamo z programiranjem.
In? To ni izgovor, da ne mores sprasevat na netu za resitev in ne sam priti do zakljucka (ne nucas znat programirat, da resis tako nalogo, samo malo zdrave pameti).
To ni res, sej po zdravi pameti se ti približno zdi, kako to rešiti, samo spravit to v pravo "logiko", je pa drugo. Škoda pametovanja, lepo je vprašal za pomoč in tukaj ni nič spornega.
phyro ::
Ce take osnovne naloge ne znas resit, ne vem kaj delas na racunalniskem faksu.
stvari ki so enmu trivialne so lahko nekomu daleč od tega. In to nima veze z zdravo pametjo, mi to delamo že avtomatsko in podzavestno ampak na začetku ko je vse novo pa gledamo vsi na različne načine, eni hitro najdejo kako se pride do rešitve, drugi strugglajo dva tedna, sam to ni noben indikator kdo je sposoben za faks in kdo ni. Jst nisem znal takih nalog rešit, in fact bil sm med top5 najslabših prvi mesec vaj (s to razliko da sem jaz dejansko bil v 1. letniku računalniškega faksa ). Izpit sem pisal 100 in takih primerov je kar nekaj. long story short, če bi takega spoznal na začetku semestra bi mu reku "kaj sploh delaš tle", če bi na koncu bi bla druga zgodba. Eni rabjo več za en del snovi, drugi za drugega, če na začetku ne gre se ne da še nič ocenit
Ne pravim da ni len, ampak ne spodbujam takega načina razmišljanja, ker ljudje ki ne razumejo stvari res ne rabijo zraven še folka ki jim take stvari govori ;)
nuclear ::
Ko se prvič srečaš s programiranjem, se ponavadi srečaš z algoritmi. In povedal bi, da so algoritmi za začetnika še težji kot pisanje kode. Ne vem zakaj profesorji še vedno rinejo z algoritmi.
Če bi jaz bil profesor, bi šel direkt s programiranjem.
1. pokazal bi kako se opredeli in določi vrednost spremenljivke, in jo izpisal na ekranu.
- to bi začetniškim možganom pokazalo: "Aha, en izpis cifre, zakon!"
2. vprašal bi jih, "Kolikokrat od 1 do 10 bi želeli, imeti izpisano cifro na ekran?"
- v primeru da rečejo 7x, bom šel izpisat sedemkrat cifro na ekran in bom uporabil svoje igralske sposobnosti, kako izmučeno roko že imam ker sem 7x pisal Console.Writeln.
3. takrat bi ljudje rekli, waw to pa je res potratno, in bi jim predstavil for zanko itd itd.
Razlagat je treba začetnikom, kot človeku in ne kot mašini. Problem v Sloveniji je še vedno, ker so zaposleni 50 letni profesorji, ki ne spreminjajo svojega rituala učenja, medtem ko 25 so letni entuziasti(kakšni učenja željni mladeniči) v senci teh ljudi "z izkušnjami".
Pri mihy11, ne vidim lenobe. Vidim le sebe, ko sem začel v srednji šoli prve ure programiranja. Problem ni mihy11, problem je njegov profesor.
Če bi jaz bil profesor, bi šel direkt s programiranjem.
1. pokazal bi kako se opredeli in določi vrednost spremenljivke, in jo izpisal na ekranu.
- to bi začetniškim možganom pokazalo: "Aha, en izpis cifre, zakon!"
2. vprašal bi jih, "Kolikokrat od 1 do 10 bi želeli, imeti izpisano cifro na ekran?"
- v primeru da rečejo 7x, bom šel izpisat sedemkrat cifro na ekran in bom uporabil svoje igralske sposobnosti, kako izmučeno roko že imam ker sem 7x pisal Console.Writeln.
3. takrat bi ljudje rekli, waw to pa je res potratno, in bi jim predstavil for zanko itd itd.
Razlagat je treba začetnikom, kot človeku in ne kot mašini. Problem v Sloveniji je še vedno, ker so zaposleni 50 letni profesorji, ki ne spreminjajo svojega rituala učenja, medtem ko 25 so letni entuziasti(kakšni učenja željni mladeniči) v senci teh ljudi "z izkušnjami".
Pri mihy11, ne vidim lenobe. Vidim le sebe, ko sem začel v srednji šoli prve ure programiranja. Problem ni mihy11, problem je njegov profesor.
Asus G14 2023 - Ryzen 7940HS - 32GB DDR5 - GeForce RTX 4080 - 990 PRO 4TB
mihy11 ::
Če bi bil jaz len nebi naredil prvega letnika srednje rčaunalniške šole z prav dobrim uspehom, ter še zraven treniral hokej vsak dan po 2h.
def0r ::
Če bi bil jaz len nebi naredil prvega letnika srednje rčaunalniške šole z prav dobrim uspehom, ter še zraven treniral hokej vsak dan po 2h.
dvomim da je kdo mislil da si len. Samo je res da si dobil vse informacije trenutno razen koncne resitve:P Raje sporoci kako napredujes oz. kaj si do zdaj naredil.
alexa-lol ::
oh ja... idjea teh diagramov poteka je da nekako bolj formalno opišeš potek delovanja programa, algoritma, funkcije. Ker se iz njih točno vidi kaj in kako lahko na podalgi njih spišeš kodo. Če si bolj vešč teh diagramov za preproste primere ne rišeš amapk direktno pišeš kodo. Fora diagramov je ta preskok od tega kar moraš naresti do programa, nekakšen vmesen korak.
Sej ni nek problem.. Sestavi algoritem, ki bo omogočal vnos števil tako dolgo dokler so različna od nič. Algoritem naj ugotovi koliko smo jih vnesli in koliko je njihova vsota.
OK.. Program, ki bo omogočal vnos števil dokler so ta različna od nič...
pač navadna zanka ...
1: VNOS ŠTEVILA
2: ALI JE ŠTEVILO ENAKO 0? DA: naprej po kodi; NE: GOTO 1
ok kaj vidimo iz tega? rabimo zanko, ki kroži dokler je izpolnjen nek pogoj, pri čemer ne vemo ali bo ta pogoj izpolnjen čez 5 vnosov ali pa čez milijon.. zato izberemo while zanko. Ker moramo najprej vedeti katero številko je uporabnik izbral uporabimo do while zanko, ki izvede kodo znotraj {} potem pa se vpraša ali je pogoj resničen, če je gre na začetek {, če ni gre naprej po kodi.
Ok tu vidimo da rabimo neko spremenljivko da shranimo vrednost vnosa, katero rabimo kasneje za preverbo pogoja. Verjetno jo moramo deklerirati zunaj zanke.. to nisem prepričan.
Potem je pa tu še vsota in število poskusov.
Obe premenljivki dekleriramo zunaj zanke. Znotraj {} do-while zanke damo samo stevec++; in vsota += vnos;
Na koncu izpišemo.
Lahko bi naredili tudi z uporabo while zanke.
Psevdokoda:
Sej ni nek problem.. Sestavi algoritem, ki bo omogočal vnos števil tako dolgo dokler so različna od nič. Algoritem naj ugotovi koliko smo jih vnesli in koliko je njihova vsota.
OK.. Program, ki bo omogočal vnos števil dokler so ta različna od nič...
pač navadna zanka ...
1: VNOS ŠTEVILA
2: ALI JE ŠTEVILO ENAKO 0? DA: naprej po kodi; NE: GOTO 1
ok kaj vidimo iz tega? rabimo zanko, ki kroži dokler je izpolnjen nek pogoj, pri čemer ne vemo ali bo ta pogoj izpolnjen čez 5 vnosov ali pa čez milijon.. zato izberemo while zanko. Ker moramo najprej vedeti katero številko je uporabnik izbral uporabimo do while zanko, ki izvede kodo znotraj {} potem pa se vpraša ali je pogoj resničen, če je gre na začetek {, če ni gre naprej po kodi.
Ok tu vidimo da rabimo neko spremenljivko da shranimo vrednost vnosa, katero rabimo kasneje za preverbo pogoja. Verjetno jo moramo deklerirati zunaj zanke.. to nisem prepričan.
Potem je pa tu še vsota in število poskusov.
Obe premenljivki dekleriramo zunaj zanke. Znotraj {} do-while zanke damo samo stevec++; in vsota += vnos;
Na koncu izpišemo.
Lahko bi naredili tudi z uporabo while zanke.
Psevdokoda:
var stevec var vsota var vnos = dobiVnos() while vnos <> 0 : { stevec++ vsota += vnos vnos = dobiVnos() } print stevec print vsota
Zgodovina sprememb…
- spremenil: alexa-lol ()
mihy11 ::
S pomočjo uporabnika matejm1994 mi je uspelo rešiti zadevo. Hvala tudi VSEM ostalim tudi tistim, ki ste me "kritizirali".
Zgodovina sprememb…
- spremenil: mihy11 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | c napaka .c:4:1: error: expected identifier or '(' before '{' tokenOddelek: Programiranje | 1932 (1505) | MrStein |
» | [C++] Program za iskanje praštevilaOddelek: Programiranje | 1736 (1438) | mindzone |
» | [C Sharp] PIOddelek: Programiranje | 1161 (854) | technolog |
» | programiranje krožek(pomoč)Oddelek: Pomoč in nasveti | 2754 (1742) | Marat |
» | [Java] While zankaOddelek: Programiranje | 2365 (1948) | kunigunda |