Главная » Дан целочисленный массив...найти и вывести...
17:32

Дан целочисленный массив...найти и вывести...


Задание:

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 100 – баллы учащихся выпускного класса за итоговый тест по информатике. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет найти и вывести количество учащихся, чья оценка за тест выше средней оценки в классе. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

Естественный язык

const N=30; 
var a: array [1..N] of integer; 
    i, j: integer; 
    s: real; 
begin
  for i:=1 to N do readln(a[i]); 
  ...
end.

Объявляем массив A из 30 элементов. Объяв-ляем целочисленные переменные i, j.
Объявляем действительную переменную s.
В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й.
...

Си

 

​#include<stdio.h>
 int main(void) {
    const int N=30; 
    int a[N]; 
    int  i, j; 
    float s; 
    for (i=0; i<N; i++)
     scanf(″%d″, &a[i]); 
  ...
}

 

Решение:

Эта задача в целом напоминает упрощенный вариант этой задачи, поэтому можно сразу привести решение. Единственная тонкость – можно исключить операции с вещественными числами, которые (теоретически) могут привести к ошибкам. Подробно этот прием описан в решении предыдущей задачи.
Решение на естественном языке. Записываем в переменную s начальное значение 0. В цикле добавляем все значения элементов массива, от 1-ого до 30-ого, к значению переменной s. После завершения цикла делим значение s на 30, чтобы найти среднее значение. Далее записываем в переменную j начальное значение 0. В цикле рассматриваем все элементы массива, от 1-ого до 30-ого, сравниваем значение текущего элемента со значением переменной s. Если значение текущего элемента больше значения s, увеличиваем счетчик j на 1. После завершения цикла выводим значение переменной j.
В приведенном выше решении на естественном языке дан «чистый» алгоритм. При работе на реальном компьютере нужно заботиться о точности вычислений, поэтому в программе на Паскале вместо проверки условия a[i] > среднего мы используем равносильное ему a[i]*N > суммы элементов. При этом переменную s можно было бы сделать и целой (но она вещественная по условию задачи, это нельзя менять!).

  1. const N=30;
  2. var a: array [1..N] of integer;
  3.     i, j: integer;
  4.     s: real;
  5. begin
  6.   for i:=1 to N do readln(a[i]);
  7.   s:= 0;
  8.   for i:=1 to N do s:= s + a[i];
  9.   j:= 0;
  10.   for i:=1 to N do
  11.    if a[i]*N > s then j:= j + 1;
  12.   writeln(j)
  13. end.

 


Похожие материалы:
Нашли ошибку на сайте? Напишите в комментариях!
Категория: Язык программирования: Паскаль | Просмотров: 46 | Добавил: Ученик | Рейтинг: 0.0/0