Prosty? wzór na potrzeby programu

Proste problemy dotyczące wzorów skróconego mnożenia, ułamków, proporcji oraz innych przekształceń.
Kubaz
Użytkownik
Użytkownik
Posty: 54
Rejestracja: 2 mar 2009, o 20:33
Płeć: Mężczyzna
Podziękował: 9 razy

Prosty? wzór na potrzeby programu

Post autor: Kubaz »

Dzień dobry,

jestem programistą hobbystą i zazwyczaj jeśli mam do czynienia z matematyką, to są to raczej proste przekształcenia. Tutaj jednak myślę nad tym wzorem i mam zaćmienie, chyba za długo siedzę przed komputerem.

Otóż jest jakaś liczba znana, większa od 2000. Jak z tej liczny mogę uzyskać liczbę mniejszą bądź równą 2000 odejmując od niej wielokrotności (ile?) 2000? Proszę o jakiś elegancki wzór, który sam "domyśli się" ile tych wielokrotności odjąć żeby uzyskać wynik <= 2000.

Przykładowo.

Liczba 5130 to:
5130 - 2000 - 2000 = 1130

Liczba 8429 to:
8429 - 2000 - 2000 - 2000 - 2000 = 429.

Jakieś pomysły? Pozdrawiam ;)
a4karo
Użytkownik
Użytkownik
Posty: 22173
Rejestracja: 15 maja 2011, o 20:55
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 38 razy
Pomógł: 3748 razy

Re: Prosty? wzór na potrzeby programu

Post autor: a4karo »

Część całkowita z liczby podzielonej przez 2000
Kubaz
Użytkownik
Użytkownik
Posty: 54
Rejestracja: 2 mar 2009, o 20:33
Płeć: Mężczyzna
Podziękował: 9 razy

Re: Prosty? wzór na potrzeby programu

Post autor: Kubaz »

hmm.. czyli wzór x = ?
Awatar użytkownika
Dasio11
Moderator
Moderator
Posty: 10211
Rejestracja: 21 kwie 2009, o 19:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 40 razy
Pomógł: 2359 razy

Re: Prosty? wzór na potrzeby programu

Post autor: Dasio11 »

To zależy w jakim języku programujesz.
Bran
Użytkownik
Użytkownik
Posty: 421
Rejestracja: 19 lut 2019, o 19:30
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 163 razy
Pomógł: 16 razy

Re: Prosty? wzór na potrzeby programu

Post autor: Bran »

Może jest na to gotowa funkcja, ale jeśli nie będziesz mógł znaleźć, to możesz skorzystać z twierdzenia o dzieleniu z resztą.

Od danej liczby odejmujesz resztę z dzielenia tej liczby przez \(\displaystyle{ 2000}\) i dzielisz przez \(\displaystyle{ 2000}\)
Podam na przykładzie, który podałeś:

\(\displaystyle{ \left[ 5130 - 5130 \;(mod \; 2000)\right] : 2000 = \left[ 5130-1130\right]:2000 = 2}\)

Z tego co wiem, to funkcja modulo jest podstawową funkcją w programowaniu, ale być może jest już gotowa funkcja, która to obsługuje. Jeżeli chodzi o programowanie, to niestety kompletnie się nie znam.

Edit: Ale część całkowita liczby, czyli "podłoga" (floor) też jest dość popularna, a to jest właśnie to, czyli
\(\displaystyle{ \lfloor {5130:2000}\rfloor = 2}\)
Elayne
Użytkownik
Użytkownik
Posty: 926
Rejestracja: 24 paź 2011, o 01:24
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 75 razy
Pomógł: 274 razy

Re: Prosty? wzór na potrzeby programu

Post autor: Elayne »

Kod: Zaznacz cały

int a, b, c, d;
a = 5110; // liczba całkowita
b = 2000; // dzielnik, liczba całkowita
c = 0;
d = a;
while (d>=b)
{
c = c + 1;
d = d - b;
}
Ponury123
Użytkownik
Użytkownik
Posty: 128
Rejestracja: 5 lip 2015, o 14:48
Płeć: Mężczyzna
Lokalizacja: nie wiem
Podziękował: 11 razy
Pomógł: 24 razy

Re: Prosty? wzór na potrzeby programu

Post autor: Ponury123 »

Elayne pisze: 3 sie 2021, o 01:02

Kod: Zaznacz cały

int a, b, c, d;
a = 5110; // liczba całkowita
b = 2000; // dzielnik, liczba całkowita
c = 0;
d = a;
while (d>=b)
{
c = c + 1;
d = d - b;
}
Mam zastrzeżenia do kodu powyżej, po pierwsze po co inkrementujesz zmienną c w każdej iteracji, po drugie ta pętla nie jest potrzebna. Całość sprowadza się do tego co powiedział a4karo, czyli:

Kod: Zaznacz cały

int number = 5030 //zadana liczba
int result = number / 2000;
Warto pamiętać, że powyższy kod nie zadziała w każdym języku programowania, po drugie kod będzie działał tylko dla liczb nieprzekraczających int-a.
Elayne
Użytkownik
Użytkownik
Posty: 926
Rejestracja: 24 paź 2011, o 01:24
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 75 razy
Pomógł: 274 razy

Re: Prosty? wzór na potrzeby programu

Post autor: Elayne »

Miałbym więcej zastrzeżeń do kodu powyżej, ale nie o to tu chodzi. Jeśli odczytamy zmienną c to otrzymamy ile razy dzielnik występuje w danej liczbie.
Ponury123
Użytkownik
Użytkownik
Posty: 128
Rejestracja: 5 lip 2015, o 14:48
Płeć: Mężczyzna
Lokalizacja: nie wiem
Podziękował: 11 razy
Pomógł: 24 razy

Re: Prosty? wzór na potrzeby programu

Post autor: Ponury123 »

Rzeczywiście, całkiem o tym zapomniałem(co do zmiennej c), a co do zastrzeżeń, to chętnie posłucham, nie z jakieś perwersji, ale z czystej ciekawości, co masz tam do zarzucenia?

Edit: Chyba, że nie zrozumiałem wyrażenia "do powyższego kodu" i masz na myśli Twój kod. Jeśli jednak mój, to jestem ciekaw co w nim jest nie tak.
Elayne
Użytkownik
Użytkownik
Posty: 926
Rejestracja: 24 paź 2011, o 01:24
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 75 razy
Pomógł: 274 razy

Re: Prosty? wzór na potrzeby programu

Post autor: Elayne »

Miałem na myśli swój kod.
ODPOWIEDZ