Как найти количество элементов больше среднего

Добавил:

Upload

Опубликованный материал нарушает ваши авторские права? Сообщите нам.

Вуз:

Предмет:

Файл:

Методические указания.pdf

Скачиваний:

77

Добавлен:

13.02.2015

Размер:

1.2 Mб

Скачать

writeln(s1,s2,s3);

s:=0;

for i:=1 to 10 do s:=s+a[i]; r:=s/10;

n:=0;

for i:=l to 10 do

if a[i]>r then inc(n); writeln(n);

Задача 6. Поиск максимального элемента и подсчет частоты его появления в массиве

mах:=а[1];

for i:=1 to 10 do

if a[i]>max then max:=a[i];

s:=0;

for i:=1 to 10 do

if a[i]=max then inc(s); writeln(s);

Задача 7. Поиск нулевого элемента i:=1:

while (i<=10) and (а[i]<>0) do inc(i); if i>10 then writeln(‘нет’)

else writeln(‘первый 0 стоит на позиции ‘,i);

Задача 8. Поиск отрицательного числа с конца массива i:=10;

while (i>=1) and (a[i]>=0) do dec(i);

if i<l then writeln(‘отрицательных чисел нет’)

else writeln(‘последнее число<0 стоит на позиции ‘,i);

13.4 Стандартная обработка двумерных массивов

Значительное количество практических задач требует обработки не одномерных, а двумерных массивов.

Двумерный массив и его части

Например, рассмотрим двумерный массив из 25 элементов, содержащий 5 строк и 5 столбцов:

5 -2 3 14 11

16

17

13

1

7

1

5

-2

3

14

20

8

0

9

10

-4

3

-6

3

14

16

Компонентами двумерного массива, требующими специальной обработ-

ки, могут быть его строки, столбцы и диагонали, например:

вторая строка:

17

13

1

7

1

главная (первая) диагональ:

5

13

3

10

16

побочная (вторая) диагональ:

11

7

3

0

3

третий столбец:

3

1

3

9

3

и т.д.

Индексы элементов двумерного массива

Двумерный массив А из 25 элементов (5 строк и 5 столбцов) имеет такие

индексы:

5

-2

3

14

11

А[1,1]

А[1,2]

А[1,3]

А[1,4]

А[1,5]

17

13

1

7

1

А[2,1]

А[2,2]

А[2,3]

А[2,4]

А[2,5]

5

-2

3

14

20

А[3,1]

А[3,2]

А[3,3]

А[3,4]

А[3,5]

8

0

9

10

-4

А[4,1]

А[4,2]

А[4,3]

А[4,4]

А[4,5]

3

-6

3

14

16

А[5,1]

А[5,2]

А[5,3]

А[5,4]

А[5,5]

Первый индекс — это номер строки, а второй — номер соответствующего столбца (в некоторых программных продуктах возможна другая трактовка: первый индекс — столбец, а второй — строка).

При обработке в программе всех элементов двумерного массива необходимо писать вложенные операторы FOR:

FOR I:=1 TO 5 DO

FOR J:=1 TO 5 DO … A[I,J] …

Индексы строки и столбца двумерного массива

Рассмотрим в качестве примера индексы второй строки:

А[2,1] А[2,2] А[2,3] А[2,4] А[2,5].

Легко заметить, что первый индекс — номер строки — фиксирован и равен 2 (для 2-й строки), а второй индекс последовательно пробегает значения от 1 до 5. Поэтому в случае необходимости обработки 2-й строки двумерного массива достаточно написать:

17

FOR I:=1 ТО 5 DO … А[2 , I ] …

Переменная I может быть по необходимости заменена любой другой, например М:

FOR M:=1 ТО 5 DO … А[2 , M ] …

Теперь рассмотрим в качестве примера индексы третьего столбца:

А[1,3] А[2,3] А[3,3] А[4,3] А[5,3]

Очевидно, что теперь второй индекс — номер столбца — фиксирован, а первый индекс — номер строки — пробегает последовательно все значения от 1 до 5. Поэтому цикл обработки элементов третьего столбца должен выглядеть так:

FOR I:=1 ТО 5 DO … А[ I , 3 ] …

Индексы диагоналей двумерного массива

Элементы первой диагонали двумерного массива имеют индексы:

А[1,1] А[2,2] А[3,3] А[4,4] А[5,5]

Легко заметить, что индекс строки равен индексу столбца для всех элементов первой диагонали, и потому цикл обработки ее элементов должен выглядеть следующим образом:

FOR I:=1 ТО 5 DO … А[I , I] …

Элементы второй диагонали двумерного массива имеют индексы:

А[1,5] А[2,4] А[3,3] А[4,2] А[5,1]

