Программирование на языках высокого уровня

Краткое описание и исследование программы и оценка ее функциональности, сфера практического использования. Описание главных функций разрабатываемого программного продукта, блок-схема и алгоритм его работы. Анализ кода программы и оценка псевдокодов.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.