Главная страница

Лабораторная работа 1. 1381_PR_Новак_Полина_lb1. Отчет по лабораторной работе 1 по дисциплине Программирование


Скачать 25.63 Kb.
НазваниеОтчет по лабораторной работе 1 по дисциплине Программирование
АнкорЛабораторная работа 1
Дата10.03.2022
Размер25.63 Kb.
Формат файлаdocx
Имя файла1381_PR_Новак_Полина_lb1.docx
ТипОтчет
#390282

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра МО ЭВМ


отчет

по лабораторной работе №1

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

Структуры и обзор stdlib


Студентка гр. 1381




Новак П.И.

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




Жангиров Т.Р.

Санкт-Петербург

2022

Цель работы.


Развитие навыков работы со структурами и библиотекой stdlib языка программирования Си.

Задание.

Напишите программу, на вход которой подается текст на английском языке (длина текста не превышает 1000 символов) и слово str (длина слова не превышает 30 знаков). Слова в тексте разделены пробелами или точкой. Программа должна вывести строку "exists", если str в тексте есть и "doesn't exist" в противном случае.

Программа должна реализовать следующий алгоритм:

  • разбить текст на слова, используя функции стандартной библиотеки

  • отсортировать слова, используя алгоритм быстрой сортировки (см. функции стандартной библиотеки)

  • определить, присутствует ли в тексте str, используя алгоритм двоичного поиска (для реализации алгоритма двоичного поиска используйте функцию стандартной библиотеки)

  • вывести строку "exists", если str в тексте есть и "doesn't exist" в противном случае.

Выполнение работы.


Подключаются библиотеки stdio, stdlib, откуда в дальнейшем будут задействованы определённые функции.

В функции main() инициализируются статический массив text-текст, вводимый пользователем, динамический str-строка, вводимая пользователем после ввода текста. Программа считывает текст и строку при помощи fgets(), убирает перенос строки для корректной работы обработки текста.

Инициализируется динамический двумерный массив TextRemake, текст делится на слова при помощи функции strtok, TextRemake заполняется указателями из strtok.

При помощи функции qsort происходит сортировка TextRemake, функция бинарного поиска bsearch определяет, присутствует ли в тексте str, в зависимости от этого выводит “exists” или “doesn’t exist”.

Тестирование.


Результаты тестирования представлены в табл. 1.

Входные данные

Выходные данные

1.

Java is a general-purpose computer programming language that is concurrent class-based object-oriented and specifically designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere" (WORA) meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of computer architecture. As of 2016 Java is one of the most popular programming languages in use particularly for client-server web applications, with a reported 9 million developers. Java was originally developed by James Gosling at Sun Microsystems (which has since been acquired by Oracle Corporation) and released in 1995 as a core component of Sun Microsystems Java platform.

is

exists


Выводы.


Были развиты навыки работы со структурами и библиотекой stdlib языка программирования Си.

Приложение А
Исходный код программы


Название файла: main.c

#include

#include

#include

int cmp(const void* a, const void* b){

const char* first=(const char*)a;

const char** second=(const char**)b;

return strcmp(first, *second);

}

int compare(const void* a, const void* b){

const char** first=(const char**)a;

const char** second=(const char**)b;

return strcmp(*first, *second);

}

int main(){

char text[1000];

char* str=malloc(30);

fgets(text,1001,stdin);

fgets(str,31,stdin);

if (text[strlen(text)-1]=='\n')

text[strlen(text)-1]='\0';

if (str[strlen(str)-1]=='\n')

str[strlen(str)-1]='\0';

char** TextRemake=malloc(0);

int length=0;

const char sign[3]={' ','.'};

char* token=strtok(text, sign);

while(token!=NULL){

TextRemake[length]=malloc(strlen(token));

TextRemake[length]=token;

length+=1;

token=strtok(NULL, sign);

}

qsort(TextRemake, length,sizeof(char*), compare);

if(bsearch(str, TextRemake, length, sizeof(char*), cmp))

printf("exists");

else

printf("doesn't exist");

return 0;

}


написать администратору сайта