Нелегко, но можно заметить, что сумма индексов строки и столбца для всех элементов второй диагонали постоянна и равна 6 (для массива 5 x 5; для массива N x N это будет N + 1), и потому цикл обработки элементов второй диагонали должен выглядеть следующим образом:

FOR I:=1 ТО N DO … А[I , N+1-I] …

Перенос простейших алгоритмов на двумерные массивы

Учитывая все вышеизложенное, можно согласиться с методикой переноса алгоритмов с одномерных массивов на двумерные, которая проиллюстрирована на примере алгоритма суммирования элементов:

s:=0;

{Суммирование элементов}

for i:=1 to 30 do s:=s+А[i];

{одномерного массива А}

s:=0;

{Суммирование элементов второй}

for i:=1 to 5 do s:=s+B[2,i];

{строки двумерного массива B}

s:=0;

{Суммирование элементов третье- }

for i:=1 to 5 do s:=s+B[i,3];

{го столбца двумерного массива B}

s:=0;

{Суммирование элементов первой}

for i:=1 to 5 do s:=s+B[i,i];

(диагонали двумерного массива B}

s:=0;

{Суммирование элементов второй}

for i:=1 to 5 do s:=s+B[i,6-1];

{диагонали двумерного массива B}

s:=0;

{Суммирование элементов}

18

for

i:=1

to

5

do

{двумерного массива B}

for

j:=1

to

5

do

s:=s+B[i,j];

В чем же заключается эта методика? В замене индексов одномерного массива на индексы соответственно строки, столбца, первой или второй диагоналей или всего двумерного массива. В случае обработки всего двумерного массива необходимо также использовать вложенные операторы FOR.

Другие примеры работы с массивами смотрите в соответствующем разде-

ле.

13.5Отладка и тестирование программ

2.5.1Общие сведения об отладке и тестировании ПО

Отладка программы — это процесс поиска и устранения ошибок в программе, производимый по результатам её прогона на компьютере.[1]

Тестирование (англ. test — испытание) — это испытание, проверка правильности работы программы в целом, либо её составных частей.[1]

Отладка и тестирование — это два четко различимых и непохожих друг на друга этапа:

при отладке происходит локализация и устранение синтаксических ошибок и явных ошибок кодирования;

в процессе же тестирования проверяется работоспособность программы, не содержащей явных ошибок.

Тестирование устанавливает факт наличия ошибок, а отладка выясняет ее

причину. В современных программных системах (Visual Studio, Delphi и др.) отладка осуществляется часто с использованием специальных программных средств, называемых отладчиками. Эти средства позволяют исследовать внутреннее поведение программы.

Программа-отладчик обычно обеспечивает следующие возможности:

пошаговое исполнение программы с остановкой после каждой команды (оператора);

просмотр текущего значения любой переменной или нахождение значения любого выражения, в том числе, с использованием стандартных функций; также можно установить новое значение переменной;

установку в программе «контрольных точек»(breakpont), т.е. точек, в которых программа временно прекращает свое выполнение, так что можно оценить промежуточные результаты, и др. Причем прерывание исполнения программы может быть вызвано как достижением точки прерывания, так и при выполнении в этой точке некоторого условия При отладке программ важно помнить следующее:

в начале процесса отладки надо использовать простые тестовые дан-

19

ные;

возникающие затруднения следует четко разделять и устранять строго поочередно;

не нужно считать причиной ошибок машину, так как современные машины и трансляторы обладают чрезвычайно высокой надежностью. Тестовые данные должны обеспечить проверку всех возможных условий

возникновения ошибок:

должна быть испытана каждая ветвь алгоритма;

очередной тестовый прогон должен контролировать нечто такое, что еще не было проверено на предыдущих прогонах;

первый тест должен быть максимально прост, чтобы проверить, работает ли программа вообще;

арифметические операции в тестах должны предельно упрощаться для уменьшения объема вычислений;

количества элементов последовательностей, точность для итерационных вычислений, количество проходов цикла в тестовых примерах должны задаваться из соображений сокращения объема вычислений;

минимизация вычислений не должна снижать надежности контроля;

тестирование должно быть целенаправленным и систематизированным, так как случайный выбор исходных данных привел бы к трудностям в определении ручным способом ожидаемых результатов; кроме того, при случайном выборе тестовых данных могут оказаться непроверенными многие ситуации;

усложнение тестовых данных должно происходить постепенно. Пример. Система тестов для задачи нахождения корней квадратного

уравнения a x2 +b x +c =0 представлена в таблице 2:

Таблица 1.4

Номер

Проверяемый случай

Коэффициенты

Результаты

теста

a

b

c

1

