Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Цвинтарный Иван 362-2 Лабораторная работа 7.pdf
Скачиваний:
3
Добавлен:
21.06.2023
Размер:
449.6 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра промышленной электроники (ПрЭ)

ОТЧЁТ

по результатам лабораторной работы №7

по дисциплине «Информатика»

Строки

Выполнил

Студент гр. 362-2

________ Цвинтарный И.В.

«___» __________

Проверил

Преподаватель

_____________ Савин Д.А.

«___»__________

Томск 2022

 

Оглавление

 

Введение ...........................................................................................................

3

1.

Ход работы....................................................................................................

4

2.

Индивидуальное задание .............................................................................

5

3. Программный код – текст программы ........................................................

5

4.

Результаты работы программы ....................................................................

7

Заключение .......................................................................................................

8

2

Введение

В седьмой лабораторной работе нам необходимо научиться работать со строками. Освоить способ динамического захвата и освобождения памяти под символьные массивы. Уяснить разницу между понятиями «размер массива символов» и «длина строки» при помощи функций sizeof и strlen. Освоить функции библиотеки «string.h». Научится переводить числовые данные в строковые и обратно

3

1.Ход работы

1.Написать, отладить и протестировать программу, выполняющую операции с массивами символов в соответствии со своим вариантом, используя при этом функции библиотеки «string.h».

2.Продемонстрировать выделение памяти под статические и динамические строковые переменные, а также корректное удаление динамических массивов символьного типа.

3.В тестовых строках обязательно должны содержаться те символы и подстроки, работа с которыми предусмотрена в задании. Переменные X, Y и

Z – вещественного типа.

4.Производимые над строками операции оформить в виде подпрограмм. В

теле подпрограмм допускается использование функций стандартных библиотек работы со строками «string.h» и т.п.

5.При демонстрации преподавателю работающей программы необходимо провести пошаговую трассировку указанного преподавателем участка программы.

6.Результат работы программы выводить на экран и сохранять в виде скриншотов для отчета. По выполненной лабораторной работе подготовить отчет с результатами выполнения работы.

4

2. Индивидуальное задание

Вариант индивидуального задания – 23.

Рисунок 2.1 – Формулировка задания

3. Программный код – текст программы

#define _CRT_SECURE_NO_WARNINGS #include <iostream>

#include <cmath>

using namespace std;

void formula(double Y, double Z, char* str); void calcwords(char* strin, char* strout);

int main()

{

setlocale(LC_ALL, "RUS");

char strout[200];

char strin[150] = "олволвае Епрстывыв ывыл%Епрствлыводыла %Епрст%лыовыолвыЕпристав Епрстоыввыывы";

calcwords(strin, strout);

cout << "Исходная строка: " << strin << endl;

cout << "Результирующая строка: " << strout << endl;

double Y, Z;

cout << "Введите Y: "; cin >> Y;

cout << "Введите Z: "; cin >> Z;

char str[100]; formula(Y, Z, str);

cout << "Результат преобразования: " << str << endl;

5

}

void formula(double Y, double Z, char* str)

{

double X = floor(Y + pow(Z, 3));

sprintf(str, "%09.7lf = %09.7lf + %09.7lf^3", X, Y, Z);

}

void calcwords(char* strin, char* strout)

{

int count = 0; int i = 0;

while (strin[i] != '\0')//пока не дошли до конца строки

{

if (strin[i] == '%')//если есть символ '%'

{

i++;//увеличивая на 1, проверяем все символы в строке

while (strin[i] != '%' && strin[i] != '\0')//пока не нашли второй символ

'%' и не дошли до конца строки

{

if (strin[i] == 'Е' && strin[i + 1] == 'п' && strin[i + 2] == 'р' && strin[i + 3] == 'с' && strin[i + 4] == 'т')//находим 'Епрст'

{

count++;//увеличиваем счетчик на 1

}

i++;

}

}

i++;

}

strcpy(strout, strin); char buf[5];

sprintf(buf, "%d", count); strcat(strout, " "); strcat(strout, buf);

}

6