• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyświetlenie ile razy zostało wykonane działanie.

Object Storage Arubacloud
0 głosów
348 wizyt
pytanie zadane 30 listopada 2015 w C i C++ przez Kaydan Początkujący (260 p.)
Witam,

Mam pytanie odnośnie jak zakodować by program wyświetlił mi ilość wykonanych działań ?

Chodzi mi tu że po wprowadzeniu jakiejś liczby program przy użyciu modulo dzieli liczbe póki wynikiem będzie "0",

zależy mi na takim rezultacie:

"

podaj liczbe: 2,43 //przykładowo

liczba wykonanych działań: 14.

"

Z góry dziękuję za pomoc,

Pozdrawiam!

4 odpowiedzi

0 głosów
odpowiedź 30 listopada 2015 przez andrzej_bl Bywalec (2,390 p.)
wybrane 26 lutego 2016 przez Kaydan
 
Najlepsza

Z tymi monetami to już trochę jaśniej się zrobiło.

Po pierwsze nie baw się zmiennymi rzeczywistymi tylko zamień wszystko na grosze:

double kwota;

cin >> kwota;

kwota *=100;

int grosze;

grosze = (int) kwota;

Po drugie:

Dzielisz grosze przez 20 i otrzymujesz liczbę 20-to groszówek (dzielenie całkowite).

ilosc_monet += grosze / 20;

natomiast reszta z tego dzielenia to pozostała kwota do rozmieniania:

grosze %= 20;

No i to samo robisz dla 10-cio, 5-cio, dwu i jedno groszówek,

Zwróć uwagę, że po ostatnim dzieleniu (przez 1) reszta ZAWSZE zostaje zero.

komentarz 30 listopada 2015 przez Kaydan Początkujący (260 p.)
no pięknie tutaj wszystko ogarnąłem, w sensie żeby nie bawić się we floaty itp, tylko przekształcić to na int'y. Jak teraz to ubrać tak żeby liczyło i wyrzucało mi ilość monet ?

Bo jak zrobię normalne dzielenie to podczas, gdy zostanie mi reszta np.:

25/ 20= 1.25 // i tutaj mam 1*0.20gr

jak potem wypisac zeby program brał pod uwage to co po przecinku ? Jak też zakodować żeby program w ilości monet brał pod uwagę tylko to co po danym dzieleniu jest przed przecinkiem ?
komentarz 1 grudnia 2015 przez andrzej_bl Bywalec (2,390 p.)
Jak dzielisz inty to 25 / 20 daje wynik 1

25 % 20 daje wynik 5 (pięć reszty)

teraz 5 / 10 daje ZERO

5 % 10 daje wynik 5 (pięć reszty)

teraz 5 / 5 daje 1

5 % 5 daje ZERO RESZTY czyli koniec działań bo nie ma już nic do rozmieniania

czyli 1 dwudziestogroszówka i 1 pięciogroszówka

To są działania na integerach - nie mogą dać ułamokowego wyniku
+2 głosów
odpowiedź 30 listopada 2015 przez Józef Mądrala (5,200 p.)
Najprościej będzie wprowadzić dodatkową zmienną zliczającą powtórzenia (na początku przypisać jej wartość 0) i inkrementować ją w pętli, która wykonuje operację. Po jej zakończeniu zmienna będzie przechowywała liczbę powtórzeń. Nie wiem, jak dokładnie ma wyglądać program (np. przez ile wybrana liczba ma być dzielona), więc fajnie by było, gdybyś zamieścił kod.
0 głosów
odpowiedź 30 listopada 2015 przez Sebastian R Obywatel (1,110 p.)
edycja 30 listopada 2015 przez Sebastian R

Zadanie jest dosyć niepełne ale myślę, że chodzi Ci o modulo o stałym dzielniku. np. 2.

Jeśli chcesz podać jakąkolwiek liczbę, załóżmy 7 i podzielimy ją przez 2, wyjdzie nam taki wynik za pierwszym razem.

