Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 курс / 5 / 05

.pdf
Скачиваний:
21
Добавлен:
21.08.2019
Размер:
340.72 Кб
Скачать

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

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

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

Задание 1. Длина последовательности целых чисел – случайное число от 10 до 30. Последовательность генерируется случайным образом или вводится с клавиатуры по желанию пользователя. Обработать эту последовательность без использования массива в соответствии с номером варианта. При вводе или генерации последовательность записать в файл Input.txt (первая компонента файла – количество элементов последовательности, остальные компоненты представляют собой элементы последовательности).

Задание 2. Из файла Input.txt, подготовленного в процессе выполнения Задания 1, вводится последовательность целых чисел известной длины (эта длина записана на первом месте в файле). Обработать эту последовательность без использования массива в соответствии с номером варианта. В процессе обработки записать результаты в файл Output.txt (все компоненты представляют собой элементы вновь получаемой последовательности).

Задание 3. Из файла Output.txt, подготовленного в процессе выполнения Задания 2, вводится последовательность целых чисел. Обработать эту последовательность без использования массива в соответствии с номером варианта. Результаты обработки вывести на экран.

Внимание!!!

Файлы после записи необходимо закрывать. Для разных заданий лучше использовать файловые потоки с разными именами.

Для того чтобы обрабатывать пары чисел, необходимо определить 2 переменные: например, A_old и A. В процессе обработки используются оба значения, затем происходит переприсвоение A_old = A; и вводится очередное, текущее значение переменной A. Необходимо следить, чтобы после прочтения последнего числа из файла циклический процесс завершался.

Соответственно, чтобы обрабатывать тройки чисел, необходимо определить 3 переменные: например, A_old, A и A_next. В процессе обработки используются все три значения, затем происходит переприсвоение A_old = A; A = A_next; и вводится очередное, текущее значение переменной A_next.

//Пример записи в текстовый файл для MS_VS случайных чисел от 0 до 10,

//а затем чтения этих чисел из файла и нахождения их суммы и количества

#include <fstream> #include <iostream>

#include <ctime>

// для генерации случайных чисел начиная с произвольного

числа

 

 

using namespace std;

 

 

int main()

 

 

{

 

 

srand((unsigned)time(NULL)); // для генерации случайных чисел начиная с произвольного числа

ofstream strm;

 

// выходной поток-объект

strm.open("c:/oonumber.txt");

// открываем

if (strm.is_open())

 

// проверка открытия

{

 

 

for(int i = 0; i < 10; i++) strm << rand()%10 << endl; strm.close(); // закрываем выходной поток-файл

//суммирование чисел, записанных в файле

//открываем тот же текстовый файл для чтения ifstream strm("c:/oonumber.txt");

if (strm)

// проверка открытия

{int number, summa = 0, count = 0;

// с файлом обращаемся так, как будто не знаем, сколько в нём чисел

while(strm >> number)

// ввод числа

{ ++count;

// подсчет количества

summa+=number;

// суммирование

}

// вывод результатов

cout << summa << "; " << count;

strm.close();

// закрываем поток-файл

}

}

system("pause"); return 0;

}

На следующей странице приведен аналог этой программы, выполненный в CodeBlcks (с

небольшой разницей, в чём она состоит – определите самостоятельно) Наберите текст программы и выполните её.

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

Варианты заданий

Вари-

Условия задания 1

 

 

Условия задания 2

 

Условия задания 3

ант

 

 

 

 

 

 

 

 

 

 

 

1.

Сообщить

порядковый

В выходную последовательность

записать

Найти среднее арифметическое

 

номер и значение числа,

только те числа, которые больше своих

элементов последовательности

 

превосходящего

все

соседей (если первое число больше второго, то

 

 

остальные

по абсолютной

его надо записать, если второе число больше

 

 

величине

 

 

первого

и третьего – надо записать второе

 

 

 

 

 

число,

если

последнее

больше

 

 

 

 

 

предпоследнего –

надо записать

последнее

 

 

 

 

 

 

 

 

число).

 

 

 

 

 

 

 

 

 

 

 

2.

Найти

 

 

количество

В

выходную

последовательность

записать

Найти минимальное число и его

 

положительных,

 

 

только те числа, которые вместе с соседями

порядковый номер

 

 

 

 

отрицательных

и

нулевых

составляют число N (если первое число в

 

 

 

 

 

 

 

элементов

 

в

 

этой

сумме со вторым даёт N, записываем первое

 

 

 

 

 

 

 

последовательности.

 

число, если первое, второе и третье числа в

 

 

 

 

 

 

 

 

 

 

 

 

 

сумме дают N, записываем второе число, если

 

 

 

 

 

 

 

 

 

 

 

 

 

последнее и предпоследнее числа в сумме

 

 

 

 

 

 

 

 

 

 

 

 

 

дают N, записываем последнее число)

 

 

 

 

 

 

 

3.

Найти

 

 

 

среднее

В

выходную

последовательность

записать

Найти

максимальное

чётное

 

арифметическое

 

 

только те числа, которые меньше суммы своих

число и его порядковый номер,

 

положительных

элементов

соседей (если первое число меньше второго,

при отсутствии

чётных чисел

 

данной

 

 

 

 

 

записываем первое число; если второе число

сообщить об этом

 

 

 

 

последовательности.

 

меньше суммы первого и третьего числа,

 

 

 

 

 

 

 

 

 

 

 

 

 

записываем второе число, если последнее

 

 

 

 

 

 

 

 

 

 

 

 

 

меньше

предпоследнего,

записываем

 

 

 

 

 

 

 

 

 

 

 

 

 

последнее число)

 

 

 

 

 

 

 

 

 

4.

Найти

 

 

 

среднее

В

выходную

последовательность

записывать

Найти

первое

отрицательное

 

арифметическое элементов

суммы соседних элементов (на 1 место –

число

и сообщить

порядковый

 

последовательности,

 

сумму первого и второго, на второе – сумму

номер, в случае отсутствия

 

принадлежащих диапазону

второго и третьего, на последнее – сумму

отрицательных

чисел

сообщить

 

[a; b]

 

 

 

 

 

предпоследнего и последнего).

 

 

об этом.

 

 

 

 

5.

Найти

 

 

 

среднее

В

выходную

последовательность

записать

Найти

полусумму

первого

и

 

арифметическое элементов

только

числа,

равные

 

среднему

последнего

положительных

 

последовательности,

 

арифметическому своих соседей (если первое

чисел, в случае отсутствия

 

заканчивающихся

цифрой

число равно второму – записываем первое

положительных

чисел

сообщить

 

«7».

 

 

 

 

 

число, если второе число равно полусумме

об этом.

 

 

 

 

 

 

 

 

 

 

 

первого и третьего – записываем второе число,

 

 

 

 

 

 

 

 

 

 

 

 

 

если последнее число равно предпоследнему –

 

 

 

 

 

 

 

 

 

 

 

 

 

записываем последнее число).

 

 

 

 

 

 

 

 

6.

Указать

пары

соседних

В

выходную

последовательность

записать

Найти

среднее

арифметическое

 

элементов

 

 

данной

только числа, заканчивающиеся цифрой «3»

положительных

 

 

элементов

 

последовательности

{ai},

 

 

 

 

 

 

 

последовательности

 

 

 

 

удовлетворяющих условию

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ai < ai+1 и количество таких

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пар

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7.

Сообщить,

имеется

ли

В

выходную

последовательность

записать

Найти

 

 

минимальное

 

среди введённых чисел три

только каждое третье число

 

 

положительное

число

и

его

 

подряд

идущих элемента,

 

 

 

 

 

 

 

порядковый номер, в случае

 

которые

могут

являться

 

 

 

 

 

 

 

отсутствия положительных числе

 

длинами

 

 

 

сторон

 

 

 

 

 

 

 

сообщить об этом

 

 

 

 

треугольника и количество

 

 

 

 

 

 

 

 

 

 

 

 

 

 

таких троек.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8.

Указать

пары

соседних

В

выходную

последовательность

записать

Найти

максимальное двузначное

 

элементов

 

 

данной

только числа, по абсолютной величине

число и его порядковый номер, в

 

последовательности,

 

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

 

 

случае

отсутствия

двузначных

 

имеющих

 

 

 

 

 

 

 

 

 

 

 

чисел сообщить об этом

 

 

 

противоположные

знаки и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

количество таких пар.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9.

Указать

 

 

соседние

В

выходную

последовательность

записать

Найти

полусумму

минимума и

 

элементы,

 

имеющие

только числа, кратные N или являющиеся

максимума.

 

 

 

 

 

одинаковую

чётность

(оба

делителями числа N.

 

 

 

 

 

 

 

 

 

 

чётные или оба нечётные),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

если

таковых

 

не

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обнаружится,

 

 

вывести

 

 

 

 

 

 

 

 

 

 

 

 

 

 

соответствующее

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сообщение.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

Указать

те

 

из

чисел,

В

выходную

последовательность

записать

Найти наименьшее из чисел,

 

которые

в

 

сумме

с

только

нечётные

двузначные

числа

расположенных на чётных местах

 

предыдущим

 

 

 

и

(отрицательные числа не рассматривать).

и сообщить его индекс.

 

 

 

последующим

элементами

 

 

 

 

 

 

 

 

 

 

 

 

 

 

составляют

 

N,

 

если

 

 

 

 

 

 

 

 

 

 

 

 

 

 

таковых

не

обнаружится,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вывести

соответствующее

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сообщение.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

Найти

 

 

количество

В

выходную

последовательность

записать

Найти

полусумму

первого

и

 

элементов

 

 

 

 

только

те

числа,

которые

больше

последнего

положительных

 

 

последовательности,

 

предыдущего,

