18539

Обработка числовых последовательностей

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа № 2 Обработка числовых последовательностей Существует круг задач в которых необходимо както обработать заданную числовую последовательность причем для получения результата достаточно просмотреть последовательность один раз. Например чт

Русский

2013-07-08

77 KB

35 чел.

Лабораторная работа № 2

Обработка числовых последовательностей

Существует круг задач, в которых необходимо как-то обработать заданную числовую последовательность, причем для получения результата достаточно просмотреть последовательность один раз. Например, чтобы вычислить среднее арифметическое заданной последовательности чисел, можно суммирование чисел и подсчет их количества совместить со вводом. Тогда не нужно будет хранить всю последовательность в памяти компьютера (в виде массива), достаточно иметь одну скалярную переменную целого или вещественного типа и поочередно присваивать ей вводимые значения.

Числовая последовательность может задаваться с  указанием  количества чисел или иметь какой-то признак конца.

Пусть последовательность задается в виде

A1, A2, ..., An, W

(n заранее неизвестно, W – признак конца последовательности), тогда процесс обработки в общем виде можно представить одной из двух схем:

а) цикл с постусловием б) цикл с предусловием

Фрагменты программ на Cи, соответствующие этим схемам:

а)

scanf ("%f",&a);

do

{ /* обработка a */

. . .

scanf ("%f",&a);

}

while (a!=W);

б)

scanf ("%f",&a);

while (a!=W)

{ /* обработка a */

. . .

scanf ("%f",&a);

}

В этих фрагментах предполагается, что переменная a вещественного типа (float), поэтому указан формат %f. Если же последовательность состоит из целых чисел типа int, то следует выбрать формат %d; W – символическая константа, которая должна быть определена с помощью директивы #define.

Числовая последовательность  может быть задана и с указанием количества вводимых чисел:

n, A1 , A2 , ..., An .

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

a) полная форма б) более короткая форма

На языке Си этот процесс можно записать с помощью оператора цикла while или лучше оператора цикла for:

а) scanf  ("%d",&n); i=1;

while (i<=n)

{

scanf ("%f",&a);

/* обработка a */

. . .

i++;

}

б)  scanf ("%d",&n);

for (i=1; i<=n; i++)

{

scanf ("%f",&a);

/* обработка a */

. . .

}

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

if (условие) оператор1

else оператор2

В операторе if оператор1 и оператор2 могут быть составными операторами, конструкция "else оператор2" может отсутствовать, например:

if  (a % 2 != 0)

{ s=s+a;

k++;

}

Пpимечание. В опеpатоpах if, while, do-while можно использовать не только условные выражения, но и вообще любые. Это связано с тем, что в Си значение "ложь" – это 0, а "истина" – любое ненулевое число. Поэтому предыдущий опеpатоp if можно записать иначе:

if  (a % 2)  { s=s+a;  k++; }

Пример.

Задача. Даны целые числа n, A1 ,A2 , ... ,An. Вычислить сумму тех чисел последовательности, которые удовлетворяют условию |Ai | < i2.

Рис. 1. Схема алгоритма решения задачи

Программа:

#include <stdio.h>

#include <math.h>

main()

{ int n; /* количество чисел  */

int a, /* очередное число */

s=0, /* сумма*/

i; /* порядковый номер числа в посл-ти */

printf ("\nВведите количество чисел: ");

scanf ("%d",&n);

printf ("Введите числовую последовательноть:\n");

for (i=1; i<=n; i++)

{scanf ("%d",&a);

if (abs(a) < i*i)  s=s+a;

}

printf ("сумма=%d\n",s);

}

Тесты для проверки программы:

№ п/п

n

Исходная последовательность:

Ожидаемый результат:

1

6

1 -2 3 16 -5 40

Сумма=-4

2

4

-1 5 10 -20

Сумма=0

Результаты тестирования программы:

Введите количество чисел: 6

Введите числовую последовательность:

1 -2 3 16 -5 40

сумма=-4

Введите количество чисел: 4

Введите числовую последовательность:

-1 5 10 -20

сумма=0

Порядок выполнения работы.

1. Получить задание у преподавателя.

2. Составить схему и программу на языке Си, подобрать тесты для проверки программы на компьютере.

3. Отладить программу на компьютере и показать результаты тестирования преподавателю.

4. Оформить и сдать отчет по лабораторной работе.

Задания.

  1.  Даны натуральные числа А1, А2,… Признак конца последовательности 0. Получить количество и сумму тех членов последовательности, которые делятся на 5 и не делятся на 7.
  2.  Даны натуральные числа А1, А2,… Признак конца последовательности 0. Найти min12, А23,…).
  3.  Даны натуральные числа А1, А2,… Признак конца последовательности 0. Найти наибольший член последовательности.
  4.  Даны натуральное число n и последовательность натуральных чисел  А1, А2,…, Аn. Определить количество членов последовательности имеющих четные порядковые номера и являющихся нечетными числами.
  5.  Даны натуральное число n и последовательность действительных чисел А1, А2,…, Аn. Получить удвоенную сумму всех положительных членов последовательности.
  6.  Даны натуральное число n и последовательность действительных чисел А1, А2,…, Аn. Получить сумму отрицательных и количество положительных элементов последовательности.
  7.  Даны натуральное число n и последовательность действительных чисел А1, А2,…, Аn. Получить min1, А35,…) + max2, А4, А6,…).
  8.  Даны натуральное число n и последовательность действительных чисел  А1, А2,…, Аn. Получить (А1, А2, А3,…,Аn)*n.
  9.  Даны натуральные числа А1, А2,… Признак конца последовательности 0. Найти наименьший член последовательности.
  10.   Даны натуральное число n и последовательность натуральных чисел А1, А2,…, Аn. Определить количество членов последовательности кратных 3 и не кратных 5.
  11.   Даны натуральные числа А1, А2,… Признак конца последовательности 0. Найти max12, А23,…).
  12.  Даны натуральное число n и последовательность действительных чисел А1, А2,…, Аn. Получить A1* A2 + A2 * A3 + ... + An-1 * An .
  13.  Даны натуральное число n и последовательность действительных чисел А1, А2,…, Аn. Получить (A2 – A1)*(A3 – A2)*  ... * (An - An-1).
  14.  Даны натуральное число n и последовательность действительных чисел А1, А2,…, Аn. Проверить упорядочены ли числа последовательности по убыванию;
  15.  Даны натуральное число n и последовательность действительных чисел А1, А2,…, Аn. Проверить есть ли в последовательности одинаковые соседние числа.
  16.  Даны вещественные числа A1, A2 , ... .Признак конца последовательности число 999. Выяснить, составляют ли числа возрастающую последовательность.
  17.  Даны вещественные числа A1, A2 , ... .Признак конца последовательности число 999. Получить среднее арифметическое всех чисел.
  18.  Даны вещественные числа A1, A2 , ... .Признак конца последовательности число 999. Определить сумму положительных и произведение отрицательных чисел последовательности.
  19.  Даны вещественные числа A1, A2 , ... .Признак конца последовательности число 999. Определить разность между наибольшим числом и наименьшим числом последовательности.
  20.  Даны вещественные числа A1, A2 , ... .Признак конца последовательности число 999. Определить, сколько раз встречается в последовательности наибольшее число.


Обработка
A

Ввод A

Ввод A

A= W

да

Обработка

A

!=W

Ввод A

Ввод A

нет

нет

Ввод n

i <= n

i =1 , n

да

i = i + 1

Обработка

A

Ввод A

Обработка

A

Ввод A

i = 1

Ввод n

Оператор2

Оператор1

да

нет

условие

да

нет

i = i +1

нет

да

s=s+a

|a|<i*i

нет

да

s=0, i=1

Ввод a

начало

конец

Вывод 

s

i ≤ n  

Ввод n


 

А также другие работы, которые могут Вас заинтересовать

15137. Защита конфиденциальной информации (на примере страховой компании 'РОСНО') 556.02 KB
  КУРСОВАЯ РАБОТА по дисциплине Теория организации на тему: Защита конфиденциальной информации в ОАО СК РОСНО 2010 Оглавление Введение...3 ГЛАВА 1. Теоретические ас
15138. Государственное регулирование межрегиональных экономических связей 53.06 KB
  При рассмотрении проблем региональной экономики, поиске путей их решения необходим учет теоретических разработок, касающихся исследований региональных систем в странах с развитой рыночной экономикой
15140. Антонио Гауди-и-Корнет 226.5 KB
  Реферат по истории искусств на тему: Антонио ГаудииКорнет архитектор. Анто́нио Пла́сид Гильем Гауди́иКорне́т исп. Antonio Plácido Guillermo Gaudí y Cornet; кат. Antoni Plàcid Guillem Gaudí i Cornet; 25 июня 1852 Реус Каталония 10 июня 1926 Барселона выдающийся каталонский архитектор бо...
15141. Брестский мир 22.81 KB
  Брестский мир 1918 г. Брестский мир 1918 мирный договор между Россией с одной стороны и Германией АвстроВенгрией Болгарией и Турцией с другой заключён в БрестЛитовск
15142. Василий Иванович Чапаев 19.31 KB
  Василий Иванович Чапаев Василий Иванович Чапаев легендарный полководец начдив командир Красной Армии. Всем нам он хорошо известен по замечательному произведению Дмитрия Фурманова €œЧапаев€ дававшему молодому поколению 20х годов боевую зарядку и стра...
15143. Иван александрович Хлестаков в комедии Ревизор 29.41 KB
  Иван Александрович Хлестаков в комедии Ревизор И.А.Хлестаков появляется в городке в тот момент когда там все ждут появления ревизора. Чиновники испуганы городничему от страха видятся во сне крысы. Степень боязни и страха чиновников пря...
15144. Иван Сергеевич Шмелёв 71.83 KB
  Иван Сергеевич Шмелёв Иван Сергеевич Шмелев родился в Кадашевской слободе Замоскворечья 21 сентября 1873 года. Дед Ивана Сергеевича государственный крестьянин из Гуслиц Богородского уезда Московской губернии поселился в Москве после пожара 1812 г. Отец писателя прин
15145. Наполеон Бонапарт 24.62 KB
  Наполеон Бонапарт Свою профессиональную военную службу начал в 1785 в чине младшего лейтенанта артиллерии; выдвинулся в период Великой французской революции достигнув при Директории чина бригадного после взятия Тулона 17 декабря 1793...