Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <locale.h>
- #include <stdlib.h>
- #include <windows.h>
- struct word{
- int count;
- char *word;
- };
- int readInputString(char* str){
- printf("%s\n", "Введите строку: ");
- gets(str);
- int str_size = 0;
- for (int i = 0; i < strlen(str); i++)
- if(str[i] == ' ')
- str_size++;
- ++str_size;
- return str_size;
- }
- void createArrayOfStrings(char* strings[], const char * str, int arrayOfStringsSize){
- int stringSize = 0;
- int j;
- for(int i = 0; i < arrayOfStringsSize; i++){
- strings[i] = malloc(0);
- strings[i][0] = ' ';
- for (j = 0; (str[stringSize] != ' ') && (str[stringSize] != '\0');){
- if(((str[stringSize] > 'A'-1) && (str[stringSize] < 'Z'+1)) || ((str[stringSize] > 'a'-1) && (str[stringSize] < 'z'+1))){
- strings[i][j] = str[stringSize];
- j++;
- }
- ++stringSize;
- }
- strings[i][j+1] = '\0';
- ++stringSize;
- }
- free(str);
- }
- int createArrayOfWords(int arrayOfStringsSize, char* strings[]){
- int size = 0;
- for(int i = 0; i < arrayOfStringsSize; i++) {
- if ((strcmp(strings[i], strings[arrayOfStringsSize-1]) != 0) && (strings[i][0] != ' '))
- size++;
- }
- return size;
- }
- void writeArrayOfWords(int arrayOfStringsSize, char* strings[], struct word *words, int *min){
- int count;
- char buf;
- int buff = 0;
- for(int i = 0; i < arrayOfStringsSize; i++) {
- count = 1;
- if ((strcmp(strings[i], strings[arrayOfStringsSize-1]) != 0) && (strings[i][0] != ' ')){
- buf = strings[i][0];
- if(strings[i][0] > 'Z') {
- strings[i][0] -= 32;
- }
- for(int j = 1; j < strlen(strings[i])-1; ++j) {
- if (strings[i][j] > 'Z') {
- {
- if ((strings[i][j-1] < 'Z'+1) && (strings[i][j - 1] < (strings[i][j] - 32)))
- count++;
- if ((strings[i][j-1] > 'Z') && (strings[i][j - 1] < strings[i][j]))
- count++;
- }
- } else {
- if ((strings[i][j - 1] < 'Z'+1) && (strings[i][j - 1] < strings[i][j]))
- count++;
- if ((strings[i][j - 1] > 'Z') && ((strings[i][j - 1]-32) < strings[i][j]))
- count++;
- }
- }
- strings[i][0] = buf;
- if (count < *min)
- *min = count;
- words[buff].word = malloc(0);
- strcpy(words[buff].word, strings[i]);
- words[buff].count = count;
- buff++;
- }
- }
- }
- void printWordsAlphabetTask(int arrayOfStringsSize, char* strings[]){
- int min = 2000000000;
- int size = createArrayOfWords(arrayOfStringsSize, strings);
- struct word words[size];
- writeArrayOfWords(arrayOfStringsSize, strings, words, &min);
- puts("Задача с упорядочиванием по алфавиту:");
- if(arrayOfStringsSize == 1)
- puts("Строка состоит из одного слова! Оно и есть последнее!");
- for (int i = 0; i < size; i++) //вывели слова
- if(words[i].count == min) {
- printf("%s ", words[i].word);
- }
- printf("\n");
- }
- void printWordsReplacementTask(int arrayOfStringsSize, char* strings[]){
- char setOfConsonants[22] = "bcdfghjklmnpqrstvwxyz";
- puts("Задача с заменой букв:");
- if(arrayOfStringsSize == 1)
- puts("Строка состоит из одного слова! Оно и есть последнее!");
- for(int i = 0; i < arrayOfStringsSize; i++) {
- if (strcmp(strings[i], strings[arrayOfStringsSize-1]) != 0){
- if(strlen(strings[i]) % 2 != 0)
- for(int j = 0; j < strlen(strings[i]); ++j){
- for(int k = 0; k < 22; ++k)
- if(strings[i][j] == setOfConsonants[k]) {
- strings[i][j] -= 32;
- break;
- }
- }
- printf("%s ", strings[i]);
- }
- }
- printf("\n");
- }
- int readNum(){
- int num;
- int bool;
- char* inputLine = malloc(0);
- do{
- puts("Введите номер задачи(1 - задача с упорядочиванием по алфавиту, либо 2 - задача с заменой букв): ");
- bool = 0;
- gets(inputLine);
- num = atoi(inputLine);
- if(num == 0){
- bool = 1;
- puts("Введите число! 1 или 2.");
- }
- if (!bool && (((num < 1) || (num > 2)))){
- puts("Введите число! 1 или 2.");
- bool = 1;
- }
- } while (bool);
- return num;
- }
- int main() {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- setlocale(LC_ALL, "Rus");
- int arrayOfStringsSize;
- char* str = malloc(0);
- arrayOfStringsSize = readInputString(str);
- char* strings[arrayOfStringsSize];
- createArrayOfStrings(strings, str, arrayOfStringsSize);
- printWordsAlphabetTask(arrayOfStringsSize, strings);
- printWordsReplacementTask(arrayOfStringsSize, strings);
- free(strings);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement