Файл: Методические указания по выполнению лабораторных работ Для обучающихся (очная форма обучения) по направлению подготовки 09. 03. 03 Прикладная информатика.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 140
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Пример 5. Программы, в которых имена файлов для чтения или записи можно ввести с клавиатуры или задать в качестве аргументов командной строки
# include
# include
# include using namespace std; int main (int argc, char *argv[])
{ char I; char c; if (argc<=1) { cout<<”usage: primer.exe filename1 [filename2]”; return 1;
} ifstream file; for(I=1;I{ if(!file.open(argv[I])) { cout<<”Bad file”; return 1;
}; cout<<”file “<{ c=file.get(); cout<}; file.close();
} return 0;
}
Для работы с файловыми потоками любого из стандартных типов, нужно перегрузить операторы ввода и вывода под требуемый тип данных или воспользоваться шаблоном класса, задаваемым с помощью ключевого слова template
# include
# include
# include
{ char I; char c; if (argc<=1) { cout<<”usage: primer.exe filename1 [filename2]”; return 1;
} ifstream file; for(I=1;I
}; cout<<”file “<
} return 0;
}
Для работы с файловыми потоками любого из стандартных типов, нужно перегрузить операторы ввода и вывода под требуемый тип данных или воспользоваться шаблоном класса, задаваемым с помощью ключевого слова template
74
Пример 6. Для работы с файловыми потоками любого из стандартных типов
# include
}; ostream& operator << (ostream& out, myclass& m)
{ out << m.x << ‘ ‘ << m.y << endl; return out;
} istream& operator >> (istream& in, myclass& m)
{ in >> m.x >> m.y; return in;
}
2.
Порядок выполнения работы
Написать программу, последовательно выполняющую перечисленные ниже задачи.
Предусмотреть печать приглашения на ввод (строки, поясняющей пользователю, какие действия от него ждет программа) и информативный вывод данных.
Задание 1. Получить с клавиатуры строку, содержащую пробелы. Вывести полученную строку на экран и сообщить количество символов в ней.
Задание 2. Написать функцию, которая -удаляет из строки лишние пробелы: два и более подряд идущих пробелов, пробелы перед знаками препинания: точка, запятая, двоеточие, точка с запятой, восклицательный и вопросительный знаки (исключение – тире); несколько пробелов перед первым или после последнего слова - добавляет пробел после знака препинания, если он пропущен. Функция принимает строку и возвращает строку. В основном алгоритме вывести полученную строку и сообщить количество символов в ней.
Задание 3. C помощью текстового редактора создать файл Input.txt, содержащий текст не более 10 строк, длина строки текста не должна превышать 60 символов.
Задание 4. Написать функцию, которая принимает строки из файла Input.txt, выполняет изменение строк с помощью функции, созданной по заданию 2, и записывает их в файл
Output.txt.
Задание 5. Написать функцию, принимающую имя файла (Output.txt) и слово. Функция должна вывести слова, содержащие указанное слово (например, слово «вол» содержится в словах «вол», «невольно», «волк» и «символы»). Если таких слов нет, вернуть признак отсутствия.
Задание 6. Написать функцию (при необходимости функций может быть несколько) для обработки файла в соответствии с заданием своего варианта.
75
3.
Задания для самостоятельной работы
1.
Занести в новый файл слова, расположенные между самым длинным и самым коротким словами каждой строки.
2.
Занести в новый файл слова, в которых гласных и согласных поровну.
3.
Занести в новый файл слова, которые начинаются и оканчиваются одной и той же буквой.
4.
Занести в новый файл слова, состоящие из двух и более слогов (признаком слога является наличие гласной буквы).
5.
Занести в новый файл слова, начинающиеся с заданной буквы.
6.
Занести в новый файл слова, заканчивающиеся гласной буквой.
7.
Занести в новый файл слова, начинающиеся с гласной буквы.
8.
Занести в новый файл слова, которые содержат хотя бы одну указанную букву.
9.
Занести в новый файл слова, в которых не больше трёх согласных.
10.
Занести в новый файл слова, начинающиеся с согласной буквы.
11.
Занести в новый файл все слова, в которых не встречается указанная буква.
12.
Занести в новый файл слова, заканчивающиеся на согласную букву.
13.
Занести в новый файл слова, начинающиеся с заглавной буквы.
14.
Занести в новый файл слова, которые начинаются на ту же букву, что и указанное слово.
15.
Занести в новый файл слова, которые не совпадают с указанным словом
Контрольные вопросы:
1.
Что такое поток?
2.
Что представляет собой файловый указатель?
3.
Перечислить режимы доступа к файлу.
4.
Как открыть и как закрыть файл?
76
Список литературы:
1.
Литвиненко Н.А. Технология программирования на C++. Начальный курс -
СПб. : БХВ-Петербург, 2005. - 288 с.
2.
Павловская Т.А. C/C++. Программирование на языке высокого уровня: учебник для вузов/ Т.А. Павловская. - СПб.: Питер, 2017. - 460 с.
3.
Фрэнк М. Каррано, Джанет Дж. Причард, Абстракция данных и решение задач на C++. Стены и зеркала. : пер. с англ. - М.: Изд. Дом «Вильяме», 2003 - 848 с.
4.
.Хабибуллин И.Ш. Программирование на языке высокого уровня C/C++ -
СПб. : БХВ-Петербург, 2006. - 512 с.
5.
Лаптев В. В., Таласова В.В Методические указания по выполнению лабораторных работ по дисциплине «Программирование и информатика» для студентов направления 00.03.04 «», / АГТУ – Астрахань, 2019.- 50 с.
77
Приложение 1.
Образец отчёта по лабораторной работе
Отчет по лабораторной работе № __ Вариант ____
Дисциплина «Основы алгоритмизации и программирование»
«Тема лабораторной работы» (берется из методических указаний по лабораторным работам)
Выполнил: студент группы _________________ Иванов И.И. «___»_________20__
Проверил:
___________________________ _________________ «____»_________20__ уч. степень, звание, должность Ф.И.О.
1. Постановка задачи
Формулировка задания из методических указаний, причём как общую для всех вариантов часть, так и задание своего варианта
Функциональные требования: вычислить значение выражения
12 8
10 7
2 2
x
x
x
x
у
Входные данные:
Х –значение из множества действительных чисел
Выходные данные:
Y - значение из множества действительных чисел
2. Математическая модель задачи:
Основные понятия задачи:
Х – аргумент выражения, область допустимых значений: R – множество действительных чисел,
Y – результат вычисления выражения, область допустимых значений: R – множество действительных чисел,
Формульная зависимость:
12 8
10 7
2 2
x
x
x
x
у
Ограничения:
≠ 6 ≠ 2
78
3. Алгоритм решения задачи
4. Тестовый набор данных
Значение
входных данных
Результат ручной
проверки
Результат работы
системы
Комментарий
x=2
Решений нет
В данном значений решений нет
Вышел за область допустимых значений x=6
Решений нет
В данном значений решений нет
Вышел за область допустимых значений x=q
-----------
??????? x=5
*результат решения вручную *
*результат решения программы *
*данные приведены для примера*
79
Приложение 2
Листинги программ, реализованных в ходе выполнения лабораторной работы №
Выполнил: студент группы _________________ Иванов И.И. «___»_________20__
Проверил:
___________________________ _________________ «____»_________20__ уч. степень, звание, должность Ф.И.О.
Задание 1. Программа для демонстрации работы процедур и функций
Листинг желательно приводить моноширинным шрифтом (например, Courier)
модуль proced
# Функция вычисляет наибольший общий делитель двух целых чисел #
закр функция
(
входной целое a, входной целое b):целое NOD по к
а a # b повторять если a
> b то присвоить a := a - b; иначе присвоить b := b - a; конец ветвления
; конец цикла
; вернуть a; конец
NOD;
#увеличивает дробь a/b на величину дроби c/d#
закр процедура
(
переменный целое a, переменный целое b, входной целое c, входной целое d) summa переменная
-целое new_a := a * d + b * c; переменная
- целое new_b := b * d; переменная
-целое nod_a_b := NOD(new_a, new_b); присвоить a := new_a \ nod_a_b; присвоить b := new_b \ nod_a_b; конец summa;
#запрашивает у пользователя дробь a/b#
закр процедура
(
переменный целое a, переменный целое b) read в
ы вести "\нВведите числитель дроби: "
; ввести a; вывести "Введите знаменатель дроби:"
; ввести b; конец read;
#выводит дробь a/b "в два этажа"#
закр процедура
(
входной целое a, входной целое b) display вывести "\н"
; вывести a; вывести "\н---\н"
; вывести b; вывести "\н"
;
80 конец display; начало переменная
-целое a := 1; переменная
-целое b := 3; переменная
-целое c := 1; переменная
-целое d := 6; вызвать read(a, b); вызвать read(c, d); вызвать summa(a, b, c, d); вызвать display(a, b); конец proced.