7/2 = 3 reszty 1. Doprecyzuj zadanie jakie masz wykonać.

komentarz 30 listopada 2015 przez Józef Mądrala (5,200 p.)
No właśnie na tym polega cały problem. Przy stałym dzielniku (np. 2) istnieje ryzyko, że warunek pętli (wynik=0) nigdy nie zostanie spełniony  i będzie się ona wykonywała w nieskończoność:

5mod2 = 1, 1mod2 = 1, 1mod2 = 1...
komentarz 30 listopada 2015 przez Sebastian R Obywatel (1,110 p.)
Z tego co wiem, to tak wyglądać nie będzie. Wystarczy wziąć prosty przykład.
weźmiemy 30 sposobem rozkładu binarnego.

30 | 0

15 | 1

7   | 1

3   | 1

1   | 1

0   | koniec

Wyjdzie nam 1 1 1 1 0.

Jeśli wzielibyśmy np. 25,3 to chyba byłoby tak.

25,3 | 1

13 |   1

6  |  0

3 | 1

1 | 1

0 | koniec

wychodzi nam 11011 <- Tutaj coś źle jest, pozostawiam ten komentarz dla Ciebie, może coś Ci się uda z tym zrobić tymczasem ja uciekam na zajęcia, sprobuje Ci pomoc za 2h.
komentarz 30 listopada 2015 przez Józef Mądrala (5,200 p.)
Fakt, popełniłem błąd. Polegał on na tym, że do głównej zmiennej zapisywałem wynik modulo, a nie dzielenia (czyli x = 5%2).

Jeżeli natomiast chodzi o Twój przykład, to zastanawiam się, czy nie można do tego podejść tak, że 25,3 to po prostu suma 25 + 0,3. W takim przypadku wystarczy oddzielnie przełożyć na binarny 25 i 0,3, a następnie je dodać:

25 = 11001

0,3 = 0,01(0011) - mogłem się tutaj pomylić przy przeliczaniu lub zapisie, ponieważ już dawno tego nie robiłem

Więc 25,3 = 11001,01(0011). Co sądzisz o takim rozwiązaniu?
0 głosów
odpowiedź 30 listopada 2015 przez Kaydan Początkujący (260 p.)
Witam, Przyznaje racje chaotycznie i nieczytelnie opisalem problem :) Może przytoczę cale polecenie zgodnie z ktorym mam zrobić ten program. "w języku C stwórz program, który będzie działał jak maszyna do rozmieniania pieniedzy. Do dyspozycji masz 0,20zl, 0,10zl, 0,05zl i 0,01zl. Maszyna ma zużywać jak najmniej monet tzn przy każdej kwocie rozmieniać przy użyciu jak największego nominalu. Końcowym wynikiem ma być podanie ilości monet wykorzystanych do rozmiary. " Tutaj mialem kilka problemów wykorzystanie liczb float i int jednocześnie, myślałem właśnie żeby rozwiązać to za pomocą modulo z tym ze do tego typu działań moge używać jedynie int, dwa to rozpisanie odpowiednich pętli i 3 jak zakodować aby wynikiem zapytania bylo podanie ilości monet. Przykładowo: Ile posiadasz pieniedzy?: 1,50 Odp: 8 monet// gdyż program wykorzysta 7*20gr i 1*10gr . Mam nadzieje ze teraz to wygląda troche jaśniej :) Pozdrawiam!

Podobne pytania

0 głosów
1 odpowiedź 115 wizyt
pytanie zadane 29 lutego 2020 w Python przez Marak123 Stary wyjadacz (11,190 p.)
0 głosów
1 odpowiedź 1,034 wizyt
pytanie zadane 27 października 2015 w C i C++ przez Melchior Obywatel (1,300 p.)
0 głosów
1 odpowiedź 1,762 wizyt
pytanie zadane 20 maja 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...