Array19. Дан целочисленный массив $$A$$ размера $$10$$. Вывести порядковый номер последнего из тех его элементов $$A_K$$, которые удовлетворяют двойному неравенству $$A_1 \lt A_K \lt A_{10}$$. Если таких элементов нет, то вывести $$0$$.
Решение от Дмитрия:
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 |
# include <iostream> # include <windows.h> # include <cmath> # include <iomanip> # include <fstream> # include "arrayint.h" using namespace std; int main () { SetConsoleCP(1251); SetConsoleOutputCP(1251); cout << "Дан целочисленный массив: "; int a[NMAX]; // данный массив из не более чем 10 чисел int n = inputArray (a, NMAX, "Array19.txt"); showArray (a, n); int k = 0; // номер последнего из элементов, удовл. нер-ву A1 < Ak < AN int A1, AN; // 1-й и N-й элементы массива A1 = a[0]; AN = a[n - 1]; for (int i = n-1; i > -1; --i){ if (A1 < a[i] && a[i] < AN) { k = i; break;} } cout << "Номер последнего из элементов, удовлетворяющему неравенству "; cout << A1 << " < Ak < " << AN << " : " << k << "\n"; system ("pause"); return 0; } |
arrayint.h:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# include <iostream> # include <fstream> using namespace std; const int NMAX = 100; int inputArray (int a[], int nmax, const char* name) { ifstream in (name); int n = 0; // Количество элементов while (n < nmax && in >> a[n]) {++n;} in.close(); return n; } void showArray (const int a[], int n) { for (int i = 0; i < n; ++i) { cout << a[i] << " "; } cout << endl; } |
Array19.txt
1 |
-5 6 9 -5 -7 0 -8 30 |
Другие задачи из раздела Array можно посмотреть здесь.
Комментарии: