18539

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

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

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

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

Русский

2013-07-08

77 KB

34 чел.

Лабораторная работа № 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


 

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

20919. Организационно-экономическая сущность задачи 2.16 MB
  Для этого рассмотрим: внешние и внутренние связи подразделения для которого создается АИС; информационная взаимосвязь входной и выходной информации; способы отправки и доставки информации. Информационная взаимосвязь подразделений данного экономического объекта позволяет определить состав взаимосвязанных подразделений объекта и место подразделения для функционирования которого необходимо решение данной задачи. Пример отражения информационной взаимосвязи подразделений супермаркета и выделение конкретного подразделения в частности отдела...
20920. ДОСЛІДЖЕННЯ СХЕМ ПОРІВНЯННЯ НАПРУГ 452 KB
  На панелі Джерела натиснути відповідні кнопки вибору сигналу постійного струму і включити стенд. На панелі U вх натиснути кнопку Джер. 1 панелі Джерела встановити напруга на вході 1 компаратора рівне U вх = 3 В. На панелі натиснути кнопку Джер.
20921. ДОСЛІДЖЕННЯ РОБОТИ МУЛЬТИВІБРАТОРА 64.5 KB
  2 із зображенням мультивібратора рис. Визначити за допомогою осцилографа амплітуду частоту і шпаруватість сигналу на виході мультивібратора. Часові діаграми роботи мультивібратора показані на рис.
20922. ДОСЛІДЖЕННЯ ІНТЕГРАТОРА 184 KB
  Експериментальне визначення перехідних характеристик інтегратора рис. Натисніть кнопку 20 сек панелі і кнопку С1 Інтегратор відлічуючи по секундоміру стенду час за допомогою U вих виконайте вимірювання зміни в часі вихідної напруги інтегратора. побудуйте перехідні характеристики інтегратора.
20923. ДОСЛІДЖЕННЯ ЕЛЕМЕНТІВ, ЩО ВИКОНУЮТЬ ЛОГІЧНІ ОПЕРАЦІЇ 105.5 KB
  Мета роботи: ознайомитися з принципом і режимом роботи логічних елементів. При виконанні роботи визначаються передавальні характеристики логічного елементу при різних опорах навантаження а також складаються таблиці станів для логічних елементів €œІ€ €œНІ€ €АБО€ €АБОНІ€ €ІНІ€. Визначення передавальних характеристик логічних елементів рис. Складання таблиць істинності логічних елементів.
20924. ДОСЛІДЖЕННЯ ТРИГЕРІВ 241 KB
  При виконанні цієї роботи вивчається дія асинхронного RSтригера а також двох синхронних: Ттригера і JКтригера Порядок виконання роботи Робота виконується на лабораторному стенді ЭС21. Дослідження RS тригера рис. З'єднати входи R і S тригера з клемами панелі Рівень логічний. З'єднати прямий вихід тригера з клемами вольтметра що вимірює вихідний сигнал.
20925. ДОСЛІДЖЕННЯ ЛІЧИЛЬНИКІВ 1.12 MB
  Порядок виконання роботи Робота виконується на стенді ЭС21 Дослідження двійкового лічильника рис11. З'єднати вхід R лічильника з клемою панелі €œРівень логічний€ а вхід С лічильника з клемою панелі €œІмпульс одиночний€ і з клемою €œВхід€ панелі €œЛічильник імпульсів€. Натисненням кнопки панелі €œІмпульс одиночний€ подавати імпульси на вхід С досліджуваного лічильника. Після подачі чергового імпульсу визначати стан всіх виходів досліджуваного лічильника за допомогою вольтметра €œ U вих.
20926. ДОСЛІДЖЕННЯ ФОТОЕЛЕМЕНТІВ І ФОТОРЕЛЕ 806 KB
  Величина напруги необхідної для зняття характеристик встановлюється за допомогою відповідних потенціометрів а світлового потоку перемикачами розташованими під вікном з фотоелементами. Порядок виконання роботи Зібрати схему дослідження вакуумного фотоелемента СЦВ3 рис. Рис.
20927. ДОСЛІДЖЕННЯ МАЛОПОТУЖНОГО ДЖЕРЕЛА ЖИВЛЕННЯ 262 KB
  Накреслити осцилограми напруги на навантаженні при величині струму Iн = 60 мА. Виміряти за допомогою цифрового вольтметра змінну складову напруги на навантаженні і постійну напругу при струмі навантаження Iн = 60 мА. Обчислити коефіцієнт пульсацій випрямленої напруги: де U m – амплітуда змінної складової вихідної напруги. Накреслити осцилограму напруги на навантаженні.