dzielenie kasy[c]

Odpowiedz Nowy wątek
2004-07-14 19:52
0

"dzielenie kasy"

zna może ktoś algorytm dzielenia pieniędzy chodzi mi konkretnie o rozdzielanie setek złotówek i gr. czyli rozdziela sumę wybraną przez usera
przykład wpisuje 550
czyli program by mi wydrukował 200x2 100x1 50x1
najlepiej że by to było w c

Pozostało 580 znaków

2004-07-14 22:17
0

Ja znam fajny algorytm dzielenia kasy.
Ja daje 100 zl i ty dajesz 100 zl. A potem dziele:
1 zl dla ciebie
2 zl dla mnie
1 zl dla ciebie
4 zl dla mnie
1 zl dla ciebie
8 zl dla mnie
...
;)

A tak na powaznie. Mamy nominaly:
n = 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01
A algorytm przedstawia sie tak:

  1. Wez pieniadze p
  2. Wyzeruj tablice z nominalami t
  3. i = 0 //tab. indeksowana od 0
  4. while i < n.length() && p > 0 do
    4A. if p - n[i] > 0 then
    4Aa. p -= n[i]; t[i]++
    4Ab. i++

Jest jeszcze jeden błąd :)
Unix is user friendly. It's just very particular about who it's friends are.

Pozostało 580 znaków

2004-07-14 23:39
0

przykład co prawda w Delphi, ale to nic trudnego zrozumieć
http://www.programming.enter.net.pl/delphi/arytmetyka.html


Piszę programy w językach: C, C++, Java, Python, Bash, PHP, SQL.
Przyjmuję zlecenia

Pozostało 580 znaków

2004-07-15 12:09
kodek
0

A tak na powaznie. Mamy nominaly:
n = 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01
A algorytm przedstawia sie tak:

  1. Wez pieniadze p
  2. Wyzeruj tablice z nominalami t
  3. i = 0 //tab. indeksowana od 0
  4. while i < n.length() && p > 0 do
    4A. if p - n[i] > 0 then
    4Aa. p -= n[i]; t[i]++
    4Ab. i++

a możesz mi to rozpisać? [browar]

Pozostało 580 znaków

2004-07-15 18:28
0

Podany przez Milke link jest lepszy, bo korzysta z reszty z dzielenia, zamiast odejmowania w petelce (jest szybszy), wiec tak tez zapisze:

#define N 14
double FNominaly[N] = {200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01};
void dziel(double APieniadze){
    int i, n, pom, Pieniadze;
    Pieniadze = APieniadze*100;/*w groszach chcemy miec wszystko */
    for(i=0;i<N;i++){
    n = (int) (100*FNominaly[i]);/* w groszach */
    pom = Pieniadze/n;
    if(pom)
        printf("%d x %.2lf\\n", pom, FNominaly[i]);
    Pieniadze = Pieniadze%n;
    }
}

Jest jeszcze jeden błąd :)
Unix is user friendly. It's just very particular about who it's friends are.

Pozostało 580 znaków

2004-07-16 15:51
0

Podany przez Milke link jest lepszy, bo korzysta z reszty z dzielenia, zamiast odejmowania w petelce (jest szybszy), wiec tak tez zapisze:

#define N 14
double FNominaly[N] = {200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01};
void dziel(double APieniadze){
int i, n, pom, Pieniadze;
Pieniadze = APieniadze*100;/*w groszach chcemy miec wszystko */
for(i=0;i<N;i++){
n = (int) (100*FNominaly[i]);/* w groszach */
pom = Pieniadze/n;
if(pom)
printf("%d x %.2lf\\n", pom, FNominaly[i]);
Pieniadze = Pieniadze%n;
}
}

void dziel(double APieniadze){ <------------------ na tej linijce złasz mi błąd przy kompilacji (parse error)

Pozostało 580 znaków

2004-07-16 19:20
0

To ja nie wiem, dlaczego nie działa... Mój programik u mnie chodzi pięknie:

#define N 14
double FNominaly[N] = {200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01};
void dziel(double APieniadze){
    int i, n, pom, Pieniadze;
    Pieniadze = APieniadze*100;/*w groszach chcemy miec wszystko */
    for(i=0;i<N;i++){
    n = (int) (100*FNominaly[i]);/* w groszach */
    pom = Pieniadze/n;
    if(pom)
        printf("%d x %.2lf\\n", pom, FNominaly[i]);
    Pieniadze = Pieniadze%n;
    }
}
int main(){
    dziel(540.23);
    exit(0);
}

Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.2.2 [FreeBSD] 20030205 (release)


Jest jeszcze jeden błąd :)
Unix is user friendly. It's just very particular about who it's friends are.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0