Добавил:
Лабы/курсовые по программированию (С++/Verilog HDL), Теория и Практика Помехоустойчивого Кодирования Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1сем Дагаев / ЛР11 / Отчет

.docx
Скачиваний:
14
Добавлен:
09.03.2022
Размер:
183.85 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Факультет инфокоммуникационных Сетей и систем (иксс)

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

(пи и вт)

Дисциплина: «Программирование»

Лабораторная работа №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. Использование передачи в качестве аргумента файла.

Соседние файлы в папке ЛР11