RGR70

mail@pastecode.io avatar
unknown
c_cpp
3 years ago
2.1 kB
4
Indexable
#include "stdafx.h"

#define MAX_SIZE 255
#define SMB '\n'

#pragma warning(disable : 4996)

void func70(char *str);

int main(int argc, char *argv[])
{
	setlocale(LC_ALL, "");

	char str[MAX_SIZE];
	FILE *f;

	char* filename;
	if (argc == 2)
	{
		filename = argv[1];
		printf("[Этап 1]: Аргументы определены! (%s) \n", filename);
	}
	else
	{
		printf("[Этап 1]: Аргументы не были переданы, или переданы неверно! \n\n");
		return EXIT_FAILURE;
	}

	// ReSharper disable once CppDeprecatedEntity
	f = fopen(filename, "r");
	if (f != nullptr)
		printf("[Этап 2]: Файл успешно открыт! \n\n");
	else
	{
		printf("[Этап 2]: Произошла ошибка открытия файла! Проверьте правильность введенных аргументов... \n");
		return EXIT_FAILURE;
	}

	printf("[Этап 3]: Чтение файла начато! \n------------------------------\n\n");

	while (fgets(str, MAX_SIZE, f))
		func70(str);
	
	if (ferror(f))
	{
		printf("\n------------------------------\n[Этап 4]: Ошибка чтения из файла! Работа программы завершена... \n\n");
		return EXIT_FAILURE;
	}

	printf("\n------------------------------\n[Этап 4]: Чтение файла закончено! Работа программы завершена... \n\n");

	return fclose(f);
}

bool mystrcmp(const char *str1, const char *str2)
{
	for (int i = 0; str1[i] != SMB; i++)
		for (int j = 0; str2[j] != SMB; j++)
			if (str1[i] == str2[j])
				return true;

	return false;
}

void func70(char *str)
{
	int k1 = 0, k2 = 0;
	char word1[MAX_SIZE], word2[MAX_SIZE];

	for (int i = 0; str[i] != SMB; i++)
	{
		if (str[i] != ' ')
			word1[k1++] = str[i];
		else
		{
			word1[k1] = SMB;

			for (int j = i + 1; str[j] != SMB; j++)
			{
				if (str[j] != ' ')
					word2[k2++] = str[j];
				else
				{
					word2[k2] = SMB;

					if (k1 != 0 && k2 != 0 && k1 != k2 && !mystrcmp(word1, word2))
						return;

					k2 = 0;
				}
			}

			k1 = 0;
		}
	}

	printf("%s", str);
}