25. Алгоритмы обработки массивов – продолжение
Дан массив, содержащий 2014 положительных целых чисел. Напишите на одном из языков программирования программу, которая находит в этом массиве количество элементов, значение которых более чем в два раза превосходит значение предшествующего элемента. Например, для массива из 6 элементов, содержащего числа 2, 5, 10, 15, 40, 100, программа должна выдать ответ 3 (условию соответствуют элементы со значениями 5, 40 и 100). Программа должна вывести общее количество подходящих элементов, значения элементов выводить не нужно. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.
Delphi/Pascal
12345678
|
const N = 2014; var a: array [1..N] of integer; i, j, k: integer; beginfor i:=1 to N do readln(a[i]); …end. |
|
C
123456789
|
#include<stdio.h> int main(void) { const int N=2014; int a[N]; int i, k, j; for (i=0; i<N; i++) scanf(″%d″, &a[i]); …} |
|
Решение:
Паскаль
Delphi/Pascal
12345
|
k:=0;for i:=2 to N do if a[i] > 2*a[i-1] then k:=k+1;writeln(k); |
C++
C++
12345
|
k=0;for (i=1; i<N; i++) if (a[i] > 2*a[i-1]) k=k+1;cout<<k; |
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых десятичная запись хотя бы одного числа оканчивается на 5.
Delphi/Pascal
123456789
|
const N = 40;var a: array [1..N] of integer; i, j, k: integer;begin for i := 1 to N do readln(a[i]); ...end. |
|
C
12345678910
|
#include <stdio.h>#define N 40int main() { int a[N]; int i, j, k; for (i = 0; i<N; i++) scanf("%d", &a[i]); ... return 0;} |
|
Решение:
Паскаль
Delphi/Pascal
12345
|
k := 0;for i := 1 to N-1 do if (a[i] mod 10 = 5) or (a[i+1] mod 10 = 5) then k := k + 1;writeln(k); |
C++
C++
12345
|
k = 0;for (i=0; i<N-1; i++) if (a[i] % 10 == 5 || a[i+1] % 10 == 5) k = k + 1;cout<<k; |
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести наибольший из элементов массива, шестнадцатеричная запись которого оканчивается на букву F. Если таких чисел нет, нужно вывести ответ 0.
Delphi/Pascal
123456789
|
const N = 40;var a: array [1..N] of integer; i, j, k: integer;begin for i := 1 to N do readln(a[i]); ...end. |
|
C
12345678910
|
#include <stdio.h>#define N 40int main() { int a[N]; int i, j, k; for (i = 0; i<N; i++) scanf("%d", &a[i]); ... return 0;} |
|
C
12345678910
|
#include <stdio.h>#define N 40int main() { int a[N]; int i, j, k; for (i = 0; i<N; i++) scanf("%d", &a[i]); ... return 0;} |
|
Python
12345678910
|
алгнач цел N = 40 целтаб a[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц ...кон |
|
Решение:
Паскаль
Delphi/Pascal
12345
|
k := 0;for i := 1 to N do if (a[i] mod 16 = 15) and (a[i] > k) then k := a[i];writeln(k); |
C++
C++
12345
|
k = 0;for (i = 0; i<N; i++) if (a[i] % 16 == 15 && a[i] > k) k = a[i];cout<<k; |
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести наибольший из элементов массива, восьмеричная запись которого содержит ровно три цифры. Если таких чисел нет, нужно вывести ответ 0.
Delphi/Pascal
123456789
|
const N = 40;var a: array [1..N] of integer; i, j, k: integer;begin for i := 1 to N do readln(a[i]); ...end. |
|
C
12345678910
|
алгнач цел N = 40 целтаб a[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц ...кон |
|
C
12345678910
|
#include <stdio.h>#define N 40int main() { int a[N]; int i, j, k; for (i = 0; i<N; i++) scanf("%d", &a[i]); ... return 0;} |
|
Python
1234567
|
#допускается также использовать #две целочисленные переменные #j и k а = [] n = 40for і in range(n): a.append(int(input())) |
|
Решение:
Паскаль
Delphi/Pascal
12345
|
k := 0;for i := 1 to N do if (64 <= a[i]) and (a[i] < 512) and (a[i] > k) then k := a[i];writeln(k); |
C++
C++
12345
|
k = 0;for (i = 0; i<N; i++) if (64 <= a[i] && a[i] < 512 &&a[i] > k) k = a[i];cout<<k; |
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести наименьший из элементов массива, шестнадцатеричная запись которого содержит не менее трёх цифр и оканчивается на букву C. Если таких чисел нет, нужно вывести ответ 0.
Delphi/Pascal
123456789
|
const N = 40;var a: array [1..N] of integer; i, j, k: integer;begin for i := 1 to N do readln(a[i]); ...end. |
|
C
12345678910
|
алгнач цел N = 40 целтаб a[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц ...кон |
|
C
12345678910
|
#include <stdio.h>#define N 40int main() { int a[N]; int i, j, k; for (i = 0; i<N; i++) scanf("%d", &a[i]); ... return 0;} |
|
Python
1234567
|
#допускается также использовать #две целочисленные переменные #j и k а = [] n = 40for і in range(n): a.append(int(input())) |
|
Решение:
Паскаль
Delphi/Pascal
12345678
|
k := 10001;for i := 1 to N do if (256 <= a[i]) and (a[i] mod 16 = 12) and (a[i] < k) then k := a[i];if k > 10000 then writeln(0)else writeln(k); |
C++
C++
12345678
|
k = 10001;for (i = 0; i<N; i++) if (256 <= a[i] && a[i] % 16 = 12 && a[i] < k) k = a[i];if (k > 10000) cout<<0;else cout<<k; |
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество элементов массива, восьмеричная запись которого содержит ровно две цифры, причём первая (старшая) цифра меньше второй (младшей).
Delphi/Pascal
123456789
|
const N = 40;var a: array [1..N] of integer; i, j, k: integer;begin for i := 1 to N do readln(a[i]); ...end. |
|
C
12345678910
|
алгнач цел N = 40 целтаб a[1:N] цел i, j, k нц для i от 1 до N ввод a[i] кц ...кон |
|
C
12345678910
|
#include <stdio.h>#define N 40int main() { int a[N]; int i, j, k; for (i = 0; i<N; i++) scanf("%d", &a[i]); ... return 0;} |
|
Python
1234567
|
#допускается также использовать #две целочисленные переменные #j и k а = [] n = 40for і in range(n): a.append(int(input())) |
|
Решение:
Паскаль
Delphi/Pascal
123456
|
k := 0;for i := 1 to N do if (8 <= a[i]) and (a[i] <= 63) and (a[i] div 8 < a[i] mod 8) then k := k + 1;writeln(k); |
C++
C++
12345
|
k = 0;for (i = 0; i<N; i++) if (8 <= a[i] && a[i] <= 63 && (a[i]/8 < a[i]%8)) k = k + 1;cout<<k; |