» »

[FRI Seminarska] Pomoč

[FRI Seminarska] Pomoč

busanc20 ::

Sem 1. letnik FRIja in že pri prvi seminarski pri programiranju1 se mi je pošteno zalomilo. Bi mi lahko kdo pomagal z nasveti kako naj rešim nalogo?
Besedilo naloge je seldeče:

Banka
Drago $. Bilijonc, bajno bogati bankir, se je naveličal vrtoglavih milij
ard, zato je odprl
banko, ki razpolaga zgolj z bankovci po 5 evrov in kovanci po 2 evr
a in 1 evro. Banka
prične z zalogo
M bankovcev po 5 EUR,
N kovancev po 2 EUR in
P kovancev po 1 EUR.
Vsaka stranka Dragove banke bodisi položi ali pa dvigne določen zn
esek. Stranka lahko v banko položi od 0 do 9 bankovcev po 5 EUR, od 0 do 9 kovancev po 2 EU
R in od 0 do 9 kovancev po 1 EUR, vendar pa mora biti skupni znesek pologa enak
najmanj 1 EUR. Pri dvigu pa lahko stranka zahteva poljuben znesek. Banka ga izplača p
o sledečem postopku:
• izplačuje bankovce po 5 EUR, dokler je mogoče (zaključi, ko ji jih z
manjka ali pa ko
še ne izplačani znesek pade pod 5 EUR);
• nato na enak način (dokler je mogoče) izplačuje kovance po 2 EUR;
• preostanek izplača s kovanci po 1 EUR.
Na primer, če ima banka na zalogi 10 bankovcev po 5 EUR, 10 kovance
v po 2 EUR in 10 kovancev po 1 EUR, bo znesek 38 EUR izplačala kot
7×5 EUR+1×2 EUR+1×1 EUR.

Če pa ima namesto 10 na voljo samo 6 bankovcev po 5 EUR, bo isti znes
ek izplačala kot 6 ×5 EUR + 4×2 EUR.
Če banka zahtevanega zneska ne more izplačati, propade, Drago $
. Bilijonc pa jo s prvim letalom pobriše na Kajmanske otoke. (Banka lahko propade tudi v p
rimeru, če nima ustreznih apoenov. Na primer, če nima nobenega kovanca po 1 EUR,
stranka pa želi dvigniti znesek 1 EUR, bo banka propadla ne glede na zalogo apoenov
po 5 in 2 EUR.)
Napišite program, ki simulira delovanje opisane banke. Uporabnik naj
v zanki vnaša dvige in pologe, program pa naj sproti izpisuje stanje na banki, pri
dvigih pa še način izplačila. Uporabnik naj pologe vnaša kot pozitivna, dvige pa kot nega
tivna cela števila.
Pri pologih naj stotice predstavljajo število položenih bankovcev po
5 EUR, desetice in enice pa število položenih kovancev po 2 oz. 1 EUR. Na primer, vnos
703 naj predstavlja polog 7 bankovcev po 5 EUR, 0 kovancev po 2 EUR in 3 kovance po 1 EUR
, vnos 6(=006) pa polog 0 bankovcev po 5 EUR, 0 kovancev po 2 EUR in 6 kovance
v po 1 EUR.
Pri dvigih pa naj vnešena števila predstavljajo kar dvignjeni znesek (npr. vnos
-38 naj predstavlja dvig 38 EUR). Program naj se zaključi, ko uporabnik vn
ese število 0 ali pa ko banka ne more izplačati zahtevanega zneska.
Števila M,N in P definirajte v programu kot konstante. (Uporabite imena, ki so bolj
smiselna od M,N in P.)
Primer
delovanja programa za M=10,
N= 10,
P= 10:
Stanje na banki: 10 | 10 | 10
Vnesite polog ali dvig:
-38
Izplačilo: 7 | 1 | 1
// 7 po 5 EUR, 1 po 1 EUR, 1 po 1 EUR
Stanje na banki: 3 | 9 | 9
// 3 po 5 EUR, 9 po 1 EUR, 9 po 1 EUR
Vnesite polog ali dvig:
-14
Izplačilo: 2 | 2 | 0
Stanje na banki: 1 | 7 | 9
Vnesite polog ali dvig:
-14
Izplačilo: 1 | 4 | 1
Stanje na banki: 0 | 3 | 8
Vnesite polog ali dvig:
5
// = 005
Stanje na banki: 0 | 3 | 13
Vnesite polog ali dvig:
-4
Izplačilo: 0 | 2 | 0
Stanje na banki: 0 | 1 | 13
Vnesite polog ali dvig:
300
Stanje na banki: 3 | 1 | 13
Vnesite polog ali dvig:
96
// = 096
Stanje na banki: 3 | 10 | 19
Vnesite polog ali dvig:
-54
Izplačilo: 3 | 10 | 19
Stanje na banki: 0 | 0 | 0
Vnesite polog ali dvig:
761
Stanje na banki: 7 | 6 | 1
Vnesite polog ali dvig:
-3
Izplačilo: 0 | 1 | 1
Stanje na banki: 7 | 5 | 0
Vnesite polog ali dvig:
-6
Zneska ni mogoče izplačat!
  • spremenil: Mavrik ()

