Плательщик перечислил, получатель получил
1 минут
Описать структуру с именем ORDER, содержащую следующие поля:
- расчетный счет плательщика;
- расчетный счет получателя;
- перечисляемая сумма в руб.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ORDER;
- записи должны быть размещены в алфавитном порядке по расчетным счетам плательщиков;
- вывод на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры;
- если такого расчетного счета нет, выдать на дисплей соответствующее сообщение.
Решение на C++:
#include <iostream>
#include <stdlib.h>
typedef struct
{
int currentAccountPayer;
int currentAccountRecipient;
int sendAmount;
} ORDER;
using namespace std;
int main()
{
const int ORDER_COUNT = 8;
ORDER array[ORDER_COUNT];
for (int i = 0; i < ORDER_COUNT; i++) {
cout << "currentAccountPayer[" << i << "]: ";
cin >> array[i].currentAccountPayer;
cout << "currentAccountRecipient[" << i << "]: ";
cin >> array[i].currentAccountRecipient;
cout << "sendAmount[" << i << "]: ";
cin >> array[i].sendAmount;
}
// sorting array
int min;
for (int i = 0; i < ORDER_COUNT - 1; i++) {
min = i;
for (int j = i + 1; j < ORDER_COUNT; j++) {
if (array[min].currentAccountPayer > array[j].currentAccountPayer) {
min = j;
}
}
if (min != i) {
std::swap(array[min], array[i]);
}
}
// output array
cout << " Payer \t| Recipient \t| Amount" << endl;
for (int i = 0; i < ORDER_COUNT; i++) {
cout << " " << array[i].currentAccountPayer << " \t\t| " << array[i].currentAccountRecipient << " \t\t| " << array[i].sendAmount << endl;
}
// find payer
while (true) {
cout << "Enter payer account(OR q TO EXIT): ";
char input_payer[20];
cin >> input_payer;
if (input_payer[0] == 'q' && input_payer[1] == '\0') {
return 0;
}
// if input non digit
int is_valid = 1;
for (int i = 0; i < 20; i++) {
if (input_payer[i] == '\0') {
break;
}
if (!isdigit(input_payer[i])) {
cout << "Payer " << input_payer << " not found!" << endl;
is_valid = 0;
break;
}
}
if (is_valid == 0) {
continue;
}
// find payer
int is_found = 0;
for (int i = 0; i < ORDER_COUNT; i++) {
if (atoi(input_payer) == array[i].currentAccountPayer) {
is_found = 1;
cout << "Payer " << input_payer << " has sent " << array[i].sendAmount << " rubles" << endl;
break;
}
}
if (is_found == 0) {
cout << "Payer " << input_payer << " not found!" << endl;
}
}
return 0;
}
Результат выполнения программы (для ORDER_COUNT = 3):
currentAccountPayer[0]: 1
currentAccountRecipient[0]: 2
sendAmount[0]: 10000
currentAccountPayer[1]: 2
currentAccountRecipient[1]: 3
sendAmount[1]: 30000
currentAccountPayer[2]: 4
currentAccountRecipient[2]: 6
sendAmount[2]: 20000
Payer | Recipient | Amount
1 | 2 | 10000
2 | 3 | 30000
4 | 6 | 20000
Enter payer account(OR q TO EXIT): 1
Payer 1 has sent 10000 rubles
Enter payer account(OR q TO EXIT): 2
Payer 2 has sent 30000 rubles
Enter payer account(OR q TO EXIT): 3
Payer 3 not found!
Enter payer account(OR q TO EXIT): 4
Payer 4 has sent 20000 rubles
Enter payer account(OR q TO EXIT): q