1сем Дагаев / ЛР11 / Отчет
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет инфокоммуникационных Сетей и систем (иксс)
кафедра программной инженерии и вычислительной техники
(пи и вт)
Дисциплина: «Программирование»
Лабораторная работа №11.
Тема: «Работа со строками»
вариант №20
Выполнил: Студент группы ИКВТ-03
Ситников Д.Г.
Подпись____________
Принял: к.т.н, доцент кафедры ПИиВТ
Дагаев А.В.
Подпись____________
«_____»________ 2020
Санкт-Петербург
2020г
Постановка задачи
Имеется текстовый файл, содержащий произвольное количество строк. Длина каждой строки не превосходит 255 символов. Необходимо выполнить заданную обработку файла.
В каждой строке файла имеется произвольное количество чисел, записанных в форме f. Сформировать новый файл, содержащий нормализованные числа исходного файла.
Разработка алгоритма
Обработка может состоять из вложенных итерационных циклов. Во внешнем цикле можно читать очередную строку, а во внутреннем цикле выполнять обработку строки с помощью функции strtod() (перевод данных из типа char в тип double).
Программа состоит из основной программы - функции main() и функции обработки строк файла.
Рис.1 Функция обработки строки.
Рис.2 Основная программа.
В программе должно быть предусмотрен ввод исходных данных из файла «OldFile»; построчные считывание и обработка: перевод из char в double произведение математических преобразований в нормализации числа; вывод сформированных нормализованных чисел в файл «NewFile».
Описание программы
Программа разработана при помощи среды разработки Microsoft Visual Studio, в которой предоставлены все необходимые библиотеки, заголовки, необходимые компилятором C и C++ для работы в системе Windows, написана на языке C++. Программа собрана при помощи системы сборки компилятор C++ Visual Studio includes a command-line C, набора инструментов .NET Framework 4.5, тестировалась на Windows 10. Были подключены библиотеки iostream, windows.h, stdio.h, string и fstream; были использованы функции setlocale, fopen_s, feof, _fcloseall, cout, cin, system, calloc, free, strtod, abs, snprintf, fputs и fgets.
Результаты работы программы
Начальные данные:
Рис.3 Исходные данные.
Далее предоставлены результаты выполнения программы:
Рис.4 Результат выполнения программы.
Контрольный расчет
Для тестирования программы выбираем контрольный набор исходных данных и выполнение программы:
Рис.5 Исходный данные.
Рис.6 После выполнения программы.
Расчет, выполненный вручную, дал аналогичные результаты.
Текст программы на C++
#include <iostream>
#include <Windows.h>
#include <stdio.h>
#include <string>
#include <fstream>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
inline void Obrstr(char *str, FILE *fileW) {
int i = 0, m = 0, x;
int N = strlen(str);
char *Buffer;
double chislo;
Buffer = (char*)calloc(N * sizeof(char));
while (i < N)
if (str[i] != ' ' || str[i]!= '\0') {
Buffer[m] = str[i];
m++;
}
else {
chislo = strtod(Buffer, NULL);
x = 1;
while (abs(chislo) > 1) {
chislo /= 10;
x++;
}
snprintf(Buffer, m, "%f",chislo);
fputs(Buffer, fileW);
m = 0;
free(Buffer);
}
}
void main() {
setlocale(LC_ALL, "RUS");
char c = 0;
char *FR;
int x = 0;
FILE *fileR;
fopen_s(&fileR, "OldFile.txt", "a");
FILE *fileW;
fopen_s(&fileW, "NewFile.txt", "w");
system("cls");
Read:
while (!feof(fileR)) {
fgets(FR, LEN, fileR);
Obrstr(FR, fileW);
goto Read;
}
_fcloseall();
system("pause");}
Выводы
В ходе выполнения работы были получены следующие результаты:
1. Изучены алгоритмы написания функций работы с внешними файлами: считывание и записывание информации, работы с текстовыми файлами;
2. Программа разработана для заданной обработки чисел с плавающей точкой на языке C++;
3. Использование передачи в качестве аргумента файла.