Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/47: Рейтинг темы: голосов - 47, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 17.01.2020
Сообщений: 13

Банковские счета

17.01.2020, 23:16. Показов 9247. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте дорогие друзья,молю вас о помощи с данной задачей,так как в понедельник уже сдавать отчет,а сам я буду неделю разбираться(
Некоторый банк хочет внедрить систему управления счетами клиентов, поддерживающую следующие операции:

1)Пополнение счета клиента.
2)Снятие денег со счета.
3)Запрос остатка средств на счете.
4)Перевод денег между счетами клиентов.
5)Начисление процентов всем клиентам.
Вам необходимо реализовать такую систему. Клиенты банка идентифицируются именами (уникальная строка, не содержащая пробелов). Первоначально у банка нет ни одного клиента. Как только для клиента проводится операция пололнения, снятия или перевода денег, ему заводится счет с нулевым балансом. Все дальнейшие операции проводятся только с этим счетом. Сумма на счету может быть как положительной, так и отрицательной, при этом всегда является целым числом.

Входные данные
Входной файл содержит последовательность операций. Возможны следующие операции:

DEPOSIT name sum - зачислить сумму sum на счет клиента name. Если у клиента нет счета, то счет создается.

WITHDRAW name sum - снять сумму sum со счета клиента name. Если у клиента нет счета, то счет создается.

BALANCE name - узнать остаток средств на счету клиента name.

TRANSFER name1 name2 sum - перевести сумму sum со счета клиента name1 на счет клиента name2. Если у какого-либо клиента нет счета, то ему создается счет.

INCOME p - начислить всем клиентам, у которых открыты счета, p% от суммы счета. Проценты начисляются только клиентам с положительным остатком на счету, если у клиента остаток отрицательный, то его счет не меняется. После начисления процентов сумма на счету остается целой, то есть начисляется только целое число денежных единиц. Дробная часть начисленных процентов отбрасывается.

Выходные данные
Для каждого запроса BALANCE программа должна вывести остаток на счету данного клиента. Если же у клиента с запрашиваемым именем не открыт счет в банке, выведите ERROR.

Примеры
входные данные
DEPOSIT Ivanov 100
INCOME 5
BALANCE Ivanov
TRANSFER Ivanov Petrov 50
WITHDRAW Petrov 100
BALANCE Petrov
BALANCE Sidorov
выходные данные
105
-50
ERROR
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.01.2020, 23:16
Ответы с готовыми решениями:

Не получается решить задачу Банковские счета
Элд Хасп, а можно вопрос по еще одной задаче?я на нее наткнулся на форуме и попытался сделать но она не проходит...

Интерфейс: Реализовать операции с банковским счетом (баланс счета, снятие средств, пополнение счета)...
Здравствуйте! Подскажите, как доделать код :-| Задача такая: дан интерфейс, необходимо сделать так, чтобы можно было получить информацию...

Время счета Bubble sort
Всем доброго времени суток, мне нужна ваша помощь, вообщем есть у меня алгоритм сортировки пузырьком, я его реализовал (код приведу ниже)...

8
Неадекват
 Аватар для freeba
1499 / 1236 / 247
Регистрация: 02.04.2010
Сообщений: 2,807
18.01.2020, 07:57
Как то так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
 
namespace ConsoleApp34
{
    public enum Operation
    {
        DEPOSIT,
        WITHDRAW,
        BALANCE,
        TRANSFER,
        INCOME
    }
 
    public static class Clients
    {
        static readonly Dictionary<string, int> clients = new Dictionary<string, int>();
 
        static readonly Func<string, string> NormalizeName = x => x.ToUpperInvariant();
 
        public static void Deposit(string name, int sum, bool checkName = true)
        {
            if (checkName) name = NormalizeName(name);
            if (checkName && !clients.ContainsKey(name)) clients.Add(name, 0);
 
            int result, init = clients[name];
            do
            {
                result = clients[name];
                clients[name] += sum;
            } while (init != Interlocked.CompareExchange(ref result, clients[name], init));
        }
 
        public static void Withdraw(string name, int sum)
        {
            name = NormalizeName(name);
 
            if (!clients.ContainsKey(name)) clients.Add(name, 0);
 
            int total, init = clients[name];
            do
            {
                total = clients[name];
                clients[name] -= sum;
            } while (init != Interlocked.CompareExchange(ref total, clients[name], init));
        }
 
        public static void Transfer(string nameFrom, string nameTo, int sum)
        {
            nameFrom = NormalizeName(nameFrom);
            nameTo = NormalizeName(nameTo);
 
            if (!clients.ContainsKey(nameFrom)) clients.Add(nameFrom, 0);
            if (!clients.ContainsKey(nameTo)) clients.Add(nameTo, 0);
 
            lock (clients)
            {
                clients[nameFrom] -= sum;
                clients[nameTo] += sum;
            }
        }
 
        public static void Income(decimal percent)
        {
            Parallel.ForEach(clients.Where(x => x.Value > 0), client =>
            {
                Deposit(client.Key, (int)(client.Value * (percent / 100M)), false);
            });
        }
 
        public static string Balance(string name)
        {
            name = NormalizeName(name);
 
            if (clients.ContainsKey(name)) return clients[name].ToString();
 
            return "ERROR";
        }
    }
 
