infoegehelp.ru

Успешно сдать ЕГЭ по информатике
  • Главная
  • Контакты
  • Карта сайта
  • Помощь сайту
Важно
  • Демо варианты ЕГЭ
  • Учим числа: 2 в степени
  • Биты, байты, килобайты
Решение задач
  • Задачи вне основных разделов информатики
Разделы информатики
  • 2011-12-18-14-33-54Системы счисления
  • 2011-12-18-16-45-20Алгебра логики
  • 2011-12-18-16-55-26Программирование
  • 2011-12-18-16-53-40Кодирование информации
  • 2011-12-18-16-56-19Компьютерные сети и Интернет
  • -excelЭлектронные таблицы (Excel)
  • 2011-12-18-16-57-50Базы данных
  • 2011-12-18-16-58-50Графы
  • 2011-12-18-17-00-15Файловая система
  • Устройство компьютера
  • ПО компьютера

Разбор задачи C2 (демо ЕГЭ 2007)

Опишите на русском языке или одном из языков программирования алгоритм поиска номера первого из двух последовательных элементов в целочисленном массиве из 30 элементов, сумма которых максимальна (если таких пар несколько, то можно выбрать любую из них).
Решение:

Программа написана на языках:

  • Паскаль (среда разработки Turbo Pascal 7.0),
  • Бейсик (среда разработки Quick Basic 4.5),
  • Алгоритмический язык (среда разработки Кумир 1.9.0),
  • Си (среда разработки Borland C++ 3.1).

Напротив названия языка программирования в скобках содержатся ссылки на скачку исходников и ехе (исполняемых файлов).

Паскаль (исходник+exe-файл)Бейсик (исходник)
const N=30;
var A:array[1..N] of integer;
     maxSum, maxNum, i: integer;
begin
  for i:=1 to N do readln(A[i]);
  maxNum:=1;
  maxSum:=A[1]+A[2];
  for i:=2 to N-1 do
  begin
    if A[i]+A[i+1]>maxSum then
    begin
      maxNum:=i;
      maxSum:=A[i]+A[i+1];
    end
  end;
  write(char(13)+char(10));
  writeln(maxNum);
  readln
end.
N=30
DIM i, maxSum, maxNum, A(N) AS INTEGER
FOR i = 1 TO N
   INPUT A(i)
NEXT i
maxNum=1
maxSum=A(1)+A(2)
FOR i = 2 TO N-1
   IF A(i)+A(i+1)>maxSum THEN
     maxNum=i
     maxSum=A(i)+A(i+1)
   END IF
NEXT i
PRINT
PRINT maxNum
END
Алгоритмический язык (исходник)Си (исходник+exe-файл)
алг
нач
   цел N=30
   целтаб A[1:N]
   цел i, maxSum, maxNum;
   нц для i от 1 до N
     ввод A[i]
   кц
   maxNum:=1
   maxSum:=A[1]+A[2]
   нц для i от 2 до N-1
     если A[i]+A[i+1]>maxSum
       то
         maxNum:=i
         maxSum:=A[i]+A[i+1]
     все
   кц
   вывод нс,maxNum
кон
#include <stdio.h>
#include <conio.h>
#define N 30
void main(void)
{
    int A[N];
    int i, maxSum, maxNum;
    for (i=0; i<N; i++) scanf("%d",&A[i]);
    maxNum=1;
    maxSum=A[0]+A[1];
    for (i=1; i<(N-1); i++){
      if(A[i]+A[i+1]>maxSum){
        maxNum=i;
        maxSum=A[i]+A[i+1];     
      }
    }
    printf("\n%d",maxNum);
    getch();
}
Естественный язык
Для хранения максимальной суммы 2-х последовательных элементов введем переменную maxSum, а для хранения индекса 1-го элемента в этой паре - переменную maxNum. Сначала в maxSum занесем сумму 1-х двух элементов, а maxNum приравняем единице. В цикле при проходе массива проверяем больше ли сумма очередной пары переменной maxSum. Если больше, то в maxSum заносим значение данной пары, а в переменную maxNum индекс 1-го элемента из данной пары. После завершения цикла переменная maxNum содержит индекс первого из двух последовательных элементов в целочисленном массиве, сумма которых максимальна.

Пример выполнения программы на 4-х языках:

Задача С2 ЕГЭ по информатике 2007 выполнение программы

Из рисунка видно, что подряд идущие элементы со значением 12 дают максимальную сумму: 12+12=24. На рисунке первый из этих элементов выделен розовым. Его № в массиве  равен 28 - для Паскаля, Бейсика и Алгоритмического языка и равен 27 - для Си, где нумерация в массиве начинается с нуля. Эти значения и вывела программа

Перейти к другим задачам.

 

Rambler's Top100

© Латыпова В.А., 2012-2020. Все права защищены.
Копирование материалов сайта только с разрешения администрации сайта