Mam problem z tym zadaniem, napisałam już kod jednak w sprawdzarce wyskakuje błędny wynik :/ Domyślam się, że w którymś miejscu może wychodzić poza tablicę ale nie mogę tego wychwycić, albo może chodzi jeszcze o co innego.
Poniżej wklejam mój kod i treść zadania.
#include <cstdio>
#include <iostream>
using namespace std;
bool bankomat(int T[2][5],int k)
{
for (int i=4; i>=0;i--)
if (T[1][i]>0 and k>=T[0][i])
{
do
{
k=k-T[0][i]; //odejmuje nominal banknotu od kwoty do wyplaty
T[1][i]--; //zmniejszenie ilosci banknotow mozliwych do wyplaty
}
while (k>0 and T[1][i]>0 and k>=T[0][i]);
}
if (k==0)
return true;
else return false;
}
int main ()
{
int d, k; //d-ilosc zestawow k-ile wyplacic
int T[2][5];
T[0][0]=10; //nominaly banknotow
T[0][1]=20;
T[0][2]=50;
T[0][3]=100;
T[0][4]=200;
cin>>d;
for (int j=0;j<d;j++ )
{
for (int i=0; i<5;i++)
{
cin>>T[1][i]; //wpisanie ilosci okreslonych banknotow do tablicy
}
// cout<<"wpisz kwote";
cin>>k;
if (bankomat (T,k)){
cout<<"TAK"<<endl;
}
else cout<<"NIE"<<endl;
}
return 0; }
BANKOMAT
Jako znany na świecie informatyk dostałeś ofertę od nowopowstającego banku szwajcarskiego na napisanie części oprogramowania dla bankomatów. Twój program ma sprawdzać czy przy pomocy dostępnych banknotów jest w stanie wypłacić żądaną przez klienta kwotę.
Wejście
W pierwszej linii znajduje się liczba D, oznaczająca liczbę zestawów danych. Każdy zestaw danych mieści się w jednej linii i składa się z sześciu liczb: a1, a2, a3, a4, a5, k (ai<=1000, k<=10000). Liczby a1..a5 oznaczją dostępną w bankomacie liczbę banknotów odpowiednio o nominałach 10, 20, 50, 100, 200 franków szwajcarskich. Natomiast liczba k oznacza żądaną kwotę do wpłaty.
Wyjście
Dla każdego zestawu danych powinna pojawić się jedna linia w wyniku zawierająca pojedyncze słowo TAK lub NIE, oznaczające czy w danej chwili w bankomacie da się wypłacić żądaną kwotę.
Przykład:
Wejście
3
0 2 10 10 1000 110
1 2 10 10 1000 110
199 100 40 20 10 10000
Wyjście
NIE
TAK
NIE
P.S. Kolejność wypisywania "NIE'"/"TAK" nie powinna mieć znaczenia, przerobiłam już ten program na (co prawda bardziej toporną wersję) która całe wyjście wyświetlała po sobie, ale wg sprawdzarki też zwracało błędny wynik w jakimś teście :/