matematykaszkolna.pl
programik Benny: Ktoś chętny napisać mały programik w C?
26 kwi 19:03
Damian: zalezy jak mały
26 kwi 19:05
Benny: Bankomat dysponuje banknotami o nominałach: 200, 100, 50, 20 i 10 złotych. Napisz program, który wczyta liczbę naturalną n oznaczającą kwotę (w złotych) żądaną do wypłaty przez użytkownika. Jeśli liczba n jest podzielna przez 10, to program powinien wypisać ile należy wypłacić banknotów o poszczególnych nominałach (tak, aby liczba wszystkich wypłaconych banknotów była najmniejsza z możliwych). Np. gdyby n=670, to program powinien wypisać: 3*200 zł, 1*50 zł, 1*20 zł i zakończyć działanie. Gdyby natomiast liczba n nie była podzielna przez 10, to program powinien poinformować użytkownika, że kwota musi być podzielna przez 10 i wczytać kolejną liczbę wpisaną przez użytkownika. W razie gdyby trzykrotnie użytkownik błędnie wpisał kwotę, to program powinien zakończyć działanie.
26 kwi 19:09
olekturbo: Koniecznie w C czy może być C++?
26 kwi 19:11
Benny: C byłoby spoko emotka
26 kwi 19:17
Mariusz: Potrzebny będzie całkowity licznik wczytań liczby , pięć zmiennych całkowitoliczbowych bądź tablica pięcioelementowa i dzielenie z resztą Jeśli to ma być w C to printf i scanf będą przydatne W C oraz C++ praktycznie nie ma funkcji do obsługi konsoli (tylko stare środowiska Borlandowskie miały jako taką obsługę konsoli ale to nie jest w standardzie)
26 kwi 19:29
Benny: zmienne int n, a, b, c, d, gdzie: a=n/200; b=(n−a*200)/100; itd?
26 kwi 19:37
Mariusz: Ja za a bym przyjął resztę z dzielenia przez 200 a iloraz tego dzielenia zapisał w zmiennej przechowującej liczbę banknotów o nominale 200 W następnym kroku sprawdzałbym liczbę banknotów o nominale 100 W tych pięciu zmiennych przechowujesz liczbę banknotów o danych nominałach
26 kwi 19:44
Benny: Gdybyś miał czas chętnie zobaczyłbym to w całości.
26 kwi 19:52
Krzysiek: #include <iostream> using namespace std; int nominaly[5]={200,100,50,20,10}; void wypisz(int n){ for(int i=0;i<5;++i){ if(n>nominaly[i]){ cout<<nominaly[i]<<" x "<<n/nominaly[i]<<"\n"; n%=nominaly[i]; } } } int main() { int n,licznik=0; cout<<"Wczytaj kwote: "; cin>>n; while(n%10!=0){ ++licznik; if(licznik==3){ exit(0); } cout<<"Wczytaj jeszcze raz kwote: "; cin>>n; } wypisz(n); return 0; }
26 kwi 19:58
Mariusz: licznik=0; n=1; while(licznik<3&&n%10!=0){ printf("Podaj n="); scanf("%d",&n); if(n%10!=0) licznik++; } a=n/200; n=n%200; b=n/100; n=n%100; c=n/50; n=n%50; d=n/20; n=n%20; e=n/10;
26 kwi 19:59
Mariusz: Krzysiek pomysł podobny do mojego Napisałeś w C++ a miało być w C
26 kwi 20:03
Benny: Trochę nie ogarniam co od czego, ale zaraz spróbuje to rozkminić.
26 kwi 20:04
Benny: Btw. @Krzysiek coś nie poprawnie chyba działa. Wklepałem 550 i źle podało.
26 kwi 20:04
Mariusz: if(n>nominaly[i]) Tutaj powinien dać nierówność nieostrą Benny nie przeszkadza ci że jest to napisane w C++ zamiast C
26 kwi 20:16
Krzysiek: Malutki błąd: w linijce if(n>nominaly[i]){ powinno być if(n>=nominaly[i]){
26 kwi 20:19
Mariusz: W pętli while można było dać lepszy warunek logiczny Teraz to wygląda tak jakby Krzysiek był kiepski z logiki
26 kwi 20:20
Benny: W C jest podobnie jak w C++. Chodzi mi trochę o zrozumienie jak działa ten program.
26 kwi 20:40
Krzysiek: Przeważnie problem wydawania reszty rozwiązuje się przy pomocy algorytmu zachłannego
26 kwi 20:46
Benny: Co to jest ten algorytm?
26 kwi 20:52
Krzysiek: algorytm czy algorytm zachłanny?
26 kwi 21:05
Benny: algorytm zachłanny +n%=nominaly[i] tego zapisu nie czaje
26 kwi 21:13
Mariusz: % reszta z dzielenia %= do zmiennej przypisujesz resztę z dzielenia tej liczby przez liczbę po prawej Zamiast n%=nominaly[i] mógłbyś napisać n=n%nominaly[i]
27 kwi 08:48
Benny: Właśnie nie byłem pewny czy to to samo co n=n%nominaly[i], dzięki
27 kwi 09:12
Mariusz: Benny sam się uczysz programowania czy masz je na studiach ?
27 kwi 09:45
Benny: Mam na studiach.
27 kwi 21:04
Mariusz: Pascal do nauki chyba lepszy Przeglądałeś Cormena (Introduction to Algorithms, Algorithms unlocked) tam ma kilka pseudokodów które łatwo przepisać ale za to trochę je komplikuje np (sortowanie stogowe ma z użyciem rekurencji ogonowej, a w sortowaniu przez scalanie daje wartowników) Nie wiem czemu większość podnieca się quick sortem przecież dla list i plików mamy sortowanie przez scalanie a dla tablic sortowanie stogowe i mamy zapewnione zatrzymanie się algorytmu w czasie O(nlogn) a czas zatrzymania quick sorta zależy od danych wejściowych
27 kwi 21:23
Evelek: bąbelkowe też fajne. emotka
27 kwi 21:26
Jack: wstawianie znacznie lepsze niz babelkowane, a shell to juz wgl emotka
27 kwi 21:26
Krzysiek: Na studiach takie łatwe zadania?
29 kwi 09:06
Mariusz: Wiesz jak to dopiero początek , na czymś trzeba ćwiczyć te pętelki i warunki
29 kwi 18:24
kyrtap: dokładnie Mariusz, lepiej na czymś prostszym, aby zrozumieć ideę pętli, później można sobie utrudniać życie emotka
29 kwi 19:08