Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

тюмгу / Lab1

.cpp
Скачиваний:
2
Добавлен:
08.12.2019
Размер:
2.81 Кб
Скачать
// Lab1.cpp: главный файл проекта.

#include "stdafx.h"
#include <tuple>

using namespace System;

bool IsPalindrom(String ^ str) {
	array<wchar_t> ^arr = str->ToCharArray();
	Array::Reverse(arr);
	String ^str2 = gcnew String(arr);
	return str==str2;
}

bool FindPalindrom(String ^&str) {
	bool isPalindrom = false;
	int length = str->Length;
	int k = length;
	String ^helpStr = "";
	for (int i = 0; i < length - 1 && !isPalindrom; i++) {
		if (i + k > length) {
			k--;
			i = 0;
		}
		helpStr = str->Substring(i, /*i + */k);
		isPalindrom = IsPalindrom(helpStr);
	}
	str = helpStr;
	return isPalindrom;
}

String ^FindMaxPalindrom(String ^ str) {
	String ^findStr = "";
	//array<wchar_t> ^some = { ':',';', '.', ',', '!', '?', ' ', '...', '!?' };
	//array<String^> ^arr = str->Split(some, StringSplitOptions::RemoveEmptyEntries);
	//for each (String ^item in arr) {
		//bool isPalindrom = false;
		//int length = item->Length;
		//int k = length;
		//String ^helpStr = "";
		//for (int i = 0; i < length - 1 && !isPalindrom; i++) {
		//	if (i + k > length) {
		//		k--;
		//		i = 0;
		//	}
		//	helpStr = item->Substring(i, /*i + */k);
		//	isPalindrom = IsPalindrom(helpStr);
		//}
		//if ((helpStr->Length > findStr->Length) && isPalindrom)
		//	findStr = helpStr;
	bool isPalindrom = false;
	int length = str->Length;
	int k = length;
	String ^helpStr = str;
	//for (int i = 0; i < length - 1 && !isPalindrom; i++) {
	//	if (i + k > length) {
	//		k--;
	//		i = 0;
	//	}
	//helpStr = str->Substring(i, /*i + */k);
	//	isPalindrom = IsPalindrom(helpStr);
	//}
	//if ((helpStr->Length > findStr->Length) && isPalindrom)
	//	findStr = helpStr;

	if (FindPalindrom(helpStr)/* && findStr->Length < helpStr->Length*/) {
		findStr = helpStr;
	}

	return findStr;
}

int Count(String ^ str, int &symbols) {
	int words = 0;
	symbols = 0;
	array<wchar_t> ^some = { ':',';', '.', ',', '!', '?', ' ', '...', '!?'};
	array<String^> ^arr = str->Split(some, StringSplitOptions::RemoveEmptyEntries);
	for each(String^ rr in arr) {
		for (int i = 0; i < rr->Length; i++) {
			if (Char::IsLetter(rr, i)) {
				symbols++;
			}
		}
	}
	words = arr->Length;
	return words;
}

int main(array<System::String ^> ^args)
{
	String ^ str = Console::ReadLine();
	String ^ palindrom = FindMaxPalindrom(str);
	if (palindrom->Length) {
		Console::WriteLine("Максимальный палиндом: " + palindrom);
	}
	else {
		Console::WriteLine("Палиндром не найден!");
	}
	Console::WriteLine("\n");

	int words, symbols = 0;
	words = Count(str, symbols);
	if (words) {
		Console::WriteLine( "Колличество слов: " + words + " букв: " + symbols);
	}
	else {
		Console::WriteLine("Не найдено слов");
	}
	Console::WriteLine("\n");

    return 0;
}
Соседние файлы в папке тюмгу