otchet


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
МИНОБРНАУКИ РОССИИ

САНКТ
-
ПЕТЕРБУРГСКИЙ ГОСУДА
РСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ У
НИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯ
НОВА (ЛЕНИНА)

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






ОТЧЕТ

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


3

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

Тема:

Использование указателей
.










Студентка

гр. 7381


Мартьянова Н. М.

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


Берленко

Т
.
А.


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

2017




Цель работы:



Освоить указатели
;



Познакомиться с динамической памятью;



Научиться работать со строками
.

Задание:

Написать

программу, которая форматирует некоторый текст и выводит результат на
консоль
.
На вход программе подается текст который заканчив
ается предложением "Dragon
flew
away!".

Предложение (кроме последнего) может заканчи
ваться на:



. (точка)




; (точка с запятой)




? (вопросительный знак)

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




Каждое предложение должно начинаться с новой строки.




Табуляция в начале предложения должна быть удалена.




Все предложения
, в которых больше одной заглавной буквы, должны быть удалены.




Текст должен заканчиваться фразой "Количество предложений до n и количество
предложений после m", где n
-

количество предложений в изначальном тексте (
без
учета

терминального предложения "Dra
gon flew away!") и m
-

количество предложений в
отформатированном тексте (без учета предложения про количество из данного пункта).


Основные теоретические положения:

1.


string
.
h


содержит прототип функции
strlen
(
возвращает длину строки);

2.


stdlib
.
h


содержит прототипы функций
calloc
(
выделяет бло
к памяти для массива
размером
num элементо
в, каждый из
которых занимает
size байт, и инициализирует все
свои биты в нулями.
)
,
realloc
(
изменяет величину
выделенной памяти
)
,
malloc
(
выделяет
блок памяти, размером sizemem байт, и во
звращает указатель на начало блока.
)
;

3.


ctype
.
h


содержит прототип функции

isupper
(

проверяет символ, передаваемый через
параметр, является ли он прописным символом
)
;

Вывод:

В

ходе
выполнения работы

были изучены

указатели, функции для работы с динамической
памятью

malloc
,
calloc
,
realloc
. Освоены методы работы со строками.

Исход
ный код проекта:

Файл

main
.
c
:

#
include


stdio
.
h


#
include


string
.
h


#
include stdlib.h1s-;t-;Ս-;2l1;i11;ଳ.;&#x-16h;&#x-320;

#include ctype.h̜-;"t-;Ty3;p33;-22;&#x.-82;&#xh330;

int main()

{


int length=1;


char* sentence=calloc(length, sizeof(char));


char c,a;


while((c=getchar())!=EOF)


{


++length;


sentence=realloc(sentence, length*sizeof(char));


sentence[length
-
2]=c;


}


int length2=1;


char* sentence2=calloc(length2, sizeof(char));


int

n
=0; // кол
-
во предложений до


int

m
=0; // кол
-
во предложений после


int

k
=0;


int

Up
=0; //кол
-
во заглавных букв


int i=0;


for (i=0;istrlen(sentence);++i){


a=sentence[i];


sentence2[k]=a;



if((sentence2[0]==' ')||(sentence2[0]=='
\
t')){




++i;





a=sentence[i];





sentence2[0]=
a;




}


++k;

++length2;

sentence2=(char*)realloc(sentence2,length2*sizeof(char));


if(isupper(a)){

++Up;


}


if ((a == '.') || (a == ';') || (a == '?') || (a==
'!'))
{


++m;



++n;


if(Up=1){




sentence2[k]='
\
0';


printf("%s
\
n",sentence2);



}


else{
--
m;}


Up=0;


k=0;


length2=1;


sentence2=(char*)re
alloc(sentence2,length2*sizeof(char));


}

}


printf
("Количество предложений до %
d

и количество предложений после %
d

",
n
-
1,
m
-
1);

free(sentence);

free(sentence2);

return 0;

}


Makefile:

a
ll
: main.o


g
cc
main.o

m
ain.
o: main.c


g
cc
main.c


Приложенные файлы

  • pdf 18415994
    Размер файла: 245 kB Загрузок: 2

Добавить комментарий