Форум программистов, компьютерный форум CyberForum.ru

Банкомат. В чем ошибка? - C++

Восстановить пароль Регистрация
 
Raduga_
 Аватар для Raduga_
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 3
23.04.2014, 17:31     Банкомат. В чем ошибка? #1
Лимит времени 2000/4000/4000/4000 мс. Лимит памяти 65000/65000/65000/65000 Кб.
Автор: Фёдор Меньшиков, ВГПУ.

Реальный текст программы.

ATM may contain notes of four kinds: 50, 100, 500 and 1000 rubles. Amount of notes of each kind at any moment is a non-negative integer number. 0 means that there are no notes of this kind. The lack of some notes may be filled with notes of smaller cost. E.g., if the client requested 500 rubles, but ATM has only four 100-ruble notes and two 50-ruble notes, the client will still get his cash.

Suppose that you requested a sum of cash, that is a positive integer number and divides by 50. ATM denied this request, since there is no way it could be done with notes available right now. Find the smallest sum greater than the requested one, such that ATM theoretically could give out.

Input
The first line of input contains a single positive number that divides by 50 and is less or equal to 3000. It's the sum that the ATM could not give out.
Output
Output the single number - the smallest sum greater than the requested one. If there is no such sum, output 0.

Input 1 Output 1
150 200


Перевод (корявенький)

Банкомат может содержать примечания четырех видов: 50, 100, 500 и 1000 рублей. Сумма примечаний каждого вида в любой момент - неотрицательное число целого числа. 0 средств, что нет никаких примечаний этого вида. Отсутствие некоторых примечаний может быть заполнено примечаниями меньшей стоимости. Например, если клиент просил 500 рублей, но у банкомата есть только четыре примечания за 100 рублей и два примечания за 50 рублей, клиент все еще получит свои наличные деньги.

Предположим, что Вы просили сумму наличных денег, которые являются положительным числом целого числа и делятся на 50. Банкомат отрицал этот запрос, так как нет никакого способа, которым это могло быть сделано с примечаниями, доступными прямо сейчас. Сочтите самую маленькую сумму больше, чем требуемая, такая, что банкомат теоретически мог выделить.

Ввод
Первая линия входа содержит единственное положительное число, которое делится на 50 и является меньше или равно 3000. Это - сумма, которую не мог выделить банкомат.
Вывод
Произведите единственное число - самая маленькая сумма, больше, чем требуемая. Если нет такой суммы, произведите 0.

Текст Программы
(Писала впервые, в Microsoft Visual Studio 2010 все условия выполняются вроде, но на сайте компилятор ругается,что либо что-то лишнее либо чего-то нет)


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
int main()
  {
    int const k1=50, k2=100, k3=500, k4=1000;
int a;
  cin >> a;
  {
if(((a>=3000)&&(a%50!=0))||((a>=3000)&&(a%100!=0))||(a<=50)|| ((a>=3000)&&(a%50!=0)&&(a%100!=0))||((a>=3000)&&(a%100==0)&&(a%50==0))||
    ((a>=3000)&&(a%100==0)&&(a%50!=0))||((a>=3000)&&(a%100!=0)&&(a%50==0))||((a%50!=0)&&(a%100!=0)))
    cout << '0'<< endl;
else
if ((a!=k2)&&(a!=k3)&&(a!=k4))
cout<<(a+k1)<<endl;
else 
  cout << '0'<< endl;
}
  }
________
___________________

Буду очень рада, если подскажите, что я не так сделала, постараюсь исправить и успеть защитить задачу, заранее благодарна)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 17:31     Банкомат. В чем ошибка?
Посмотрите здесь:

