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

тюмгу / Lab1 (1)

.cpp
Скачиваний:
0
Добавлен:
08.12.2019
Размер:
5.86 Кб
Скачать
яю#include "stdafx.h"

#include <atlstr.h>

#include <iostream>

#include <string>

#include <cstdio>

#include <tuple>

#include <stdio.h>

#include <string.h>



using namespace std;



bool IsPalindrom(char str[]) {

	int length = strlen(str);

	for (int i = 0; i < length / 2; i++) {

		if (str[i] != str[length - 1 - i]) {

			return false;

		}

	}

	return true;

}



char *substr(const char *baseStr, size_t startPos, size_t len)

{

	char *result = (char *)malloc(len + 1);

	strncpy(result, baseStr + startPos, len);

	result[len] = '\0';

	return result;

}





char *FindPalindromLength(char str[]) {

	char *findStr{ substr(str, 0, 1) };

	bool isPalindrom = false;

	int length = strlen(str);

	int k = length;

	for (int i = 0; i < length - 1 && !isPalindrom; i++) {

		if (i + k > length) {

			k--;

			i = 0;

		}

		//strncpy(str, )

		findStr = { substr(str, i, i + k) };

		//strncpy(findStr, str + i, k);

		isPalindrom = IsPalindrom(findStr);

	}

	if (!isPalindrom) {

		findStr = { substr(str, 0, 1) };

	}

	return findStr;

	//char * arr = strtok(str, " !.,?-");

	//while (arr != NULL)

	//{

	//	char *findStr{ substr(str, 0, 1) };

	//	bool isPalindrom = false;

	//	int length = strlen(str);

	//	int k = length;

	//	for (int i = 0; i < length - 1 && !isPalindrom; i++) {

	//		if (i + k > length) {

	//			k--;

	//			i = 0;

	//		}

	//		//strncpy(str, )

	//		//findStr = { substr(str, i, i + k) };

	//		strncpy(findStr, str + i, k);

	//		isPalindrom = IsPalindrom(findStr);

	//	}

	//	arr = strtok(NULL, " !.,?-");

	//}

}



int Count(char str[], int &symbols) {

	int words = 0;

	symbols = 0;

	char * arr = strtok(str, " !.,?-");

	while (arr)

	{

		words++;

		for (int i = 0; i < strlen(arr) && arr != ""; i++) {

			if (isalpha(arr[i])) {

				symbols++;

			}

		}

		arr = strtok(NULL, " !.,?-");

	}

	//for (int i = 0; i < strlen(str); i++) {

	//	if (isalpha(str[i])) {

	//		do {

	//			symbols++;

	//			i++;

	//		} while (isalpha(str[i]));

	//		words++;

	//	}

	//}

	return words;

}



int main()

{

	//0;8=4@><>< =07K20NB ?>A;54>20B5;L=>ABL A8<2>;>2,

	//:>B>@0O G8B05BAO :0: A;520 =0?@02>, B0: 8 A?@020 =0;52>.

	//09B8 2> 2254Q==>9 AB@>:5 ?>4AB@>:C - ?0;8=4@>< <0:A8<0;L=>9 4;8=K.



	setlocale(LC_ALL, "Russian");

	const int length = 250;

	char str2[length];

	cin.getline(str2, length);



	char *palindrom2 = { FindPalindromLength(str2) };

	//char str3[250];

	if (strlen(palindrom2) > 1) {

		cout << "0:A8<0;L=K9 ?0;8=4><: " << palindrom2;

	}

	else {

		cout << "0;8=4@>< =5 =0945=!";

	}

	cout << endl << endl;



	//26) >4AG8B0BL :>;8G5AB2> A;>2 8 1C:2 2 MB8E A;>20E 2 AB@>:5.



	int words, symbols;



	//tie(words, symbols) = Count(str2);

	words = Count(str2, symbols);

	if (words) {

		cout << ">;;8G5AB2> A;>2: " << words << " 1C:2: " << symbols;

	}

	else {

		cout << "5 =0945=> A;>2";

	}

	cout << endl << endl;



	return 0;

}



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