busanc20 ::

A mi res nebi znal kdo pomagati? Pozabil sem omeniti da je treba program napisati v Javi

Senitel ::

1. Naslednjič izberi kakšen pameten naslov teme.
2. Kje se je zalomilo?

D-monLord ::

Zgleda kot matematični problem in ne programerski.

Je pa preveč teksta za prebrat, da bi se res prepričal v to.

Roadkill ::

busanc: Tule neradi namesto študentov rešujemo naloge. Jim pa z veseljem pomagamo.
Tako da je navada, da napišeš kaj si zaenkrat naredil in kje točno se ti zatakne.

Pa lahko bi se vsaj toliko potrudil, da bi temi dal kak smiselen naslov in pa malo lepše uredil besedilo naloge.
Ü

Yacked2 ::

Tole je zelo lahka naloga, kjer ne potrebuješ razen znanja sintakse prav ničesar. Ker sam ne programiram v javi ti teško dam kontretno rešitev. Drugače pa:

#najavimo količino denarja v banki, pač ločeno za bankovce za 5,2 in 1 evro. Če naloga zahteva da uporabnik sam določi koliko denarja je na začetku v banki pač daš bankovec5 = raw_input("Koliko bankovcev po 5€? ")

bankovec5 = 10
bankovec2 = 10
bankovec1 = 10

#nato gremo v neskončno zanko
while True:

uporabnik = raw_input("Kaj želite ?")
#Če je uporabnik unese negativno številko to pomeni, da bomo danar izplačali, se pravi bomo odšteli od bankovcev, drugače pa prišteli

if int(uporabnik)==0:
echo "Nasvidenje"
breake() #če uporabnik vnese nič se program zapre

elif int(uporabik) < 0:
Izplačilo(int(uporabik))

elif int(uporabnik) > 0:
Dvig(int(uporabik))

Sedaj še napiši funkciji izplačilo ter dvig, ki opravita delo bankirja, ter ob morebitni napaki pobijeta program. V teh dveh funkcijah moraš bankovec5,bankovec2,bankovec1 deklarirati kot globalno spremenljivko, da jih boš lahko spreminjal. Najprej pogledaš če je uporabnikova številka večja od 5, nato ugotoviš kolikokrat ter toliko je bankovcev po 5, pogledaš če je dovolj bankovcec po pet ter nadaljuješ: ostanek pogledaš če lahko deliš z 2 ter tako naprej. Nato še odvisno od dvig ali izplačilo odšteješ oziroma prišteješ. Pri prištevanju ni problema, pri odštevanju pa pazi da bo bankovec5,bankovec2,bankovec1 vedno večji (ali enak) od 0. Če uporabik želi dvigniti denar...
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

mladec ::

Ojla prav na hitro sem ti sestavil polog. Ne vem tudi če je prav, meni dela, naj strokovnjaki skritizirajo. Je pa v C# ker jave ne znam ampak je zelo podobno. Ostalo poizkusi sam napraviti, tako se najbolje navadiš.
Vprašanje še strokovnjakom.. zakaj morajo biti m, n in p konstante?
Lp

int m = 10;
int n = 10;
int p = 10;
Console.WriteLine("Trenutno stanje:\n|"+m+"|"+n+"|"+p+"|");

while (true)
{
Console.WriteLine("Navedite Vnos/Izplačilo");
int uporabnik = int.Parse(Console.ReadLine());
if (uporabnik > 0)
{
//polog
//trimestno število delim na stotice, desetice, enice.
int a = uporabnik % 10;
int b = uporabnik / 10;
int c = b % 10;
int d = b / 10;
m = m + d;
n = n + c;
p = p + a;


Console.WriteLine();
//Console.WriteLine(a);
//Console.WriteLine(c);
//Console.WriteLine(d);
Console.WriteLine("Novo stanje:\n|" + m + "|" + n + "|" + p + "|");
Console.WriteLine("Navedite Vnos/Izplačilo");
}
}

Zgodovina sprememb…

  • spremenil: mladec ()

mladec ::

Tukaj še za dvig. Upam, da je prav, meni dela vredu v C# seveda.


while (true)
{
if (a > 0)
{
int b = a / 5;
int c = a % 5;
int d = c / 2;
int e = d % 2;
Console.WriteLine(b);
Console.WriteLine("ostanek a-ja "+c);
Console.WriteLine(d);
Console.WriteLine("ostanek d-ja "+e);
m = m + b;
n = n + d;
p = p + e;
Console.WriteLine("Trenutno stanje:\n|" + m + "|" + n + "|" + p + "|");
Console.ReadLine();
}


Vredno ogleda ...

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

C# Menjalec Valut (EUR to ...)

Oddelek: Programiranje
71470 (1383) Goran's Blog
»

[c#] Ustvarjanje objekta v drugem razredu

Oddelek: Programiranje
81562 (1507) Cvenemir
»

[C#] Preprost račun

Oddelek: Programiranje
81089 (813) darkkk
»

Konec programa

Oddelek: Programiranje
10898 (680) alexa-lol
»

Pomoč pri programčkih

Oddelek: Programiranje
152727 (2377) Mitja Bonča

Več podobnih tem