Обработка статистических данных по файлу
Курсовая работа
Тема:
"Обработка
статистических данных по файлу"
Введение
Целью курсовой работы является составление программы, с
помощью которой пользователь может получать статистические сведения о текстовой
информации.
В данной курсовой работе для разработки программы
использовался язык С++ и среда программирования Borland C++ Builder 6.
Первый раздел посвящен описанию решения задачи. Решение
задачи начинается с ее постановки. При постановке задачи выясняется конечная
цель и вырабатывается общий подход к решению задачи. Приводится описание
исходных данных, условий задачи и целей ее решения.
В разделе описания программы дается обобщенное словесное
описание алгоритма решения поставленной задачи.
В разделе описания разработки программы указывается
обозначение и наименование программы; программное обеспечение, необходимое для
функционирования программы; язык программирования, на котором написана
программа.
В разделе описания тестирования программы кратко описывается
среда программирования.
1. Разработка алгоритма
1.1 Постановка задачи
алгоритм программа задача
Необходимо составить программу для обработки текстовой
информации:
пользователь вводит текст вручную или загружает из файла;
программа выводит статистические данные по файлу: общее число
знаков, число гласных, согласных, знаков препинания;
сохранение статистических данных в текстовом файле.
Язык программирования Си поддерживает множество функций
стандартных библиотек для файлового ввода и вывода. Эти функции составляют
основу заголовочного файла стандартной библиотеки языка Си <stdio.h>.
Функциональность ввода-вывода языка Си по текущим стандартам
реализуется на низком уровне. Язык Си абстрагирует все файловые операции,
превращая их в операции с потоками байтов, которые могут быть как «потоками
ввода», так и «потоками вывода». В отличие от некоторых ранних языков
программирования, язык Си не имеет прямой поддержки произвольного доступа к
файлам данных; чтобы считать записанную информацию в середине файла,
программисту приходится создавать поток, ищущий в середине файла, а затем
последовательно считывать байты из потока.
Потоковая модель файлового ввода-вывода была популяризирована
во многом благодаря операционной системе Unix, написанной на языке Си. Большая
функциональность современных операционных систем унаследовала потоки от Unix, а
многие языки семейства языков программирования Си унаследовали интерфейс
файлового ввода-вывода языка Си с небольшими отличиями (например, PHP).
Стандартная библиотека C++ отражает потоковую концепцию в своем синтаксисе
(iostream).
1.2 Описание алгоритма
Алгоритм работы с программой включает следующую
последовательность действий:
ввод данных с клавиатуры или загрузка из текстового файла;
получение статистической информации;
сохранение статистической информации.
Рисунок 1.1 - Обобщенный алгоритм работы программы
2. Разработка рабочего проекта
2.1 Описание логической структуры
Программа состоит из следующих процедур:
процедура - обработчик события однократного щелчка мышью по
компоненту FileListBox1:
void __fastcall TForm1: FileListBox1Click
(TObject *Sender);
- процедура - обработчик события при закрытии формы:
void __fastcall TForm1: FormClose (TObject
*Sender, TCloseAction &Action);
- процедура - обработчик события при создании формы:
void __fastcall TForm1: FormCreate
(TObject *Sender);
- процедура - обработчик события при однократном щелчке по кнопке
«Сохранить как…»:
void __fastcall TForm1: Button2Click
(TObject *Sender);
- процедура - обработчик события при однократном щелчке по кнопке
«Получить статистические данные»:
void __fastcall TForm1: Button1Click
(TObject *Sender).
2.2 Входные данные
Входными данными программы является текстовая информация.
Рисунок 2.1 - Входные данные для обработки
2.3 Выходные данные
Выходными данными являются статистические данные об информации.
Рисунок 2.2 - Результат получения статистической информации
Рисунок 2.3 - Окно сохранения результатов работы
2.4 Вызов и загрузка программы
Программа может быть загружена путем запуска EXE-файла из Windows.
После запуска программы перед пользователем появляется окно
приложения. Пользователю необходимо ввести все исходные данные и получить
результат.
3. Тестирование программы
++ Builder - среда быстрой разработки (RAD), выпускаемая компанией
CodeGear, дочерней фирмой компании Embarcadero (ранее Borland). Предназначена
для написания программ на языке программирования C++. C++ Builder объединяет
Библиотеку визуальных компонентов и среду программирования (IDE), написанную на
Delphi с компилятором C++. Цикл разработки аналогичен Delphi, но с
существенными улучшениями, добавленными в C++ Builder. Большинство компонентов,
разработанных в Delphi, можно использовать и в C++ Builder без модификации, но,
к сожалению, обратное утверждение не верно.++ Builder содержит инструменты,
которые позволяют осуществлять настоящую визуальную разработку
Windows-приложений методом drag-and-drop, упрощая программирование благодаря
WYSIWYG редактору интерфейса, встроенному в его среду разработки.
C++ Builder представляет собой SDI-приложение, главное окно
которого содержит настраиваемую инструментальную панель (слева) и палитру
компонентов (справа). Помимо этого, по умолчанию при запуске C++ Builder появляются окно
инспектора объектов (слева) и форма нового приложения (справа). Под окном формы
приложения находится окно редактора кода.
Формы являются основой приложений C++ Builder. Создание пользовательского
интерфейса приложения заключается в добавлении в окно формы элементов объектов
C++ Builder, называемых компонентами. Компоненты C++ Builder располагаются на
палитре компонентов, выполненной в виде многостраничного блокнота. Важная
особенность C++ Builder состоит в том, что он позволяет создавать собственные
компоненты и настраивать палитру компонентов, а также создавать различные
версии палитры компонентов для разных проектов.
Компоненты
C++ Builder разделяются на видимые (визуальные) и невидимые (невизуальные).
Визуальные компоненты появляются во время выполнения точно так же, как и во
время проектирования. Примерами являются кнопки и редактируемые поля.
Невизуальные компоненты появляются во время проектирования как пиктограммы на
форме. Они никогда не видны во время выполнения, но обладают определенной
функциональностью (например, обеспечивают доступ к данным, вызывают стандартные
диалоги Windows и др.)
Каждый компонент C++ Builder имеет три разновидности
характеристик: свойства, события и методы.
Свойства являются атрибутами компонента, определяющими его
внешний вид и поведение. Многие свойства компонента в колонке свойств имеют
значение, устанавливаемое по умолчанию (например, высота кнопок). Свойства
компонента отображаются на странице свойств (Properties). Инспектор объектов
отображает опубликованные (published) свойства компонентов. Помимо
published-свойств, компоненты могут и чаще всего имеют общие (public),
опубликованные свойства, которые доступны только во время выполнения
приложения.
Страница событий (Events) инспектора объектов показывает
список событий, распознаваемых компонентом (программирование для операционных
систем с графическим пользовательским интерфейсом предполагает описание реакции
приложения на те или иные события, а сама операционная система занимается
постоянным опросом компьютера с целью выявления наступления какого-либо
события). Каждый компонент имеет свой собственный набор обработчиков событий.
Метод является функцией, которая связана с компонентом, и
которая объявляется как часть объекта.
4. Внедрение
4.1 Условия выполнения программы
Программа может быть загружена путем запуска EXE-файла из
Windows. Пользователю необходимо ввести текстовую информацию или загрузить ее
из файла.
4.2 Сообщения оператору
После запуска программы перед пользователем появляется окно
программы (рисунок 4.1).
Рисунок 4.1 - Окно программы
Все окно программы разделено на две функциональные части:
«Файл 1» - для открытия текстового файла;
Для получения статистической информации о содержимом файла
неоходимо щелкнуть по кнопке «Получить статистические данные».
Рисунок 4.2 - Результат работы программы
Заключение
В данной курсовой работе был рассмотрен процесс создания
компьютерной программы на языке С++. В результате выполнения задания была
создана рабочая программа, были приобретены навыки создания алгоритмов, изучены
основы алгоритмизации и основы языка С++, приобретены навыки работы с
различными типами данных, освоена специфика работы в среде программирования.
Список источников
1
Джерод Холлингворс, Дэн Баттерфилд, Боб Свот C++ Builder 5. Руководство
разработчика = C++ Builder 5 Developer's Guide. - М.: «Диалектика», 2001.
Прата
Стивен. Язык программирования С. Лекции и упражнения, 5-е издание.: Пер. с
англ. - М.: Издательский дом «Вильямс», 2006. - 960 с.: с ил. - Парал. Тит.
Англ.
Аксёнкин
М.А., Целобёнок О.Н. Язык С. - Мн.: Унiверсiтэцкае, 1995. - 302 с.
Громов
Ю.Ю., Татаренко С.И. Программирование на языке СИ: Учебное пособие. - Тамбов,
1995. - 169 с.
Мартынов
Н.Н. Программирование для Windows на C/C++. - М.: Издательство «БИНОМ», т. 1,
2004; т. 2, 2005
Приложение
Текст программы
// -
#include <vcl.h>
#include <stdio.h>
#include <io.h>
#pragma hdrstop
#include «Unit1.h»
// -
#pragma package (smart_init)
#pragma resource «*.dfm»*Form1;* F1=0;* F2=0;*
path1, *path2;
// -
__fastcall TForm1:TForm1 (TComponent* Owner)
: TForm(Owner)
{}
// -
// Открытие файла__fastcall TForm1: FileListBox1Click (TObject
*Sender)
{->Clear();((F1=fopen
(FileListBox1->FileName.c_str(), «r»))==0)
{->Caption= «Îøèáêà ïðè îòêðûòèè ôàéëà»;
}
{->Caption=FileListBox1->FileName;(F1,0,
SEEK_SET);i=1;ch;->Lines->LoadFromFile (FileListBox1->FileName.c_str());
}(F1);
}
// -
// Получение статистических данных__fastcall TForm1: Button1Click (TObject *Sender)
{N=10;=Memo1->Text. Length();i;(i=0; i<65;
i++)->Cells[1] [i]='0';->Cells[1] [0]=IntToStr(N);(i=1; i<=N; i++)
{(Memo1->Text[i])
{'A':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [6]=IntToStr
(StrToInt(StringGrid1->Cells[1] [6])+1);
}; break;'a':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [6]=IntToStr
(StrToInt(StringGrid1->Cells[1] [6])+1);
}; break;'B':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [7]=IntToStr
(StrToInt(StringGrid1->Cells[1] [7])+1);
}; break;'b':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [7]=IntToStr
(StrToInt(StringGrid1->Cells[1] [7])+1);
}; break;'C':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [8]=IntToStr
(StrToInt(StringGrid1->Cells[1] [8])+1);
}; break;'c':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [8]=IntToStr
(StrToInt(StringGrid1->Cells[1] [8])+1);
}; break;'D':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [9]=IntToStr
(StrToInt(StringGrid1->Cells[1] [9])+1);
}; break;'d':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [9]=IntToStr
(StrToInt(StringGrid1->Cells[1] [9])+1);
}; break;'E':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [10]=IntToStr
(StrToInt(StringGrid1->Cells[1] [10])+1);
}; break;'e':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [10]=IntToStr
(StrToInt(StringGrid1->Cells[1] [10])+1);
}; break;'F':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [11]=IntToStr (StrToInt(StringGrid1->Cells[1]
[11])+1);
}; break;'f':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [11]=IntToStr
(StrToInt(StringGrid1->Cells[1] [11])+1);
}; break;'G':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [12]=IntToStr
(StrToInt(StringGrid1->Cells[1] [12])+1);
}; break;'g':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [12]=IntToStr
(StrToInt(StringGrid1->Cells[1] [12])+1);
}; break;'H':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [13]=IntToStr
(StrToInt(StringGrid1->Cells[1] [13])+1);
}; break;'h':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [13]=IntToStr
(StrToInt(StringGrid1->Cells[1] [13])+1);
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [14]=IntToStr
(StrToInt(StringGrid1->Cells[1] [14])+1);
}; break;'i':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [14]=IntToStr (StrToInt(StringGrid1->Cells[1]
[14])+1);
}; break;'J':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [15]=IntToStr
(StrToInt(StringGrid1->Cells[1] [15])+1);
}; break;'j':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [15]=IntToStr
(StrToInt(StringGrid1->Cells[1] [15])+1);
}; break;'K':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [16]=IntToStr
(StrToInt(StringGrid1->Cells[1] [16])+1);
}; break;'k':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [16]=IntToStr
(StrToInt(StringGrid1->Cells[1] [16])+1);
}; break;'L':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [17]=IntToStr
(StrToInt(StringGrid1->Cells[1] [17])+1);
}; break;'l':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [17]=IntToStr
(StrToInt(StringGrid1->Cells[1] [17])+1);
}; break;'M':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [18]=IntToStr (StrToInt(StringGrid1->Cells[1]
[18])+1);
}; break;'m':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [18]=IntToStr
(StrToInt(StringGrid1->Cells[1] [18])+1);
}; break;'N':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [19]=IntToStr
(StrToInt(StringGrid1->Cells[1] [19])+1);
}; break;'n':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [19]=IntToStr
(StrToInt(StringGrid1->Cells[1] [19])+1);
}; break;'O':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [20]=IntToStr
(StrToInt(StringGrid1->Cells[1] [20])+1);
}; break;'o':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [20]=IntToStr
(StrToInt(StringGrid1->Cells[1] [20])+1);
}; break;'P':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [21]=IntToStr
(StrToInt(StringGrid1->Cells[1] [21])+1);
}; break;'p':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [21]=IntToStr
(StrToInt(StringGrid1->Cells[1] [21])+1);
}; break;'Q':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [22]=IntToStr
(StrToInt(StringGrid1->Cells[1] [22])+1);
}; break;'q':
{->Cells[1] [2]=IntToStr (StrToInt(StringGrid1->Cells[1]
[2])+1);->Cells[1] [22]=IntToStr (StrToInt(StringGrid1->Cells[1]
[22])+1);
}; break;'R':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [23]=IntToStr
(StrToInt(StringGrid1->Cells[1] [23])+1);
}; break;'r':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [23]=IntToStr
(StrToInt(StringGrid1->Cells[1] [23])+1);
}; break;'S':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [24]=IntToStr
(StrToInt(StringGrid1->Cells[1] [24])+1);
}; break;'s':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [24]=IntToStr
(StrToInt(StringGrid1->Cells[1] [24])+1);
}; break;'T':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [25]=IntToStr
(StrToInt(StringGrid1->Cells[1] [25])+1);
}; break;'t':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [25]=IntToStr
(StrToInt(StringGrid1->Cells[1] [25])+1);
}; break;'U':
{->Cells[1] [1]=IntToStr (StrToInt(StringGrid1->Cells[1]
[1])+1);->Cells[1] [26]=IntToStr (StrToInt(StringGrid1->Cells[1]
[26])+1);
}; break;'u':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [26]=IntToStr
(StrToInt(StringGrid1->Cells[1] [26])+1);
}; break;'V':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [27]=IntToStr
(StrToInt(StringGrid1->Cells[1] [27])+1);
}; break;'v':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [27]=IntToStr
(StrToInt(StringGrid1->Cells[1] [27])+1);
}; break;'W':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [28]=IntToStr
(StrToInt(StringGrid1->Cells[1] [28])+1);
}; break;'w':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [28]=IntToStr
(StrToInt(StringGrid1->Cells[1] [28])+1);
}; break;'X':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [29]=IntToStr
(StrToInt(StringGrid1->Cells[1] [29])+1);
}; break;'x':
{->Cells[1] [2]=IntToStr (StrToInt(StringGrid1->Cells[1]
[2])+1);->Cells[1] [29]=IntToStr (StrToInt(StringGrid1->Cells[1]
[29])+1);
}; break;'Y':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [30]=IntToStr
(StrToInt(StringGrid1->Cells[1] [30])+1);
}; break;'y':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [30]=IntToStr
(StrToInt(StringGrid1->Cells[1] [30])+1);
}; break;'Z':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [31]=IntToStr
(StrToInt(StringGrid1->Cells[1] [31])+1);
}; break;'z':
}; break;'À':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [32]=IntToStr
(StrToInt(StringGrid1->Cells[1] [32])+1);
}; break;'à':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [32]=IntToStr
(StrToInt(StringGrid1->Cells[1] [32])+1);
}; break;'Á':
{->Cells[1] [2]=IntToStr (StrToInt(StringGrid1->Cells[1]
[2])+1);->Cells[1] [33]=IntToStr (StrToInt(StringGrid1->Cells[1]
[33])+1);
}; break;'á':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [33]=IntToStr
(StrToInt(StringGrid1->Cells[1] [33])+1);
}; break;'Â':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [34]=IntToStr
(StrToInt(StringGrid1->Cells[1] [34])+1);
}; break;'â':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [34]=IntToStr
(StrToInt(StringGrid1->Cells[1] [34])+1);
}; break;'Ã':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [35]=IntToStr
(StrToInt(StringGrid1->Cells[1] [35])+1);
}; break;'ã':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [35]=IntToStr
(StrToInt(StringGrid1->Cells[1] [35])+1);
}; break;'Ä':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [36]=IntToStr
(StrToInt(StringGrid1->Cells[1] [36])+1);
}; break;'ä':
{->Cells[1] [2]=IntToStr (StrToInt(StringGrid1->Cells[1]
[2])+1);->Cells[1] [36]=IntToStr (StrToInt(StringGrid1->Cells[1]
[36])+1);
}; break;'Å':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [37]=IntToStr
(StrToInt(StringGrid1->Cells[1] [37])+1);
}; break;'å':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [37]=IntToStr
(StrToInt(StringGrid1->Cells[1] [37])+1);
}; break;'¨':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [38]=IntToStr
(StrToInt(StringGrid1->Cells[1] [38])+1);
}; break;'¸':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [38]=IntToStr
(StrToInt(StringGrid1->Cells[1] [38])+1);
}; break;'Æ':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [39]=IntToStr
(StrToInt(StringGrid1->Cells[1] [39])+1);
}; break;'æ':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [39]=IntToStr
(StrToInt(StringGrid1->Cells[1] [39])+1);
}; break;'Ç':
{->Cells[1] [2]=IntToStr (StrToInt(StringGrid1->Cells[1]
[2])+1);->Cells[1] [40]=IntToStr (StrToInt(StringGrid1->Cells[1]
[40])+1);
}; break;'ç':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [40]=IntToStr
(StrToInt(StringGrid1->Cells[1] [40])+1);
}; break;'È':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [41]=IntToStr
(StrToInt(StringGrid1->Cells[1] [41])+1);
}; break;'è':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [41]=IntToStr
(StrToInt(StringGrid1->Cells[1] [41])+1);
}; break;'É':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [42]=IntToStr
(StrToInt(StringGrid1->Cells[1] [42])+1);
}; break;'é':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [42]=IntToStr
(StrToInt(StringGrid1->Cells[1] [42])+1);
}; break;'Ê':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [43]=IntToStr
(StrToInt(StringGrid1->Cells[1] [43])+1);
}; break;'ê':
{->Cells[1] [2]=IntToStr (StrToInt(StringGrid1->Cells[1]
[2])+1);->Cells[1] [43]=IntToStr (StrToInt(StringGrid1->Cells[1]
[43])+1);
}; break;'Ë':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [44]=IntToStr
(StrToInt(StringGrid1->Cells[1] [44])+1);
}; break;'ë':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [44]=IntToStr
(StrToInt(StringGrid1->Cells[1] [44])+1);
}; break;'Ì':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [45]=IntToStr
(StrToInt(StringGrid1->Cells[1] [45])+1);
}; break;'ì':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [45]=IntToStr
(StrToInt(StringGrid1->Cells[1] [45])+1);
}; break;'Í':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [46]=IntToStr
(StrToInt(StringGrid1->Cells[1] [46])+1);
}; break;'í':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [46]=IntToStr
(StrToInt(StringGrid1->Cells[1] [46])+1);
}; break;'Î':
{->Cells[1] [1]=IntToStr (StrToInt(StringGrid1->Cells[1]
[1])+1);->Cells[1] [47]=IntToStr (StrToInt(StringGrid1->Cells[1]
[47])+1);
}; break;'î':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [47]=IntToStr
(StrToInt(StringGrid1->Cells[1] [47])+1);
}; break;'Ï':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [48]=IntToStr
(StrToInt(StringGrid1->Cells[1] [48])+1);
}; break;'ï':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [48]=IntToStr
(StrToInt(StringGrid1->Cells[1] [48])+1);
}; break;'Ð':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [49]=IntToStr
(StrToInt(StringGrid1->Cells[1] [49])+1);
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [49]=IntToStr
(StrToInt(StringGrid1->Cells[1] [49])+1);
}; break;'Ñ':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [50]=IntToStr
(StrToInt(StringGrid1->Cells[1] [50])+1);
}; break;'ñ':
{->Cells[1] [2]=IntToStr (StrToInt(StringGrid1->Cells[1]
[2])+1);->Cells[1] [50]=IntToStr (StrToInt(StringGrid1->Cells[1]
[50])+1);
}; break;'Ò':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [51]=IntToStr
(StrToInt(StringGrid1->Cells[1] [51])+1);
}; break;'ò':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [51]=IntToStr
(StrToInt(StringGrid1->Cells[1] [51])+1);
}; break;'Ó':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [52]=IntToStr
(StrToInt(StringGrid1->Cells[1] [52])+1);
}; break;'ó':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [52]=IntToStr
(StrToInt(StringGrid1->Cells[1] [52])+1);
}; break;'Ô':
{->Cells[1] [2]=IntToStr (StrToInt(StringGrid1->Cells[1]
[2])+1);->Cells[1] [53]=IntToStr (StrToInt(StringGrid1->Cells[1]
[53])+1);
}; break;'ô':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [53]=IntToStr
(StrToInt(StringGrid1->Cells[1] [53])+1);
}; break;'Õ':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [54]=IntToStr
(StrToInt(StringGrid1->Cells[1] [54])+1);
}; break;'õ':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [54]=IntToStr
(StrToInt(StringGrid1->Cells[1] [54])+1);
}; break;'Ö':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [55]=IntToStr
(StrToInt(StringGrid1->Cells[1] [55])+1);
}; break;'ö':
{->Cells[1] [2]=IntToStr (StrToInt(StringGrid1->Cells[1]
[2])+1);->Cells[1] [55]=IntToStr (StrToInt(StringGrid1->Cells[1]
[55])+1);
}; break;'×':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [56]=IntToStr
(StrToInt(StringGrid1->Cells[1] [56])+1);
}; break;'÷':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [56]=IntToStr
(StrToInt(StringGrid1->Cells[1] [56])+1);
}; break;'Ø':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [57]=IntToStr
(StrToInt(StringGrid1->Cells[1] [57])+1);
}; break;'ø':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [57]=IntToStr
(StrToInt(StringGrid1->Cells[1] [57])+1);
}; break;'Ù':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [58]=IntToStr
(StrToInt(StringGrid1->Cells[1] [58])+1);
}; break;'ù':
{->Cells[1] [2]=IntToStr
(StrToInt(StringGrid1->Cells[1] [2])+1);->Cells[1] [58]=IntToStr
(StrToInt(StringGrid1->Cells[1] [58])+1);
}; break;'ü':
{->Cells[1] [59]=IntToStr (StrToInt(StringGrid1->Cells[1]
[59])+1);
}; break;'Ü':
{->Cells[1] [59]=IntToStr
(StrToInt(StringGrid1->Cells[1] [59])+1);
}; break;'Û':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [60]=IntToStr
(StrToInt(StringGrid1->Cells[1] [60])+1);
}; break;'û':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [60]=IntToStr
(StrToInt(StringGrid1->Cells[1] [60])+1);
}; break;'ú':
{->Cells[1] [61]=IntToStr
(StrToInt(StringGrid1->Cells[1] [61])+1);
}; break;'Ú':
{->Cells[1] [61]=IntToStr
(StrToInt(StringGrid1->Cells[1] [61])+1);
}; break;'Ý':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [62]=IntToStr
(StrToInt(StringGrid1->Cells[1] [62])+1);
}; break;'ý':
{->Cells[1] [1]=IntToStr (StrToInt(StringGrid1->Cells[1]
[1])+1);->Cells[1] [62]=IntToStr (StrToInt(StringGrid1->Cells[1]
[62])+1);
}; break;'Þ':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [63]=IntToStr
(StrToInt(StringGrid1->Cells[1] [63])+1);
}; break;'þ':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [63]=IntToStr
(StrToInt(StringGrid1->Cells[1] [63])+1);
}; break;'ß':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [64]=IntToStr
(StrToInt(StringGrid1->Cells[1] [64])+1);
}; break;'ÿ':
{->Cells[1] [1]=IntToStr
(StrToInt(StringGrid1->Cells[1] [1])+1);->Cells[1] [64]=IntToStr
(StrToInt(StringGrid1->Cells[1] [64])+1);
}; break;' ':
{->Cells[1] [3]=IntToStr
(StrToInt(StringGrid1->Cells[1] [3])+1);
}; break;'.':
{->Cells[1] [4]=IntToStr
(StrToInt(StringGrid1->Cells[1] [4])+1);
}; break;', ':
{->Cells[1] [4]=IntToStr
(StrToInt(StringGrid1->Cells[1] [4])+1);
}; break;';':
{->Cells[1] [4]=IntToStr
(StrToInt(StringGrid1->Cells[1] [4])+1);
}; break;: StringGrid1->Cells[1] [5]=IntToStr
(StrToInt(StringGrid1->Cells[1] [5])+1);
}(i=5; i<65; i++)
{(StrToInt (StringGrid1->Cells[1] [i])!=0)
{((StrToInt (StringGrid1->Cells[1]
[i])/N)<=0.05)->Cells[2] [i]=» -»;((100*StrToInt
(StringGrid1->Cells[1] [i])/N)>5)->Cells[2] [i]=
"**»;((100*StrToInt (StringGrid1->Cells[1] [i])/N)>=10)->Cells[2]
[i]= "****»;((100*StrToInt (StringGrid1->Cells[1]
[i])/N)>=20)->Cells[2] [i]= "******»;((100*StrToInt
(StringGrid1->Cells[1] [i])/N)>=30)->Cells[2] [i]=
"********»;((100*StrToInt (StringGrid1->Cells[1]
[i])/N)>=40)->Cells[2] [i]= "**********»;((100*StrToInt
(StringGrid1->Cells[1] [i])/N)>=50)->Cells[2] [i]=
"************»;((100*StrToInt (StringGrid1->Cells[1]
[i])/N)>=60)->Cells[2] [i]= "**************»;((100*StrToInt
(StringGrid1->Cells[1] [i])/N)>=70)->Cells[2] [i]=
"****************»;((100*StrToInt (StringGrid1->Cells[1]
[i])/N)>=80)->Cells[2] [i]= "******************»;((100*StrToInt
(StringGrid1->Cells[1] [i])/N)>=90)->Cells[2] [i]= "********************»;
}
}
}
// -__fastcall TForm1: FormClose (TObject
*Sender, TCloseAction &Action)
{(F1);
fclose(F2);
}
// -
// Настройка параметров компонентов
void __fastcall TForm1: FormCreate (TObject
*Sender)
{->ColCount=3;->RowCount=65;->ColWidths[0]=320;->ColWidths[1]=60;->ColWidths[2]=200;->Cells[0]
[0]= «Общее количество гласных в файле»;1->Cells[0] [1]= «Количество
гласных»;
StringGrid1->Cells[0] [2]= «Количество согласных»;
StringGrid1->Cells[0] [3]= «Количество пробелов»;
StringGrid1->Cells[0] [4]= «Количество знаков препинания»;->Cells[0]
[5]= «Количество прочих символов»;
StringGrid1->Cells[0] [6]= «Количество букв A, à (лат.)»;
StringGrid1->Cells[0] [7]=» Количество букв B, b (лат.)»;->Cells[0]
[8]=» Количество букв C, c (лат.)»;->Cells[0] [9]=» Количество букв D, d
(лат.)»;->Cells[0] [10]=» Количество букв E, e (лат.)»;->Cells[0] [11]=»
Количество букв F, f (лат.)»;->Cells[0] [12]=» Количество букв G, g
(лат.)»;->Cells[0] [13]=» Количество букв H, h (лат.)»;
StringGrid1->Cells[0] [14]=» Количество букв I, i (лат.)»;->Cells[0]
[15]=» Количество букв J, j (лат.)»;->Cells[0]
[16]=» Количество букв K, k (лат.)»;1->Cells[0] [17]=» Количество
букв L,
l (лат.)»;
StringGrid1->Cells[0] [18]=» Количество букв M, m (ëàò.)»;
StringGrid1->Cells[0] [19]=» Количество букв N, n (лат.)»;
StringGrid1->Cells[0] [20]=» Количество букв O, o (лат.)»;
StringGrid1->Cells[0] [21]=» Количество букв P, p (лат.)»;
StringGrid1->Cells[0] [22]=» Количество букв Q, q (лат.)»;
StringGrid1->Cells[0] [23]=» Количество букв R, r (лат.)»;
StringGrid1->Cells[0] [24]=» Количество букв S, s (лат.)»;->Cells[0]
[25]=» Количество букв T, t (лат.)»;->Cells[0]
[26]=» Количество букв U, u (лат.)»;1->Cells[0] [27]=» Количество
букв V,
v (лат.)»;
StringGrid1->Cells[0] [28]=» Количество букв W, w (лат.)»;
StringGrid1->Cells[0] [29]=» Количество букв X, x (лат.)»;
StringGrid1->Cells[0] [30]=» Количество букв Y, y (лат.)»;
StringGrid1->Cells[0] [31]=» Количество букв Z, z (лат.)»;
StringGrid1->Cells[0] [32]=» Количество букв À, à (кирил.)»;
StringGrid1->Cells[0] [33]=» Количество букв Á, á (кирил.)»;
StringGrid1->Cells[0] [34]=» Количество букв Â, â (кирил.)»;
StringGrid1->Cells[0] [35]=» Количество букв Ã, ã (кирил.)»;
StringGrid1->Cells[0] [36]=» Количество букв Ä, ä (кирил.)»;
StringGrid1->Cells[0] [37]=» Количество букв Å, å (кирил.)»;
StringGrid1->Cells[0] [38]=» Количество букв ¨,¸ (кирил.)»;
StringGrid1->Cells[0] [39]=» Количество букв Æ, æ (кирил.)»;
StringGrid1->Cells[0] [40]=» Количество букв Ç, ç (кирил.)»;
StringGrid1->Cells[0] [41]=» Количество букв È, è (кирил.)»;
StringGrid1->Cells[0] [42]=» Количество букв É, é (кирил.)»;
StringGrid1->Cells[0] [43]=» Количество букв Ê, ê (кирил.)»;
StringGrid1->Cells[0] [44]=» Количество букв Ë, ë (кирил.)»;
StringGrid1->Cells[0] [45]=» Количество букв Ì, ì (кирил.)»;
StringGrid1->Cells[0] [46]=» Количество букв Í, í (кирил.)»;
StringGrid1->Cells[0] [47]=» Количество букв Î, î (кирил.)»;
StringGrid1->Cells[0] [48]=» Количество букв Ï, ï (кирил.)»;
StringGrid1->Cells[0] [49]=» Количество букв Ð, ð (кирил.)»;
StringGrid1->Cells[0] [50]=» Количество букв Ñ, ñ (кирил.)»;
StringGrid1->Cells[0] [51]=» Количество букв Ò, ò (кирил.)»;
StringGrid1->Cells[0] [52]=» Количество букв Ó, ó (кирил.)»;
StringGrid1->Cells[0] [53]=» Количество букв Ô, ô (кирил.)»;
StringGrid1->Cells[0] [54]=» Количество букв Õ, õ (кирил.)»;
StringGrid1->Cells[0] [55]=» Количество букв Ö, ö (кирил.)»;
StringGrid1->Cells[0] [56]=» Количество букв ×,÷ (кирил.)»;
StringGrid1->Cells[0] [57]=» Количество букв Ø, ø (кирил.)»;
StringGrid1->Cells[0] [58]=» Количество букв Ù, ù (кирил.)»;
StringGrid1->Cells[0] [59]=» Количество букв Ü, ü (кирил.)»;
StringGrid1->Cells[0] [60]=» Количество букв Û, û (кирил.)»;
StringGrid1->Cells[0] [61]=» Количество букв Ú, ú (кирил.)»;
StringGrid1->Cells[0] [62]=» Количество букв Ý, ý (кирил.)»;
StringGrid1->Cells[0] [63]=» Количество букв Þ, þ (кирил.)»;
StringGrid1->Cells[0] [64]=» Количество букв ß, ÿ (кирил.)»;
int i;(i=0; i<65; i++)1->Cells[1] [i]='0';
}
// -
// Сохранение статистических данных в файле
void __fastcall TForm1: Button2Click (TObject
*Sender)
{i;(SaveDialog1->Execute())
{(StringGrid1->Cells[0] [i].c_str(), F2);(«»,
F2);(StringGrid1->Cells[1] [i].c_str(), F2);(«\n», F2);
}
}(F2);
}
// -