C++ Программа вылетает (банкомат)
C++ Программа-банкомат!
В чем ошибка? C++
C++ написать прогу банкомат
Банкомат C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
23.04.2014, 18:09     Банкомат. В чем ошибка? #2
Часть задачи понятна - процесс обналичивание электронного счета. Но входные данные вообще не понятно описаны. Что нужно?
Raduga_
 Аватар для Raduga_
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 3
24.04.2014, 03:00  [ТС]     Банкомат. В чем ошибка? #3
Supernatural, что можно сделать с входными данными?
и я сама через этот перевод не совсем разобралась, что именно нужно, я думаю что нужно искать минимальное значение, большее, чем запрашиваемая сумма...
поэтому за помощью и обратилась
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
24.04.2014, 19:14     Банкомат. В чем ошибка? #4
Raduga_, как бы прежде чем просить помощь у кого-либо принято пытаться хотя бы понять суть задания. Есть мнение/вариант, что нужно описать работу банкомата при выдачи наличных денег с банковской карты.
Raduga_
 Аватар для Raduga_
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 3
25.04.2014, 01:37  [ТС]     Банкомат. В чем ошибка? #5
Supernatural, суть программы, чтобы рассчитать наименьшую сумму, которую банкомат теоретически может выдать, я решила что если прибавлять к запрашиваемой 50 (так как это наименьшая купюра банкомата), то будет верно, но видимо нет. Сейчас у меня есть догадки, что надо возможно перебирать возможные вариации сумм существующих купюр...
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
25.04.2014, 09:07     Банкомат. В чем ошибка? #6
Цитата Сообщение от Raduga_ Посмотреть сообщение
которую банкомат теоретически может выдать
вообще, если ориентироваться по банкнотам центробанка, то минимальная бумажная денежная купюра - 10 рублей, но в банкомате минимальная-50, кажется(10тирублевые купюры ни разу не видел при выдаче). Отсюда следует, что возможно надо рассчитать, сколько минимальных купюр по 50 рублей может выдать банкомат при выдаче 50<x<3000.
_Ellen_
15 / 15 / 5
Регистрация: 28.11.2013
Сообщений: 50
25.04.2014, 11:40     Банкомат. В чем ошибка? #7
Найти все-таки надо найти наименьшую сумму, которая больше запрашиваемой. Но вот формулировка задания непонятна
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2014, 12:44     Банкомат. В чем ошибка?
Еще ссылки по теме:

C++ В чем ошибка?
Банкомат Run-Time Check Failure #3- The variable 'Sheets (и Moneym)' is being used without being initialized C++
Ошибка 2 error LNK2019, не пойму в чем ошибка C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
25.04.2014, 12:44     Банкомат. В чем ошибка? #8
Цитата Сообщение от Supernatural Посмотреть сообщение
вообще, если ориентироваться по банкнотам центробанка, то минимальная бумажная денежная купюра - 10 рублей
Бумажные 5 рублей ещё никто не отменял, хоть их сейчас в обращении и нет. Что касается задачи, то у неё есть чёткие условия, и соотносить их с реальной жизнью не следует.
C++
1
2
if(((a>=3000)&&(a%50!=0))||((a>=3000)&&(a%100!=0))||(a<=50)|| ((a>=3000)&&(a%50!=0)&&(a%100!=0))||((a>=3000)&&(a%100==0)&&(a%50==0))||
    ((a>=3000)&&(a%100==0)&&(a%50!=0))||((a>=3000)&&(a%100!=0)&&(a%50==0))||((a%50!=0)&&(a%100!=0)))
Если всё лишнее тут сократить, получится:
C++
1
if (a >= 3000 || a <= 50 || a % 50 != 0)
Если ещё учесть условия задачи, это всё получается эквивалентно:
C++
1
if (a == 3000 || a == 50)
50 -> 0 100
C++
1
2
3
4
if ((a!=k2)&&(a!=k3)&&(a!=k4))
cout<<(a+k1)<<endl;
else 
  cout << '0'<< endl;
100 -> 0 500
200 -> 250 500 (250 на одну пятидесятку больше, чем 200, а он даже 200 не модет выдать)
Yandex
Объявления
25.04.2014, 12:44     Банкомат. В чем ошибка?
Ответ Создать тему
Опции темы

Текущее время: 11:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru