Программирование на языках высокого уровня
Краткое описание и исследование программы и оценка ее функциональности, сфера практического использования. Описание главных функций разрабатываемого программного продукта, блок-схема и алгоритм его работы. Анализ кода программы и оценка псевдокодов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 28.12.2015 |
Размер файла | 98,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Программирование на языках высокого уровня
1. Краткое описание программы
Программа считывает исходные данные из файла Input.txt, располагающегося в корневой папке программы. Исходные данные вида:
<Символ, кол-во повторений которого надо подсчитать в строках и сравнить где больше>
<Первая строка>
<Вторая строка>
Программа проверяет наличие файла Input.txt и наличие исходных данных в нем. Если на данном этапе обнаружены ошибки, программа выводит соответствующее сообщение на экран. Иначе программа выполняет поиск слов, которые встречаются и в первой и во второй строке, и единожды выводит их на экран. Далее программа подсчитывает количество символов в строках, которые совпадают с символом из исходных данных, сравнив значения, программа выводит сообщение о том, в какой строке заданный символ встречается чаще.
2. Описание функций
§ int StrLenth (char* str) - функция вычисления длины строки до нулевого байта.
Псевдокод:
Цикл по i от 0 до тех пор пока str[i] не равняется нулевому байту
Инкремент счетчика lenth;
Возвращение значения lenth;
§ void StrSymbolMatch (char* str1, char* str2, char symbol) - функция вычисления количества совпадений заданного символа в строке и вывода сообщения на экран.
Псевдокод:
Вычисление длины строки str1 функцией StrLenth;
Цикл по i от 0 до длины строки str1;
Если str1 [i] равен заданному символу symbol
Инкремент счетчика q1;
Вычисление длины строки str2 функцией StrLenth;
Цикл по i от 0 до длины строки str2;
Если str2 [i] равен заданному символу symbol
Инкремент счетчика q2;
Если q1 > q2
Вывод сообщения: В первой строке заданный символ встречается чаще;
Если q1 < q2
Вывод сообщения: Во второй строке заданный символ встречается чаще;
Если q1 = q2 и q1!= 0
Вывод сообщения: Заданный символ одинаково часто встречается в строках;
Если q1 = q2 и q1 = 0
Вывод сообщения: Заданный символ в строках отсутствует;
§ void FindMatchWordsInTwoStrings (char* str1, char* str2) - функция поиска слов, которые содержатся и в первой и во второй строках, и вывода на экран.
Псевдокод:
Вычисление длины lenstr1 строки str1 с помощью функции StrLenth;
Пока str1 [i] равен пробелу
I++;
Пока i < lenstr1
{
Индекс начала слова sword1 = i;
Пока str1 [i] не равно пробелу и нулевому байту
I++;
Индекс конца слова eword1 = i - 1;
Цикл по m от sword1 до тех пор пока m не равна eword1 + 1
{
Массив слов WordsMas1 [qwords1] [n]=str1 [m];
n++;
}
Счетчик слов qwords1++;
Пока str1 [i] равен пробелу
I++;
}
i = 0;
Вычисление длины lenstr2 строки str2 с помощью функции StrLenth;
Пока str2 [i] равен пробелу
I++;
Пока i < lenstr2
{
Индекс начала слова sword2 = i;
Пока str2 [i] не равно пробелу и нулевому байту
I++;
Индекс конца слова eword2 = i - 1;
Цикл по m от sword2 до тех пор пока m не равна eword2 + 1
{
Массив слов WordsMas2 [qwords2] [n]=str2 [m];
n++;
}
Счетчик слов qwords2++;
Пока str2 [i] равен пробелу
I++;
}
Цикл по I от 0 до qwords1
Цикл по k от (i + 1) до qwords1
Если строки WordsMas1 [i] и WordsMas1 [k] равны
Затереть строку WordsMas[k];
Цикл по I от 0 до qwords1
Цикл по k от 0 до qwords2
Если строки WordsMas1 [i] и WordsMas2 [k] равны
{
Вывод WordsMas1 [i];
Аварийный выход из цикла;
}
3. Блок-схема программы
4. Код программы
/////////////////////////////////////////////////////////////////////////////////////////////
// МАИ Кафедра 302 1 курс ИНФОРМАТИКА //
/////////////////////////////////////////////////////////////////////////////////////////////
// LANGUAGE: MS Visual Studio 2013 C++ //
// Project TYPE: Win 32 console //
// Project NAME: Lab01_String //
// *PROGRAMMERS: Жуков Александр, Алексеев Данила (7-ая бригада) //
// Comment: Заданы символ и две строки, написать программу, которая ищет одинаковые слова //
// в двух строках и определяет в какой строке заданный символ встречается чаще. //
/////////////////////////////////////////////////////////////////////////////////////////////
// Created DATE: 18/02/2015 // Last version DATE: 17/04/2015 //
/////////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const int WhiteGround = system («color F0»); // Цвет фона консоли
int StrLenth (char* str); // Функция вычисления длины строки
void StrSymbolMatch (char* str1, char* str2, char symbol); // Количество совпадений заданного символа в строке
void FindMatchWordsInTwoStrings (char* str1, char* str2); // Поиск и вывод совпавших слов в 1-ой и 2-ой строках
int main()
{
сonst string FNAME = «Input.txt»;
setlocale (LC_ALL, «RUS»); // Подключение русского языка
/////////////////////////////////// Объявление переменных /////////////////////////////////////
char symbol[2]; // Заданный в файле символ
char str1 [256] = {'\0'}; // Заданная в файле строка 1
char str2 [256] = {'\0'}; // Заданная в файле строка 2
int lenstr1 = 0; // Реальная длина 1-ой строки
int lenstr2 = 0; // Реальная длина 2-ой строки
int i; // Воспомогательная переменные
////////////////////////////////////// Чтение из файла ////////////////////////////////////////
ifstream fin; // Объявление переменной файла
fin.open(FNAME); // Открытие файла
if (! fin) // Условие наличия файла
{
cout << «Ошибка! Файл отсутсвует.» << endl;
system («pause»);
return(1);
}
if (fin.eof()) // Условие наличия элементов в файле
{
cout << «Файл пуст!» << endl;
fin.close();
system («pause»);
return(2);
}
fin.getline (symbol, 2); // Чтение символа
fin.getline (str1, 256); // Чтение 1-ой строки
fin.getline (str2, 256); // Чтение 2-ой строки
cout << «Считанный из файла символ:» << symbol <<».» << endl; // Печать символа
cout << «Считанная из файла 1-ая строка:» << str1 <<».» << endl; // Печать 1-ой строки
cout << «Считанная из файла 2-ая строка:» << str2 <<».» << endl; // Печать 2-ой строки
fin.close(); // Закрытие файла
for (i = 0; i <= 79; i++) // Разделение на экране
cout << «_»;
///////////////////////////// Вычисление реальных размеров строк //////////////////////////////
lenstr1 = StrLenth(str1); // Подсчет символов до нулевого байта в 1-ой строке
lenstr2 = StrLenth(str2); // Подсчет символов до нулевого байта во 2-ой строке
cout << «\nДлина 1-ой строки:» << lenstr1 <<», длина 2-ой строки:» << lenstr2 <<».» << endl;
////////////////////////////// Поиск одинаковых слов в строках ////////////////////////////////
cout << «Слова встречающиеся в обеих строках:» << endl;
FindMatchWordsInTwoStrings (str1, str2);
//////////////// Выявление строки в которых чаще встречается заданный символ //////////////////
StrSymbolMatch (str1, str2, *symbol);
system («pause»);
return(0);
} //End main()
int StrLenth (char* str)
{
int i, lenth = 0;
for (i = 0; str[i]!= '\0'; i++) // Подсчет символов до нулевого байта в 1-ой строке
lenth++;
return lenth;
}
void StrSymbolMatch (char* str1, char* str2, char symbol)
{
int q1 = 0; // Счетчик
int lenstr1 = StrLenth(str1); // Длина строки
int i;
for (i = 0; i < lenstr1; i++)
if (str1 [i] == symbol)
q1++;
int q2 = 0; // Счетчик
int lenstr2 = StrLenth(str2); // Длина строки
for (i = 0; i < lenstr2; i++)
if (str2 [i] == symbol)
q2++;
if (q1 > q2) cout << «\nВ 1-ой строке заданный символ \"» << symbol << «\» встречается чаще:»;
if (q1 < q2) cout << «\nВо 2-ой строке заданный символ \"» << symbol << «\» встречается чаще:»;
if ((q1 == q2) && (q1!= 0)) cout << «\nЗаданный символ \"» << symbol << «\» одинаково часто встречается и в 1-ой и во 2-ой строке.»;
if ((q1 == q2) && (q1 == 0)) cout << «\nЗаданный символ \"» << symbol << «\» в строках отсутствует.»;
cout << «\nВ 1-ой строке заданный символ встречается» << q1 << «раз(а).» << endl;
cout << «Во 2-ой строке заданный символ встречается» << q2 << «раз(а).\n» << endl;
}
void FindMatchWordsInTwoStrings (char* str1, char* str2)
{
int i = 0, k = 0, m = 0, n = 0; // Воспомогательные переменные
int qwords1 = 0; // Счетчик слов в 1-ой строке
int qwords2 = 0; // Счетчик слов во 2-ой строке
int sword1, eword1; // Индексы начала и конца слов 1-ой строки соотвественно
int sword2, eword2; // Индексы начала и конца слов 2-ой строки соотвественно
int lenstr1; // Реальная длина 1-ой строки
int lenstr2; // Реальная длина 2-ой строки
char WordsMas1 [30] [30] = {'\0'}; // Массив из строк для записи слов из 1-ой строки
char WordsMas2 [30] [30] = {'\0'}; // Массив из строк для записи слов из 2-ой строки
/////////////////////////////////////////////////////////////////////////////////////////////
lenstr1 = StrLenth(str1); // Подсчет символов до нулевого байта в строке
while (str1 [i] == ' ') // Поиск начала первого слова в строке
i++;
while (i < lenstr1) // Граница выполнения в рамках длины строки
{
sword1 = i; // Индекс начала слова
while ((str1 [i]!= ' ') && (str1 [i]!= '\0')) // Перемещение по слову
i++;
eword1 = i - 1; // Индекс конца слова
n = 0;
for (m = sword1; m!= (eword1 + 1); m++) // Запись слова в массив
{
WordsMas1 [qwords1] [n] = str1 [m];
n++;
}
qwords1++; // Инкремент счетчика слов в строке
while (str1 [i] == ' ') // Перемещение до следующего слова
i++;
}
i = 0;
lenstr2 = StrLenth(str2); // Подсчет символов до нулевого байта в строке
while (str2 [i] == ' ') // Поиск начала первого слова в строке
i++;
while (i < lenstr2) // Граница выполнения в рамках длины строки
{
sword2 = i; // Индекс начала слова
while ((str2 [i]!= ' ') && (str2 [i]!= '\0')) // Перемещение по слову
i++;
eword2 = i - 1; // Индекс конца слова
n = 0;
for (m = sword2; m!= (eword2 + 1); m++) // Запись слова в массив
{
WordsMas2 [qwords2] [n] = str2 [m];
n++;
}
qwords2++; // Инкремент счетчика слов в строке
while (str2 [i] == ' ') // Перемещение до следующего слова
i++;
}
for (i = 0; i < qwords1; i++) // Затирание одинаковых слов в 1-ой строке
for (k = i + 1; k < qwords1; k++)
if (strcmp (WordsMas1 [i], WordsMas1 [k]) == 0)
*WordsMas1 [k] = {'\0'};
for (i = 0; i < qwords1; i++) // Цикл сравнения слов 1-ой и 2-ой строк
for (k = 0; k < qwords2; k++)
if (strcmp (WordsMas1 [i], WordsMas2 [k]) == 0)
{
cout << WordsMas1 [i] << ' ';
break; // Выход из цикла чтобы не повторять вывод
}
}
Размещено на Allbest.ru
Подобные документы
Разработка программы обработки изображений, позволяющей прорисовывать типовые геометрические фигуры. Выбор аппаратных и технических средств для реализации программного продукта. Организация входных и выходных данных. Блок-схема и листинг программы.
курсовая работа [2,4 M], добавлен 18.06.2014Программирование игр с использованием визуальных компонентов. Описание операторов, используемых при практической реализации разработанной программы. Работа над созданием программы "Морской бой", постановка задачи, алгоритм реализации работы, блок-схема.
курсовая работа [175,9 K], добавлен 10.05.2010Техническое задание и блок-схема алгоритма программы построения графиков функций. Инструкция по инсталляции и описание работы программного продукта GRAPHIC. Инструкция оператору и ограничения данной версии программы. Программный код приложения.
курсовая работа [391,2 K], добавлен 05.12.2009Внешнее исследование программного продукта, анализ кода, блок-схемы алгоритма модуля. Оценка качества защиты программы средствами статического и динамического исследования. Осуществление "мягкого" и "жесткого" взлома. Пути оптимизации механизмов защиты.
курсовая работа [1,3 M], добавлен 22.05.2016Общее описание разрабатываемого программного обеспечения, требования к его функциональности и сферы практического применения. Выбор инструментальных средств разработки. Проектирование структур баз данных и алгоритмов, пользовательского интерфейса.
дипломная работа [3,1 M], добавлен 19.01.2017Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.
курсовая работа [2,7 M], добавлен 21.02.2011Характеристика программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит результаты на экран. Описание переменных в программе, ее блок-схема и алгоритм работы. Листинг программы. Описание входных данных и результат вычислений.
курсовая работа [721,4 K], добавлен 10.11.2010Обоснование выбора языка программирования. Анализ входных и выходных документов. Логическая структура базы данных. Разработка алгоритма работы программы. Написание программного кода. Тестирование программного продукта. Стоимость программного продукта.
дипломная работа [1008,9 K], добавлен 13.10.2013Сравнительный анализ наиболее распространенных языков, их классификация, описание достоинств и недостатков. Использование процедур, функции и подпрограмм в языках программирования высокого уровня. Разработка и реализация программы "Бортовой компьютер".
курсовая работа [329,8 K], добавлен 22.06.2014Программирование логических игр с помощью подходов СИИ. Методы работы с Windows Forms в языке С#, алгоритм поиска в пространстве состояний. Формализация дерева состояний. Описание использованных алгоритмов. Иерархическая схема и блок-схемы программы.
курсовая работа [1,7 M], добавлен 01.12.2015