d >0

1

1

-2

x1 = 1, x2 = — 2

2

d=0

1

2

1

Корни равны: x1 =- 1, x2 = — 1

3

d < 0

2

1

2

Действительных корней нет

4

a=0, b=0,

c=0

0

0

0

Все коэффициенты равны нулю.

х — любое число.

5

a=0,

b=0,

c<>0

0

0

2

Неправильное уравнение

6

a=0,

b<>0

0

2

1

Линейное уравнение. Один корень: x =- 0,5

7

a <> 0, b <> 0, с = 0

2

1

0

x1 = 0, x2 = — 0,5

Следует помнить о том, что ошибки могут быть допущены на всех этапах решения задачи — от ее постановки до оформления. Разновидности ошибок и соответствующие примеры приведены в таблице 3:

20

Таблица 1.5

Вид ошибки

Пример

Неправильная постанов-

Правильное решение неверно сформулированной задачи

ка задачи

Неверный алгоритм

Выбор алгоритма, приводящего к неточному или эффективному

решению задачи

Ошибка анализа

Неполный учет ситуаций, которые могут возникнуть; логические

ошибки

Семантические ошибки

Непонимание порядка выполнения оператора

Синтаксические ошибки

Нарушение правил, определяемых языком программирования

Ошибки при выполне-

Слишком большое число, деление на ноль, извлечение квадратно-

нии операций

го корня из отрицательного числа и т. п.

Ошибки в данных

Неудачное определение возможного диапазона изменения данных

Опечатки

Перепутаны близкие по написанию символы, например, цифра 1 и

буквы I, l

Ошибки ввода-вывода

Неверное считывание входных данных, неверное задание форма-

тов данных

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

Отсутствие сообщений о синтаксических ошибках является необходимым, но не достаточным условием, чтобы считать программу правильной.

Примеры синтаксических ошибок:

пропуск знака пунктуации;

несогласованность скобок;

неправильное формирование оператора;

неверное образование имен переменных;

неверное написание служебных слов;

отсутствие условий окончания цикла;

отсутствие описания массива и т.п.

Существует множество ошибок, которые транслятор выявить не в состоянии, если используемые в программе операторы сформированы верно. Приведем примеры таких ошибок.

Логические ошибки:

неверное указание ветви алгоритма после проверки некоторого условия;

неполный учет возможных условий;

пропуск в программе одного или более блоков алгоритма.

Ошибки в циклах:

неправильное указание начала цикла;

неправильное указание условий окончания цикла;

21

неправильное указание числа повторений цикла;

бесконечный цикл.

Ошибки ввода-вывода; ошибки при работе с данными:

неправильное задание типа данных;

организация считывания меньшего или большего объёма данных, чем требуется;

неправильное редактирование данных.

Ошибки в использовании переменных:

использование переменных без указания их начальных значений;

ошибочное указание одной переменной вместо другой.

Ошибки при работе с массивами:

массивы предварительно не обнулены;

массивы неправильно описаны;

индексы следуют в неправильном порядке. Ошибки в арифметических операциях:

неверное указание типа переменной (например, целочисленного вместо вещественного);

неверное определение порядка действий;

деление на нуль;

извлечение квадратного корня из отрицательного числа;

потеря значащих разрядов числа.

Все эти ошибки обнаруживаются с помощью тестирования.

22

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

0 / 0 / 0

Регистрация: 16.06.2012

Сообщений: 37

1

Определить количество элементов значение которых больше среднего арифметического всех элементов

18.07.2012, 08:52. Показов 6699. Ответов 1


Студворк — интернет-сервис помощи студентам

пределить количество элементов значение которых больше среднего арифметического всех элементов



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

18.07.2012, 08:52

1

Дмитрий1988

5 / 5 / 1

Регистрация: 12.07.2012

Сообщений: 13

18.07.2012, 09:23

2

Лучший ответ Сообщение было отмечено AZIZBEK как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
const int MAX = 100;
 
int main()
{
    setlocale(LC_CTYPE, "");    //Для вывода кирилицы в консоли
 
    int Mass[MAX];
    int SrednAr=0, Kol=0;
 
    for (int i=0;i<MAX;i++)
        SrednAr+=Mass[i]=rand()%100;
 
    SrednAr/=MAX;
        
    for (int i=0;i<MAX;i++)
        if (Mass[i]>SrednAr) Kol++;
 
    std::cout<< "Среднее арифметическое элементов массива "  << SrednAr << std::endl;
    std::cout<< "Количество элементов больше среднего арифметического "  << Kol << std::endl;
 
    system("pause");
    return 0;
}



2



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

18.07.2012, 09:23

2

Формулировка задачи:

