Nejasnoća kod dva zadatka

Poštovanje. Trenutno učim programski jezik C#. Učim iz vaše knjige " Uvod u programiranje u programskom jeziku C#". Autori su: Dragan Mašulovič u saradnji sa Nebojšom Vasiljevićem i Milanom Vugdelijom. Zbunjuje me varijabla i njeno značenje koje se pojavljuje u dva zadatka. To je n % 10 i n=n/10. Shvatio sam da n % 10 čita posljednju cifra dok n/10 “otkida” posljednju cifru. Zbunjuje me redoslijed upotrebe. Zašto u primjeru na stranici 24 prvo ide varijabla c0= n%10 pa tek onda n=n/10 a na primjeru na stranici 25 prvo n=n/10 a zatim n % 10 u varijabli k. Logičnije mi je da program prvo pročita pa tek onda “otkine” kao u prvom primjeru. Evo i tekstovi zadataka s obzirom da nemam link zato što mi je knjiga u pdfu.

Primjer na stranici 24. Napisati program koji od korisnika ucitava pozitivan ceo broj n i potom
racuna i štampa zbir poslednje tri cifre broja n.

using System;
class Poslednje3Cifre {
static void Main() {
Console.WriteLine(“Unesi n”);
int n = int.Parse(Console.ReadLine());
int c0 = n % 10; n = n / 10;
int c1 = n % 10; n = n / 10;
int c2 = n % 10;
int z = c0 + c1 + c2;
Console.WriteLine(“Zbir poslednje tri cifre je {0}”, z);
}
}
Ključni deo rešenja se sastoji u tome da uočimo da je
poslednja cifra broja n = n % 10
i da je
broj n bez poslednje cifre = n / 10

Primjer na stranici 25
Na raspolaganju imamo kovanice od 1, 5 i 10 dinara. Program od korisnika učitava neki pozitivan ceo broj koji predstavlja količinu novca, i isplaćuje
mu taj iznos koristeći najmanji mogući broj kovanica.

using System;
class RazmenaNovca {
static void Main() {
int n, k;
Console.WriteLine(“Unesi iznos”);
n = int.Parse(Console.ReadLine());
// prvo apoeni od 10 din
k = n / 10; n = n % 10;
Console.WriteLine("{0} po 10 din", k);
// potom apoeni od 5 din
k = n / 5; n = n % 5;
Console.WriteLine("{0} po 5 din", k);
// ako je nesto ostalo isplacuje se novcicima od 1 din
Console.WriteLine("{0} po 1 din", n);
}
}

1 Like

što se tiče strane 24: c0 je poslednja cifra i nju dobijamo

c0=n%10;

Da bismo dobili cifru c1 (pretposlednju) moramo broj n celobrojno podeliti sa 10 i time smo odbacili poslednju cifru c0 i novi broj n prima vrednost prethodnog n bez poslednje cifre (što smo postigli sa n/10)
Potom od tog novog n gledamo poslednju cifru da bismo od pocetnog n dobili pretposlednju cifru.
Objasnicu na primeru 1234 kako koja promenljiva uzima vrednosti(redom)
n=1234
c0=1234%10=4
n=1234/10=123 -> nova vrednost broja n
c1=123%10=3
n=123/10=12 -> nova vrednost broja n
c2=12%10=2
Dakle zbir cifara je 4+3+2=9.

strana 25: unosi se iznos na početku. k predstavlja najveci broj novcanica od 10din. Ostali iznos (manji od 10din ) se moze dobiti kao ostatak pri deljenju broja n sa 10. Slično je za ostale brojeve
evo primera:
48 din treba da isplatimo
n=48 -> ulaz
k=48/10=4 -> najviše 4 novčanice od po 10din, u suprotnom bi iznos koji treba da se vrati bio najmanje 50din.
n=48%10=8 -> ostatak do 48 jer smo 40 već dali novčanicama od 10 din. Ovaj red bi mogao da se napiše i

n=n-10*k

itd nadam se da je jasno. Javi ako nije.

1 Like

Sve mi je jasno. Hvala na detaljnom objašnjenju, mnogo si mi pomogao. Živio prijatelju!

1 Like