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 (демо ЕГЭ 2006)

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

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

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

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

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

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

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

На рисунке желтым цветом выделен 1-й максимальный элемент, а розовым - 2-й элемент (искомый). Он равен 12. Программа выводит такое же значение.

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

 

Rambler's Top100

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