Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра промышленной электроники (ПрЭ)
ОТЧЁТ
по результатам лабораторной работы №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