Вывести на экран похожие фамилии из заданного списка фамилий - 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы:
    • stdio.h для работы с функциями ввода-вывода
    • string.h для работы со строками
    • ctype.h для работы с символами
  2. Определяем список фамилий в массиве K:
    • Вводим фамилии до тех пор, пока не введем фамилию, оканчивающуюся на .
    • С помощью функции scanf вводим фамилию и сохраняем ее в массиве K
    • Последнюю введенную фамилию сохраняем в массиве buf
  3. Приводим все символы фамилий к нижнему регистру:
    • Проходим по всем элементам массива buf и применяем функцию tolower к каждому символу
  4. Сравниваем фамилии между собой:
    • Проходим по всем элементам массива K
    • Для каждой фамилии проходим по всем элементам массива, начиная с текущего индекса, исключая текущий элемент
    • Если текущая фамилия содержится в предыдущей (с учетом регистра), и они не равны, и длина текущей фамилии отличается от длины предыдущей фамилии не более чем на 2 символа, выводим их на экран
  5. Завершаем программу:
    • Возвращаем 0, что означает успешное завершение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы