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

Jezyk C-Program wyświetlający wszystkie możliwe złożenia podanej liczby

Object Storage Arubacloud
0 głosów
843 wizyt
pytanie zadane 21 listopada 2018 w C i C++ przez Jennesse Nowicjusz (220 p.)
Witam. Mam napisać program wyświetlający wszystkie możliwe ułożenia kwoty w PLN wykorzystując tylko i wyłącznie banknoty 20 PLN, 50 PLN, 100 PLN począwszy od banknotów o wyższym nominale. Użyć nie więcej niż 2 pętle.

Nie wiem, jak to zacząć, mój jedyny pomysł, to wykorzystać jakoś podzielność przez 10 i potem coś dalej kombinować. Pomoże ktoś?

1 odpowiedź

+1 głos
odpowiedź 21 listopada 2018 przez sefir Dyskutant (8,560 p.)
wybrane 22 listopada 2018 przez Jennesse
 
Najlepsza
Ogólnie to masz do rozwiązania równanie 100*x + 50*y + 20*z = kwota
komentarz 21 listopada 2018 przez Jennesse Nowicjusz (220 p.)
No tyle to wiem, tylko jak to dalej pociągnąć?
komentarz 21 listopada 2018 przez sefir Dyskutant (8,560 p.)
edycja 22 listopada 2018 przez sefir
Pierwsza pętla jedzie po x od 0 do całkowitej wartości kwota/100

Druga pętla po y też od 0 do całkowitej wartości (kwota-x*100)/50

W środku sprawdzasz czy przy takim x i y reszta dzieli się przez 20 bez reszty
komentarz 22 listopada 2018 przez Jennesse Nowicjusz (220 p.)

Dziękuję bardzo. Wszystko działa tylko nie bierze pod uwagę wszystkich możliwości. 

#include<stdio.h>

int main(){
int kwota;
printf("Podaj kwote:");
scanf("%d",&kwota);
if(kwota%10==0 && kwota>=20){
for(int x=0;x<=kwota/100;++x){
for(int y=0;y<(kwota-y*100)/50;y++){
printf("%d = %d*100 + %d*50 + %d*20\n",kwota,x,y,(kwota-x*100-y*50)/20);
}
}
}
else if(kwota%10!=0)
{
printf("Nie da sie tak jej zapisac");
}
else {
printf("Niepoprawny format!");
}




return 0;
}

np. wyświetla dla kwota=120 

120=0*100+0+50+6*20 i 120=1*100+0*50+1*20

ale jest jeszcze 120=0*100+2*50+1*20

jak to zmienić? 

komentarz 22 listopada 2018 przez sefir Dyskutant (8,560 p.)
W drugim for masz błąd, bo 100*x powinno być
komentarz 22 listopada 2018 przez sefir Dyskutant (8,560 p.)
No i znak <= zamiast <

czyli y<=(kwota-100*x)/50
komentarz 22 listopada 2018 przez sefir Dyskutant (8,560 p.)
Zabezpiecz też printf'a ifem sprawdzającym czy x*100+y*50+z*20 == kwota
komentarz 22 listopada 2018 przez Jennesse Nowicjusz (220 p.)
Nie rozumiem tej części :/
komentarz 22 listopada 2018 przez sefir Dyskutant (8,560 p.)
#include<stdio.h>

int
main ()
{
  int kwota;
  int z;
  printf ("Podaj kwote:");
  scanf ("%d", &kwota);
  if (kwota % 10 == 0 && kwota >= 20)
    {
      for (int x = 0; x <= kwota / 100; ++x)
	{
	  for (int y = 0; y <= (kwota - x * 100) / 50; y++)
	    {
	      z = (kwota - x * 100 - y * 50) / 20;
	      if(x * 100 + y * 50 + z * 20 == kwota)
	        printf ("%d = %d*100 + %d*50 + %d*20\n", kwota, x, y, z);
	    }
	}
    }
  else if (kwota % 10 != 0)
    {
      printf ("Nie da sie tak jej zapisac");
    }
  else
    {
      printf ("Niepoprawny format!");
    }




  return 0;
}

 

komentarz 22 listopada 2018 przez Jennesse Nowicjusz (220 p.)

Uwzględnia przypadek 120=100*0+50*0+20*0 to jest fałszem crying

komentarz 22 listopada 2018 przez sefir Dyskutant (8,560 p.)

Na pewno dobrze skopiowałeś mój kod, bo mi dobrze liczy wink

komentarz 22 listopada 2018 przez Jennesse Nowicjusz (220 p.)
Modyfikowałem swój, patrząc na ten. Już znalazłem błąd. Bardzo dziękuję za wyczerpującą pomoc!
komentarz 22 listopada 2018 przez sefir Dyskutant (8,560 p.)

Nie ma sprawy smiley

Podobne pytania

0 głosów
2 odpowiedzi 3,277 wizyt
0 głosów
1 odpowiedź 630 wizyt
pytanie zadane 30 maja 2022 w C i C++ przez polandonion Mądrala (7,090 p.)

92,631 zapytań

141,496 odpowiedzi

319,863 komentarzy

62,011 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!

...