Решение задач
Разбор задачи C2 (демо ЕГЭ 2009)
Время выполнения-30 мин, уровень сложности-высокий
Опишите на русском языке или одном из языков программирования алгоритм получения из заданного целочисленного массива размером 30 элементов другого массива, который будет содержать модули значений элементов первого массива (не используя специальной функции, вычисляющей модуль числа).
Решение:
Решение представлено на языках программирования Паскаль, Бейсик и Си, на алгоритмическом и на естественном языках.
Вариант1:
Паскаль | Алгоритмический язык |
---|---|
const N=30; var a, b:array[1..N] of integer; i: integer; begin for i:=1 to N do read(a[i]); for i:=1 to N do if a [i] < 0 then b[i]:= - a[i] else b[i]:= a[i]; end. |
алг нач цел N=30 целтаб a[1:N], b[1:N] цел i, j нц для i от 1 до N ввод a[i] кц нц для i от 1 до N если a[i]<0 то b[i] := -a[i] иначе b[i] := a[i] все кц кон |
Бейсик | СИ |
FOR I=1 to N INPUT A(I) NEXT I N=30 DIM I, A(N), B(N) AS INTEGER FOR I = 1 TO N IF A(I) < 0 THEN B(I) = - A(I) ELSE B(I) = A(I) ENDIF NEXT I END |
#include <stdio.h> #define N 30 void main(void){ int a[N], b[N]; int i, j; for (i=0; i<N; i++) scanf("% d", &a[i]); for(i=0;i<N;i++){ if(a[i]<0) b[i]=-a[i]; else b[i]=a[i]; } } |
Естественный язык | |
Объявляем массивы A и B из 30 элементов. Объявляем целочисленные переменные I, J. В цикле от 1 до 30 вводим элементы массива a с 1-го по 30-й. В цикле от 1-го элемента до 30 проверяем, меньше ли нуля текущий элемент массива A. Если текущий элемент массива A меньше нуля, то текущему элементу массива В присваиваем значение текущего элемента массива А, умноженного на минус один. Иначе, текущему элементу массива В присваиваем значение текущего элемента массива А. Переходим к следующему элементу. |
Вариант2:
Паскаль | Алгоритмический язык |
---|---|
const N=30; var a, b:array[1..N] of integer; i: integer; begin for i:=1 to N do read(a[i]); for i:=1 to N do if a [i] >= 0 then b[i]:= a[i] else b[i]:= -a[i]; end. |
алг нач цел N=30 целтаб a[1:N], b[1:N] цел i, j нц для i от 1 до N ввод a[i] кц нц для i от 1 до N если a[i]>=0 то b[i] := a[i] иначе b[i] := -a[i] все кц кон |
Бейсик | СИ |
FOR I=1 to N INPUT A(I) NEXT I N=30 DIM I, A(N), B(N) AS INTEGER FOR I = 1 TO N IF A(I) >= 0 THEN B(I) = A(I) ELSE B(I) =-A(I) ENDIF NEXT I END |
#include <stdio.h> #define N 30 void main(void){ int a[N], b[N]; int i, j; for (i=0; i<N; i++) scanf("% d", &a[i]); for(i=0;i<N;i++){ if(a[i]>=0) b[i]=a[i]; else b[i]=-a[i]; } } |
Естественный язык | |
Объявляем массивы A и B из 30 элементов. Объявляем целочисленные переменные I, J. В цикле от 1 до 30 вводим элементы массива a с 1-го по 30-й. В цикле от 1-го элемента до 30 проверяем, удовлетворяет ли текущий элемент массива A условию: больше или равен нулю Если текущий элемент массива A больше нуля или равен нулю, то текущему элементу массива В присваиваем значение текущего элемента массива А. Иначе, текущему элементу массива В присваиваем значение текущего элемента массива А, умноженного на минус один. Переходим к следующему элементу. |