Плательщик перечислил, получатель получил

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