Составить программы, находящую в данном массиве:
количество элементов, больших среднего арифметического всех его элементов.

Код к задаче: «Найти количество элементов массива, больших среднего арифметического»

textual

Листинг программы

// Найти в массиве количество элементов, больших среднего арифметического всех его элементов.
const n=1000; 
var a:array[1..n] of integer;
    k,l,m:integer;
    i:integer;
begin
writeln('Введите количество элементов массива: ');
readln(m);
writeln('Введите массив: ');
for i:=1 to m do readln(a[i]);
for i:=1 to m do 
begin
  k:=k+a[i];
  k:=k div m;
end;
for i:=1 to m do
  if a[i]>k then inc(l);
writeln('Количество элементов, больших среднего арифметического всех его элементов: ',' ',l);
end.

Задан массив из n целых чисел. Найти сумму и количество чисел, больших среднего арифметического элементов массива.

Входные данные

В первой строке записано число n. В следующей строке записано n целых чисел. Все числа не превосходят по модулю 100.

Выходные данные

Вывести сумму и количество чисел, больших среднего арифметического элементов массива.

Алгоритм решения задачи

  • В цикле суммируем все элементы массива;
  • Находим среднее арифметическое;
  • В цикле считаем количество элементов больших среднего арифметического и их сумму.

Решение

using System;

class Program
{
    static void Main(string[] args)
    {
        var n = Convert.ToInt32(Console.ReadLine());
        var array = Array.ConvertAll(Console.ReadLine().Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries), s => int.Parse(s));

        int sum1 = array[0];
        for (int i = 1; i < n; i++)
        {
            sum1 += array[i];
        }

        double average = sum1 / (double)n;

        var count = 0;
        var sum2 = 0;

        foreach (var current in array)
        {
            if (current > average)
            {
                count++;
                sum2 += current;
            }
        }

        Console.WriteLine("{0} {1}", sum2, count);
    }
}

Смотрите также:

Если у вас есть диапазон значений на листе, и вы хотите подсчитать ячейки выше / ниже определенного значения или выше / ниже среднего значения диапазона, как вы можете быстро их подсчитать? В Excel для этого можно использовать формулу СЧЁТЕСЛИ.

Подсчитайте ячейки выше / ниже среднего

Подсчитайте ячейки выше / ниже определенного значения


стрелка синий правый пузырь Подсчитайте ячейки выше / ниже среднего

Здесь у вас есть диапазон значений на листе, как показано на снимке экрана, и теперь вам нужно подсчитать значения выше или ниже среднего в этом диапазоне.

Выберите пустую ячейку, например Ячейку C6, введите эту формулу = СЧЁТЕСЛИ (A1: C5; «>» & СРЕДНЕЕ (A1: C5)) (диапазон A1: C5 указывает диапазон, в котором вы хотите подсчитать количество ячеек выше среднего, вы можете изменить его по своему усмотрению) и нажмите Enter кнопку на клавиатуре. Смотрите скриншот:

Функции: Если вы хотите подсчитать количество ячеек ниже среднего, введите эту формулу = СЧЁТЕСЛИ (A1: C5; «<» & СРЕДНЕЕ (A1: C5)) (диапазон A1: C5 указывает диапазон, в котором вы хотите подсчитывать ячейки ниже среднего, вы можете изменить его по своему усмотрению).


стрелка синий правый пузырь Подсчитайте ячейки выше / ниже определенного значения

Если вы просто хотите подсчитать ячейки выше или ниже определенного значения, в этом случае я хочу подсчитать ячейки выше числа 50.

Выберите пустую ячейку, например Ячейку C6, введите эту формулу = СЧЁТЕСЛИ (A1: C5; «> 50») (диапазон A1: C5 указывает диапазон, в котором вы хотите подсчитать ячейки выше указанного значения 50, число 50 соответствует критерию, вы можете изменить их по своему усмотрению) и нажмите Enter кнопку на клавиатуре. Смотрите скриншот:

Совет: если вы хотите подсчитать количество ячеек ниже определенного значения, введите эту формулу = СЧЁТЕСЛИ (A1: C5; «<50»)(диапазон A1: C5 указывает диапазон, в котором вы хотите посчитать ячейки ниже указанного значения, число 50 соответствует критерию, вы можете изменить их по своему усмотрению).


Относительные статьи:

  • Подсчитайте / суммируйте ячейки больше, чем число в Excel

Комментарии (0)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как можно найти мужа на час
  • Как составить дополнительное соглашение к договору об изменении цены
  • Холодильник lg тарахтит как исправить
  • Что такое rrn на чеке как найти
  • Как составить проект по окружающему миру 3 класс на тему кто нас защищает

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии