Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 27.10.2022
Сообщений: 14
1

Дана строка. Найти в ней слова, которые начинаются и оканчиваются одной и той же буквой

21.03.2023, 16:03. Показов 870. Ответов 6

Author24 — интернет-сервис помощи студентам
Входные данные:
Символьная строка. Длина строки не превышает 50 символов.
Выходные данные:
Вывести из строки слова, которые начинаются и заканчиваются одной и той же буквой. Выводить в том же порядке, в котором они встречаются в исходной строке.
Sample Input:
youngcoder.ru tnt and ten fiaif ug.ru
Sample Output:
tnt fiaif ug.ru
Уже много раз переписал код, мозгов не хватает на то, как убрать лишнее, но при этом выводить то, что идет от вначале слова и до конца с повторяющимся символом
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main() {
    int start = -1, end = -1;
    char str[100];
    fgets(str,100,stdin);
    for (int i = 0; str[i] != '\n'; i++) {
        if (str[i] == ' ' && str[i + 1] != ' ') {
            start = i; break;
            if (start != -1) {
                if (str[i] == ' ' && str[i - 1] == start || str[i] != '\n' && str[i - 1] == start ) {
                    end = i + 1;
                }
            }
        }
    }
        for (int i = 0; str[i] != '\n'; i ++ ) {
            if ( i > start || i < end) 
                printf("%c", str[i]);
        }
    return 0;
}
у меня на выводе такая шляпа здесь "tnt and ten fiaif ug.ru"
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2023, 16:03
Ответы с готовыми решениями:

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой
Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.
Помогите, пожалуйста. Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной...

Дана строка. Найти в ней те слова ,которые начинаются и оканчиваются одной и той же буквой.
Дана строка. Найти в ней те слова ,которые начинаются и оканчиваются одной и той же буквой

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой
Прошу о помощи... Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той...

6
Amabile opus
109 / 65 / 25
Регистрация: 08.01.2019
Сообщений: 308
21.03.2023, 16:40 2
Должно работать корректно:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
 
int main() {
    int start = -1, end = -1;
    char str[100];
    fgets(str,100,stdin);
    char *token, *last;
    token = strtok_r(str, " ", &last);
    while (token != NULL) {
        if(token[0] == token[strlen(token) - 1]){
            printf ("%s ", token);
        }
        token = strtok_r(NULL, " ", &last);
    }
    
    return 0;
}
0
0 / 0 / 0
Регистрация: 27.10.2022
Сообщений: 14
21.03.2023, 16:57  [ТС] 3
Цитата Сообщение от 4eDo Посмотреть сообщение
2

#include <stdio.h>
#include <string.h>
int main() {
    int start = -1, end = -1;
    char str[100];
    fgets(str,100,stdin);
    char *token, *last;
    token = strtok_r(str, " ", &last);
    while (token != NULL) {
        if(token[0] == token[strlen(token) - 1]){
            printf ("%s ", token);
        }
        token = strtok_r(NULL, " ", &last);
    }
return 0;
}
Хотел нагло скопировать и сдать, чтобы посмотреть решения других учащихся, но Segmentation fault
0
Amabile opus
109 / 65 / 25
Регистрация: 08.01.2019
Сообщений: 308
21.03.2023, 17:13 4
Sunrise153381, Интересно. У меня под руками только https://www.onlinegdb.com/online_c_compiler , там всё проглатывает без ругани

Добавлено через 1 минуту
А, ну конечно. Си же не java, там же подчищать надо память за собой. Сумеете? =)
0
0 / 0 / 0
Регистрация: 27.10.2022
Сообщений: 14
21.03.2023, 17:29  [ТС] 5
Увы, в данном курсе , пока что, никакой работы с памятью не встречалось
0
2495 / 1096 / 489
Регистрация: 17.11.2018
Сообщений: 2,788
21.03.2023, 23:25 6
Лучший ответ Сообщение было отмечено Sunrise153381 как решение

Решение

Цитата Сообщение от Sunrise153381 Посмотреть сообщение
начинаются и оканчиваются одной и той же буквой
например:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
 
void print_words( char *str ){
    char *tail = str, *head = NULL;
    int len = 0;
 
    for( ; ; tail++ ){
        if( *tail && *tail != ' '){
            if( !head )
                head = tail;
            len++;
        }
        else if( len ){
            if( *head == *( tail - 1 ) )
                printf( "%.*s ", len, head );           
            len = 0;
            head = NULL;
        }
        if( !*tail ) break;
    }
}
 
int main(){
    char buf[BUFSIZ] = "youngcoder.ru tnt and ten fiaif ug.ru";
 
    printf( "string: %s\nresult: ", buf );
    print_words( buf );
 
    printf( "\n" );
    return 0;
}
0
1496 / 908 / 255
Регистрация: 30.06.2015
Сообщений: 4,781
Записей в блоге: 54
22.03.2023, 13:32 7
Еще вариант:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#define IN 1
#define OUT 0
char str[]="youngcoder.ru tnt and ten fiaif ug.ru";
int main(void)
{
  int state;
  char *p=str, *perv, *posl;
  state = OUT;
  while(1)
  { 
    if (*p == ' ' || !*p){
      state = OUT;
      posl=p-1;
      if(*perv==*posl){while(perv<=posl){
          putchar(*perv); ++perv;} putchar(' ');
      }
      if(!*p){break;}
    } 
    else if (state == OUT){
      state = IN; perv=p;
    }
    ++p;   
  }
}
1
22.03.2023, 13:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2023, 13:32
Помогаю со студенческими работами здесь

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой
Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой
Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой
Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой
Ребят помогите пожалуйста решить задачу Дана строка. Найти в ней те слова, которые начинаются и...

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой
Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой. Код...

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой
1. Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru