В символьной строке оставить только те слова, в которых есть повторяющиеся буквы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Не могли бы вы помочь мне в решении задачи? Я уже третий день работаю,но не получается,за каникулы почти все забыл Уже все обгуглил... Задание: В символьной строке оставить только те слова, в которых есть повторяющиеся буквы. (Не использовать дефолтные функции работы со строками (например strstr, strlen). ) Вот код который наработал за сегодня:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define VOWELS "AaEeIiOoUu"
#define DELIM " "
 
int main(void) {
    int i=0,y=0,z=0,t=0,q=0,N=0,p=0;
char buf[BUFSIZ], * ptr;
char fan[10], * finish;
printf("Enter_string: ");
while ( fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
    for (i=0;i<buf[i]!='\0';i++) {
    if (buf[i]!=' ') {
    y++;
    fan[z]=buf[i];
    z++;
    N=i;
    }
    }
}
 
//printf("%c",fan[z]);
for (z=0;z<9;z++) {
printf("%c\n",fan[z]);
}
 
printf("\n\n%d\n\n\n",y);
 
for (t=0;t<N;t++) {
    for (q=0;q<N;q++) {
if (fan[t]==fan[q]){p++;
if (p>1){
printf("%c",fan[t]);
}
}
    }
}
printf("\n\n... Press any key ...");
getch();
return 0;
}
Там правда много лишнего,я там уже запутался Спасибо!

Решение задачи: «В символьной строке оставить только те слова, в которых есть повторяющиеся буквы»

textual
Листинг программы
#include <stdio.h>
 
char * mystrchr(const char * s, const char c) {
    return ( *s == '\0' ) ? NULL : ( *s == c ) ? (char*)s : mystrchr(s + 1, c);
}
 
int have_dbl(const char * s) {
    return ( *s == '\0' ) ? 0 : mystrchr(s + 1, *s) ? 1 : have_dbl(s + 1);
}
 
#define DELIM " \t\n"
 
 
int main(void) {
    char buf[BUFSIZ];
    int len, pos, inword;
 
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
        printf("Result: ");
 
        for ( len = 0; buf[len]; ++len )
            ;
        for ( pos = 0; pos < len; ++pos )
            if ( mystrchr(DELIM, buf[pos]) )
                buf[pos] = '\0';
        for ( inword = 0, pos = 0; pos < len; ++pos ) {
            if ( buf[pos] == '\0' )
                inword = 0;
            else if ( ! inword ) {
                inword = 1;
                if ( have_dbl(buf + pos) )
                    printf("%s ", buf + pos);
            }
        }
        printf("\n");
    }
 
    return 0;
}

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


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

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

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