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Файловая система
  • Устройство компьютера
  • ПО компьютера

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

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

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

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

На рисунке видно, что максимальный элемент в массиве равен 12. В массиве есть 2 элемента со значением 12, они выделены розовым. Поэтому количество элементов равных максимальному равно 2-м. Что и вывела программа.

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

 

Rambler's Top100

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