» »

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.

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

mihy11 ::

amacar je izjavil:

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.

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 ;)

Zgodovina sprememb…

  • spremenil: mihy11 ()

mlamat ::

Prosim ne mu pomagati, ker ne gre za pomoč, ampak čisto podpiranje lenobe.

mihy11 ::

mlamat je izjavil:

Prosim ne mu pomagati, ker ne gre za pomoč, ampak čisto podpiranje lenobe.


Saj nisem len...probal sem rešiti sma že v petek vendar, pa mi nekaj stvari ni bilo jasnih.

mlamat ::

Kaj ti ni jasno? Kako deluje zanka?

Nalogo imaš praktično že rešeno, samo 2 stvari je potrebno spremeniti.

mihy11 ::

mlamat je izjavil:

Kaj ti ni jasno? Kako deluje zanka?

Nalogo imaš praktično že rešeno, samo 2 stvari je potrebno spremeniti.



Očitno ne razumeš, da mi ne pišemo na računalniku v kodi ampak to delamo na list v algirotmu...tista slika, ki sme jo priložil prej zraven.

mlamat ::

Saj sem misli sliko.

Za vhod spremenljivke vstaviš isti tip kvadrata kot za izhod, vse drugo ti je pa napisal ze amacar.

mihy11 ::

mlamat je izjavil:

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 ()

vorantz ::

dokler so različna od nič


Čisto malo pomisli

mihy11 ::

vorantz je izjavil:

dokler so različna od nič


Čisto malo pomisli


hmm...števec>0 ?

mlamat ::

Potrebuješ še eno spremenljivko, ki bo sprejela vrednost iz VHODA in se bo nahajala znotraj zanke.

mihy11 ::

mlamat je izjavil:

Potrebuješ še eno spremenljivko, ki bo sprejela vrednost iz VHODA in se bo nahajala znotraj zanke.


Hm kaj pol naj vstavim v romb?

Xpie ::

Za lažje risanje diagramov poteka(algoritmov), lahko uporabiš program z imenom Raptor klik
spletne-novice.si

mihy11 ::

Xpie je izjavil:

Za lažje risanje diagramov poteka(algoritmov), lahko uporabiš program z imenom Raptor klik


Mi še ni najbolj jasno kja naj še sedaj naredim...se vidi, da se to šele učim

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.

mihy11 ::

def0r je izjavil:

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=?,
...

mihy11 ::

mlamat je izjavil:

Č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.

mlamat ::

Mislim da se norčuješ, zato ti ne bom več odgovarjal.

kr?en ::

Ce take osnovne naloge ne znas resit, ne vem kaj delas na racunalniskem faksu.

shadeX ::

kr?en je izjavil:

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 ::

kr?en je izjavil:

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.

shadeX je izjavil:

kr?en je izjavil:

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

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.)

kr?en ::

+1@MrBrdo

mihy11 je izjavil:

kr?en je izjavil:

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 ::

kr?en je izjavil:

+1@MrBrdo

mihy11 je izjavil:

kr?en je izjavil:

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 ::

kr?en je izjavil:

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 :D). 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.
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 ::

mihy11 je izjavil:

Č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:
var stevec
var vsota
var vnos = dobiVnos()

while vnos <> 0 : {
stevec++
vsota += vnos

vnos = dobiVnos()
}

print stevec
print vsota

Zgodovina sprememb…

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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

c napaka .c:4:1: error: expected identifier or '(' before '{' token

Oddelek: Programiranje
141944 (1517) MrStein
»

[C++] Program za iskanje praštevila

Oddelek: Programiranje
121753 (1455) mindzone
»

[C Sharp] PI

Oddelek: Programiranje
91176 (869) technolog
»

programiranje krožek(pomoč)

Oddelek: Pomoč in nasveti
442767 (1755) Marat
»

[Java] While zanka

Oddelek: Programiranje
262379 (1962) kunigunda

Več podobnih tem