В символьной строке оставить только те слова, в которых есть повторяющиеся буквы - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д