Блок-схема программы, Код программы - Программирование на языках высокого уровня

Код программы

/////////////////////////////////////////////////////////////////////////////////////////////

// МАИ Кафедра 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] = {''}; // Заданная в файле строка 1

Char str2 [256] = {''}; // Заданная в файле строка 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 << " Длина 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]!= ''; 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 << " В 1-ой строке заданный символ "" << symbol << "" встречается чаще:";

If (q1 < q2) cout << " Во 2-ой строке заданный символ "" << symbol << "" встречается чаще:";

If ((q1 == q2) &;&; (q1!= 0)) cout << " Заданный символ "" << symbol << "" одинаково часто встречается и в 1-ой и во 2-ой строке.";

If ((q1 == q2) &;&; (q1 == 0)) cout << " Заданный символ "" << symbol << "" в строках отсутствует.";

Cout << " В 1-ой строке заданный символ встречается" << q1 << "раз(а)." << endl;

Cout << "Во 2-ой строке заданный символ встречается" << q2 << "раз(а). " << 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] = {''}; // Массив из строк для записи слов из 1-ой строки

Char WordsMas2 [30] [30] = {''}; // Массив из строк для записи слов из 2-ой строки

/////////////////////////////////////////////////////////////////////////////////////////////

Lenstr1 = StrLenth(str1); // Подсчет символов до нулевого байта в строке

While (str1 [i] == ' ') // Поиск начала первого слова в строке

I++;

While (i < lenstr1) // Граница выполнения в рамках длины строки

{

Sword1 = i; // Индекс начала слова

While ((str1 [i]!= ' ') &;&; (str1 [i]!= '')) // Перемещение по слову

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]!= '')) // Перемещение по слову

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] = {''};

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; // Выход из цикла чтобы не повторять вывод

}

}

Похожие статьи




Блок-схема программы, Код программы - Программирование на языках высокого уровня

Предыдущая | Следующая