но

меньше последующего

 

чисел, в случае отсутствия чисел

 

 

кратных

 

5,

которые

по

(первое число записывается при условии, что

 

сообщить об этом.

 

 

 

 

 

абсолютной

величине

не

оно меньше второго, последнее – при условии,

 

 

 

 

 

 

 

 

превосходят

N

(число

что оно больше предпоследнего)

 

 

 

 

 

 

 

 

 

элементов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

последовательности).

 

 

 

 

 

 

 

 

 

 

 

 

12

 

Указать

 

пары

соседних

В

выходную

последовательность

записать

 

Найти

первое

отрицательное

 

 

элементов

 

данной

только те числа, которые делятся на свою

 

число

и сообщить порядковый

 

 

последовательности,

 

последнюю цифру.

 

 

 

номер, в случае отсутствия

 

 

среднее

 

арифметическое

 

 

 

 

 

 

отрицательных чисел

сообщить

 

 

которых

 

равно

N

и

 

 

 

 

 

 

об этом.

 

 

 

 

 

количество таких пар.

 

 

 

 

 

 

 

 

 

 

 

 

13

 

Найти

 

 

 

среднее

В

выходную

последовательность

записать

 

Найти

полусумму

минимума и

 

 

арифметическое элементов

только положительные числа, кратные трём

 

максимума.

 

 

 

 

 

последовательности,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

расположенных

после

 

 

 

 

 

 

 

 

 

 

 

 

 

первого нулевого элемента

 

 

 

 

 

 

 

 

 

 

 

14

 

Сообщить,

имеется

ли

В

выходную

последовательность

записать

 

Найти наибольшее из чисел,

 

 

среди

введённых чисел

только числа, по абсолютной величине не

 

расположенных

на

нечётных

 

 

хотя бы три подряд идущих

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

 

 

местах и сообщить его индекс.

 

 

элемента,

 

образующих

 

 

 

 

 

 

 

 

 

 

 

 

 

возрастающую

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

последовательность.

 

 

 

 

 

 

 

 

 

 

 

 

15

 

Указать

 

пары

соседних

В

выходную

последовательность

записать

 

Найти максимальное число и его

 

 

элементов

 

данной

только каждое второе нечётное число

 

 

порядковый номер

 

 

 

 

 

последовательности,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

разность

между

которыми

 

 

 

 

 

 

 

 

 

 

 

 

 

равна 2 и количество таких

 

 

 

 

 

 

 

 

 

 

 

 

 

пар.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.5. Критерии оценивания работы

 

 

 

 

 

 

 

 

 

 

 

В таблице приведены критерии, по которым студент может оценить свою работу.

 

 

 

 

 

Критерии оценивания заданий

 

 

 

 

 

 

 

 

 

 

 

Процент

При наличии

синтаксических ошибок (программа

не транслируется) работа

не оценивается

(0

 

(общий

процентов выполнения).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

балл)*0

Использование массивов или векторов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Реализована задача 1

 

 

 

 

 

 

 

 

 

 

 

 

 

количество элементов файла Input.txt– случайное число N записано на первом месте, в файле N+1 число.

 

20

организовано меню для выбора способа заполнения файла

 

 

 

 

 

 

 

 

 

 

 

 

 

на экран выведены результаты выполнения задания 1

 

 

 

 

 

 

 

 

Реализована задача 2

 

 

 

 

 

 

 

 

 

 

 

 

20

в файле Output.txt – только те числа из файла Input.txt, которые отвечают условиям задания 2

 

 

 

 

 

Реализована задача 3

 

 

 

 

 

 

 

 

 

 

 

 

20

на экране – только те числа из файла Output.txt, которые отвечают условиям задания 3

 

 

 

 

 

 

 

Итого -

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

60 баллов

Дополнительно к этому общая оценка работы:

 

 

 

 

 

 

 

 

 

Набор тестовых данных для ручного ввода, позволяющий продемонстрировать выполнение всех трёх

 

15

заданий (так, чтобы были результаты и для первой, и для второй, и для третьей задачи

 

 

 

 

 

Защита на случай отсутствия файла или его пустоты

 

 

 

 

 

 

 

 

15

Аккуратное форматирование, комментариев необходимое и достаточное количество.

 

 

 

 

5

Программа выводит сведения о разработчике и номер варианта

 

 

 

 

 

 

5

Итого

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

100 %

Примерная блок-схема

(меню выбора способа заполнения файла не показано)

пуск

N=rand%(b-a)+a

i = 1, N

ввод A

вывод A в файл

Обработка элемента А

i = 1, N

чтение A из файла

A удовлетворяет

да

 

условию

 

 

вывод A в файл

не конец файла

 

да

 

чтение A из файла

 

Обработка элемента А

 

вывод результатов

 

стоп

 

Соседние файлы в папке 5
  • #
    21.08.2019340.72 Кб2105.pdf
  • #
    21.08.20191.42 Кб225.sln