Дан массив, содержащий 2019 положительных целых чисел, не превышающих 15 000. Необходимо найти количество элементов массива, шестнадцатеричная запись которых заканчивается цифрой D, заменить на это количество все элементы, восьмеричная запись которых содержит ровно 3 цифры, и вывести изменённый массив
Напишите на одном из языков программирования программу для решения этой задачи.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.
| Бейсик | Python |
|---|---|
CONST N=2019 DIM A(N) AS INTEGER DIM I, K, M AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I … END
| # кроме уже указанных # допускается использование # целочисленных переменных # k, m a = [] n = 2019 for i in range(0, n): a.append(int(input())) …
|
| Паскаль | Алгоритмический язык |
const N=2019; var a: array [1..N] of integer; i, k, m: integer; begin for i:=1 to N do readln(a[i]); … end.
| алг нач цел N=2019 целтаб a[1:N] цел i, k, m нц для i от 1 до N ввод a[i] кц … кон |
| С++ | |
#include <iostream> using namespace std; const int N=2019; int main(){ int a[N]; int i, j, k; for (i=0; i<N; ++i) cin >> a[i]; … return 0; }
| |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Задача решается в два прохода: на первом проходе определяется количество требуемых элементов, на втором проходе производится корректировка и вывод элементов. Возможно решение в три прохода, когда на втором проходе выполняется только замена значений, а на третьем — вывод
| Паскаль |
|---|
k := 0; for i := 1 to N do if (a[i] mod 16 = 13) then k:=k + 1; for i := 1 to N do begin if (a[i] >= 64) and (a[i] < 512) then a[i] := k; writeln(a[i]) end |
| Алгоритмический язык |
k := 0 нц для i от 1 до N если mod(a[i], 16) = 13 то k := k + 1 все кц нц для i от 1 до N если a[i] >= 64 и a[i] < 512 то a[i] := k все вывод a[i], нс кц |
| Бейсик |
K = 0 FOR I = 1 TO N IF A(I) MOD 16 = 13 THEN K = K + 1 END IF NEXT I FOR I = 1 TO N I F A(I) >= 64 AND A(I) < 512 THEN A(I) = K END IF PRINT A(I) NEXT I |
| Python |
k = 0 for i in range(0, n): if (a[i] % 16 == 13): k=k + 1 for i in range(0, n): if (a[i] >= 64 and a[i] < 512): a[i] = k print(a[i]) |
| Си |
k = 0; for (i = 0; i < N; i++) if (a[i]%16 == 13) k=k + 1; for (i = 0; i < N; i++) { if (a[i] >= 64 && a[i] < 512) a[i] = k; cout << a[i]; } |

