- •Проектування програмних засобів. Загальні відомості.
- •Лабораторна робота № 1 Робота з потоками.
- •Лабораторная работа n2.
- •Лабораторная работа n3.
- •Лабораторная работа №4 Разработка объектно-ориентированных программ. Взаємодія класів. Порядок выполнения работы (по занаятиям).
- •Требования к программе
- •Лабораторная работа №5
- •Перелік літератури
Лабораторна робота № 1 Робота з потоками.
Требования к программе:
Организовать удобный пользовательский интерфейс с помощью окон и цветовых решений.
Организовать ввод данных (исходного текста) из файла.
Исходный текст выводить поэкранно с выдачей промежуточных результатов после каждого экрана.
Ключевые элементы текста выделять цветом.
№ |
Задание
|
|
|
Найти количество слов, начинающихся на букву «К». |
|
|
Найти среднее количество знаков препинания в предложении. |
|
|
Найти количество сочетаний букв «ЛА» в четных словах. |
|
|
Найти среднее количество букв в предложении. |
|
|
Найти среднее количество знаков препинания в абзаце. |
|
|
Найти количество слов, заканчивающихся на букву «А». |
|
|
Найти количество слов с буквой «С» третьим символом. |
|
|
Найти среднее количество букв в абзаце. |
|
|
Найти количество строк, начинающихся с букв «К, Л, М». |
|
|
Найти количество гласных и согласных букв в тексте. |
|
|
Найти количество строк с числами. |
|
|
Найти сумму слов чётных предложений. |
|
|
Найти количество предложений, начинающихся с предлогов. |
|
|
Найти количество слов, состоящих более чем из 5-ти букв. |
|
|
Найти количество предложений с цифрами. |
|
|
Найти сумму букв чётных слов. |
|
|
Найти количество строк, начинающихся с предлога. |
|
|
Вывести на экран количество согласных букв, если предложение чётное и количество гласных, если нечётное. |
|
|
Найти количество предлогов в тексте. |
|
|
Найти сумму всех чисел текста. |
|
|
Найти количество строк, в которых более чем 2 предлога. |
|
|
Найти среднее количество слов в предложении. |
|
|
Найти количество предложений, имеющих нечётное количество слов. |
|
|
Найти среднее количество предложений в абзаце. |
|
|
Найти количество предложений, имеющих более 6-ти слов. |
|
|
Найти количество чётных слов, начинающихся на букву «Л». |
|
|
Найти количество абзацев, начинающихся на букву «М». |
|
|
Найти среднее количество слов в абзаце. |
|
|
Найти количество четных абзацев с нечетным количеством предложений. |
|
|
Найти среднее количество абзацев с четным количеством предложений. |
Пример.
Найти количество предложений, содержащих не более 3-х знаков препинаний.
Постановка задачи.
Знаки препинания - '.','!','?',':',';',',','-'.
Предложение – набор знаков, которые заканчиваются '.','!','?'.
Таким образом, будем считывать и анализировать содержимое текстового файла по одному знаку, пока файл не закончится.
Встречается знак препинания – увеличиваем на единицу счетчик знаков препинания в предложении(Kol_zn). Встретился знак конца предложения – проверяем счетчик знаков препинания в предложении. Если их не более 3, увеличиваем счетчик количества подходящих предложений(Kol_pr). После каждого знака конца предложения, счетчик количества знаков препинания необходимо обнулить.
После анализа, считанный символ выдается на экран.
Особый случай – троеточие. Набор из трёх символов должен восприниматься как один символ конца предложения. Это легко обеспечить, если, при получении точки, будем анализировать предыдущий символ – он не должен быть точкой. Подобные рассуждения можно распространить на комбинации всех символов конца предложения. А обнуление счётчика знаков препинания после каждого подобного знака обеспечит корректный их подсчет.
После определения типа символа необходимо установить цвет, которым он будет выведен на экран. Имеется 4 типа символов: нейтральный символ, знак препинания, знак конца предложения, которое удовлетворяет заданию, знак конца предложения, которое не удовлетворяет заданию.
После выдачи символа на экран, необходимо проверять, на какой строке находится курсор. Если на последней строке окна – выдаем промежуточные результаты и приостанавливаем работу до нажатия любой клавиши.
Блок-схема алгоритма решения этой задачи представлена на рис1.1. Программа приведена ниже.
/*Найти количество предложений, содержащих не более 3-х знаков препинания */
#include <stdio.h>
#include <conio.h>
#define KOL_SET1 7
#define KOL_SET2 3
unsigned in_set_char(char,const char *,int);
void main()
{
unsigned KOL_ZN=0,KOL_PR=0;
char Name_F[100],c,cpred=0;
FILE *f;
char set1[KOL_SET1]={'.','!','?',':',';',',','-'},set2[KOL_SET2]={'.','!','?'}; normvideo();
cprintf("\n\rВведите имя файла-");
cscanf("%s",Name_F);
while(kbhit())getch();
if((f=fopen(Name_F,"rt"))==NULL)
cprintf("\n\rФайл не открылся.Нажмите любую клавишу.");
else
{
c=fgetc(f);
while(!feof(f))
{
if(in_set_char(c,set1,KOL_SET1))
{
KOL_ZN++;
if(in_set_char(c,set2,KOL_SET2))
{
if(!in_set_char(cpred,set2,KOL_SET2))
if(KOL_ZN<=3)
{
KOL_PR++;
textcolor(GREEN);
}
else textcolor(BLUE);
KOL_ZN=0;
}
else textcolor(RED);
}
else textcolor(WHITE);
putch(c);
if(c=='\n') putch('\r');
cpred=c;
if(wherey()==25)
{
textcolor(GREEN);
cprintf("Найдено предложений-%d. Нажмите любую клавишу.",KOL_PR);
getch();
clrscr();
}
c=fgetc(f);
}
fclose(f);
textcolor(MAGENTA+BLINK);
cprintf("\n\rОкончательный итог-%d предложений. Нажмите любую клавишу.",KOL_PR); }
getch();
normvideo();
}unsigned in_set_char(char s,const char *mas,int kol) {
unsigned FLAG=0;
for(int i=0;i<kol;i++,mas++)
if(s==*mas)
{
FLAG++;
break;
}
return FLAG;
}
