Вывести на экран похожие фамилии из заданного списка фамилий - C (СИ)
Формулировка задачи:
Задан список некоторых фамилий. Две фамилии назовем похо¬жими, если одна из них может быть получена из другой путем добавления какой-либо буквы в начало или конец фамилии. Напишите про¬грамму, которая выберет и выведет на экран похожие фамилии из заданного списка фамилий.
Решение задачи: «Вывести на экран похожие фамилии из заданного списка фамилий»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> /*Задан список некоторых фамилий. Две фамилии назовем похо¬жими, если одна из них может быть получена из другой путем добавления какой-либо буквы в начало или конец фамилии. Напишите про¬грамму, которая выберет и выведет на экран похожие фамилии из заданного списка фамилий.*/ int _tmain(int argc, _TCHAR* argv[]) { char K[80][30],buf[80][30]; int i=0; printf("Vvodte familii, po okonchanii piwite '.'\n\n"); while (K[i-1][strlen(K[i-1])-1]!='.') { scanf("%s",K[i++]); strcpy(buf[i-1],K[i-1]); //++ } K[i-1][strlen(K[i-1])-1]='\0'; printf("\nPosle obrabotki.\n"); for(int q=0;q<80;q++)//++ for(int w=0;w<30;w++) buf[q][w]=tolower(buf[q][w]); for(int q=0;q<i;q++) for(int w=0;w<i;w++) if(strstr(buf[q],buf[w]) && strcmp(K[q],K[w])!=0 && (strlen(K[q])-strlen(K[w])<2 || strlen(K[q])-strlen(K[w])>-2)) printf("%s=%s\n",K[q],K[w]); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
stdio.h
для работы с функциями ввода-выводаstring.h
для работы со строкамиctype.h
для работы с символами
- Определяем список фамилий в массиве K:
- Вводим фамилии до тех пор, пока не введем фамилию, оканчивающуюся на
.
- С помощью функции
scanf
вводим фамилию и сохраняем ее в массиве K - Последнюю введенную фамилию сохраняем в массиве buf
- Вводим фамилии до тех пор, пока не введем фамилию, оканчивающуюся на
- Приводим все символы фамилий к нижнему регистру:
- Проходим по всем элементам массива buf и применяем функцию
tolower
к каждому символу
- Проходим по всем элементам массива buf и применяем функцию
- Сравниваем фамилии между собой:
- Проходим по всем элементам массива K
- Для каждой фамилии проходим по всем элементам массива, начиная с текущего индекса, исключая текущий элемент
- Если текущая фамилия содержится в предыдущей (с учетом регистра), и они не равны, и длина текущей фамилии отличается от длины предыдущей фамилии не более чем на 2 символа, выводим их на экран
- Завершаем программу:
- Возвращаем 0, что означает успешное завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д