Описать структуру с именем 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