    class Program
    {
        static Dictionary<string, Operation> Alias => new Dictionary<string, Operation>()
        {
            { "DEPOSIT", Operation.DEPOSIT },
            { "WITHDRAW", Operation.WITHDRAW },
            { "BALANCE", Operation.BALANCE },
            { "TRANSFER", Operation.TRANSFER },
            { "INCOME", Operation.INCOME },
        };
 
        static Dictionary<Operation, Delegate> Actions => new Dictionary<Operation, Delegate>()
        {
            { Operation.DEPOSIT, Deposit },
            { Operation.WITHDRAW, Withdraw },
            { Operation.BALANCE, Balance },
            { Operation.TRANSFER, Transfer },
            { Operation.INCOME, Income },
        };
 
        static readonly Action<string, int> Deposit = (x, y) => Clients.Deposit(x, y);
        static readonly Action<string, int> Withdraw = (x, y) => Clients.Withdraw(x, y);
        static readonly Action<string> Balance = x => Console.WriteLine(Clients.Balance(x));
        static readonly Action<string, string, int> Transfer = (x, y, z) => Clients.Transfer(x, y, z);
        static readonly Action<decimal> Income = x => Clients.Income(x);
 
        static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;
 
            Console.WriteLine("Готов к работе.");
            Console.WriteLine(new string('=', 24));
            Console.WriteLine();
 
            while (true)
            {
                var line = Console.ReadLine();
 
                var source = line.Split(' ');
 
                if (source.Length < 2) { Console.WriteLine("Ошибка ввода."); continue; };
 
                var operation = source[0].ToUpperInvariant();
 
                if (!Alias.ContainsKey(operation)){ Console.WriteLine("Ошибка. Неизвестная операция."); continue; };
 
                switch(Alias[operation])
                {
                    case Operation.DEPOSIT:
                    case Operation.WITHDRAW:
                        if (source.Length < 3) { Console.WriteLine("Ошибка ввода."); continue; };
                        if (!int.TryParse(source[2], out int sum)) { Console.WriteLine("Ошибка ввода."); continue; };
 
                        Actions[Alias[operation]].DynamicInvoke(source[1], sum);
                        break;
 
                    case Operation.BALANCE:
                        Actions[Operation.BALANCE].DynamicInvoke(source[1]);
                        break;
 
                    case Operation.INCOME:
                        if (!decimal.TryParse(source[1], out decimal sumIncome)) { Console.WriteLine("Ошибка ввода."); continue; };
 
                        Actions[Operation.INCOME].DynamicInvoke(sumIncome);
                        break;
 
                    case Operation.TRANSFER:
                        if (source.Length < 4) { Console.WriteLine("Ошибка ввода."); continue; };
                        if (!int.TryParse(source[3], out int sumTransfer)) { Console.WriteLine("Ошибка ввода."); continue; };
 
                        Actions[Operation.TRANSFER].DynamicInvoke(source[1], source[2], sumTransfer);
                        break;
                }
            }
        }
    }
}
0
0 / 0 / 0
Регистрация: 17.01.2020
Сообщений: 13
18.01.2020, 10:51  [ТС]
freeba, спасибо большое,а как сделать выходные как в задании? задачу не засчитывают(
0
Неадекват
 Аватар для freeba
1499 / 1236 / 247
Регистрация: 02.04.2010
Сообщений: 2,807
18.01.2020, 10:54
они и сделаны как в задании
0
0 / 0 / 0
Регистрация: 17.01.2020
Сообщений: 13
18.01.2020, 11:08  [ТС]
freeba, но почему-то ошибку выдает
0
0 / 0 / 0
Регистрация: 28.10.2019
Сообщений: 5
18.01.2020, 12:18
Годика с пол назад видел на форуме подобную ошибку, загугли по форуму.
0
Неадекват
 Аватар для freeba
1499 / 1236 / 247
Регистрация: 02.04.2010
Сообщений: 2,807
18.01.2020, 12:52
Просто ТС не понимает разницы между сделать задание и сдать задание за него

PS: Но если интересно, то дело в том что используется C# 8й версии, а в наших славных вузах, хорошо если преподают пятую. И проверялки строят на ней же.
1
0 / 0 / 0
Регистрация: 17.01.2020
Сообщений: 13
18.01.2020, 13:57  [ТС]
freeba, вы меня не правильно поняли на счет выходных данных,ваш код выводит клиента и рядом с ним баланс,а в задаче требуют чтобы BALANCE Ivanov,BALANCE Petrov,BALANCE Sidorov выводились отдельно снизу.
0
Неадекват
 Аватар для freeba
1499 / 1236 / 247
Регистрация: 02.04.2010
Сообщений: 2,807
18.01.2020, 14:15
jz_, а, отдельно. Ну переделайте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2020, 14:15
Помогаю со студенческими работами здесь

Приложение для отработки устного счета
Всем здравствуйте! Помогите пожалуйста создать приложение на с#, для отработки устного счета на сложение целых чисел в диапазоне от 1 до...

Написать программу для проверки устного счета
Добрый день Помогите пожалуйста сделать задание. Написать программу для проверки устного счета, т.е. умения складывать двузначные...

Написание программы для тренировки устного счета
Нужно написать для тренировки устного счета. Пользователю должны предлагаться случайные два числа в диапазоне от 0 до 20, которые он...

Имеется файл с расшифровкой счета за телефонные разговоры
Помогите с написанием программы пожалуйста. Имеется файл с расшифровкой счета за телефонные разговоры (дата, номер телефона,...

Моделирование банковского счета, исправить ошибки в коде
Помогите в исправлении ошибки.Ошибки происходят, после использования get и set.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru