Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <stdio.h>
- #include <windows.h>
- #include <string>
- #include <iostream>
- #include <fstream>
- using namespace std;
- int Write_int()
- {
- char arr[10];
- int value = 0;
- while(true)
- {
- scanf("%s", arr);
- value = atoi(arr)? atoi(arr) : 0;
- if(value > 0)
- break;
- else
- printf("Введите значение n > 0: ");
- }
- return value;
- }
- int strSize(char* str)
- {
- int i = 0;
- while(str[i] != '\0')
- i++;
- return i;
- }
- char** File_Read(int &Size)
- {
- char** str = NULL;
- char fileName[100];
- printf("Введите путь к файлу: ");
- scanf("%s", fileName);
- FILE* f = NULL;
- f = fopen(fileName, "r");
- if(f == NULL)
- {
- printf("Ошибка чтения файла...\nВозвращаю в главное меню.\n");
- return str;
- }
- char myString[100];
- fgets(myString, 100, f);
- Size = atoi(myString)? atoi(myString) : 0;
- if(Size > 0)
- {
- str = new char*[Size];
- printf("Загрузка данных:\n");
- for(int i = 0; i < Size; i++)
- {
- fscanf(f, "%s ", myString);
- printf("%s ", myString);
- int StringSize = strSize((char*)myString);
- str[i] = new char[StringSize + 1];
- for(int j = 0; j < StringSize; j++)
- str[i][j] = myString[j];
- str[i][StringSize] = '\0';
- }
- }
- fclose(f);
- printf("\n");
- return str;
- }
- int ShowMenu()
- {
- int val;
- while(true)
- {
- printf("---------------\n1.Загрузка из файла\n2.Обработка данных\n3.Вывод результата на экран.\n4.Выход\n---------------\nВыбор: ");
- val = Write_int();
- if(val < 5)
- {
- printf("\n");
- break;
- }
- }
- return val;
- }
- void Obrab(char**str, int Size)
- {
- //Поиск самого длинного элемента массива.
- int theLongerElement = 0;
- int indexElem = 0;
- for(int i = 0; i < Size; i++){
- int StringSize = strSize(str[i]);
- if(StringSize > theLongerElement)
- {
- theLongerElement = StringSize;
- indexElem = i;
- }
- }
- //Кол. повторен самого длинного элемента.
- int Count = 0;
- for(int i = 0; i < Size; i++)
- if(strcmp(str[i], str[indexElem]) == 0)
- Count++;
- //Вывод 1
- printf("Длинное слово - %s\nКол. повоторений - %d\n", str[indexElem], Count);
- //Сортировка по алфавиту.
- char cur[100];
- for(int i = 0; i < Size; i++)
- for(int j = i + 1; j < Size; j++)
- if(strcmp(str[i], str[j]) > 0)
- {
- strcpy(cur, str[i]);
- strcpy(str[i], str[j]);
- strcpy(str[j], cur);
- }
- //Вывод 2
- printf("Сортировка:\n");
- for(int i = 0; i < Size; i++)
- printf("%s\n", str[i]);
- printf("\n");
- }
- void Output(char** str, int Size)
- {
- printf("Вывод:\n");
- for(int i = 0; i < Size; i++)
- {
- printf("%s ", str[i]);
- }
- printf("\n");
- }
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int Size = 1;
- char** str = new char*[1];
- str[0] = new char[1];
- str[0][0] = '\0';
- bool Exit = false;
- while(!Exit)
- {
- switch(ShowMenu())
- {
- case 1:
- str = File_Read(Size);
- break;
- case 2:
- {
- Obrab(str, Size);
- break;
- }
- case 3:
- {
- Output(str, Size);
- break;
- }
- case 4:
- Exit = true;
- break;
- default:
- break;
- }
- }
- //Чистка данных
- for(int i = 0; i < Size; i++)
- delete[] str[i];
- delete[] str;
- return 0;
- }
Add Comment
Please, Sign In to add comment