1 / 1 / 0
Регистрация: 12.11.2019
Сообщений: 14
1

Ввести строку, ввести слово. Вывести из строки только те слова, в которых есть хоть одна буква из введённого слова

19.11.2019, 22:54. Показов 1903. Ответов 3
Метки нет (Все метки)

Здравствуйте, товарищи программисты. Я не смогла смириться с поражением и это снова привело меня к вам.
Задание написано в заголовке. Использовать gets и string.h нельзя, а так же нас заставляют использовать getchar.
Мои жалкие потуги написать код самостоятельно можете наблюдать ниже.
Пожалуйста, помогите!
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <stdio.h>
#define size 10000
#define sizew 1000
int isLetter(char c);
int main() {
 
    char stroka[size];
    char word[sizew];
    int i = 0, b = 0, c, w;
 
    for (int l = 0; l < size; l++) {
        stroka[l] = getchar();
        if (stroka[l] == '\n') {
            break;
        }
    }
    for (int l = 0; l < sizew; l++) {
        word[l] = getchar();
        if (word[l] == '\n') {
            break;
        }
    }
    int N = 0, P = 0;
    while (stroka[P] != '\n')
    {
        if (isLetter(stroka[P])); {
            N++;
        }
        P++;
    }
    int n = 0, p = 0;
    while (word[p] != '\n')
    {
        p++;
        n++;
    }
    printf("%d\n", N);
    printf("%d", n);
    while (i < size) {
        c = stroka[i] = getchar();
        while (b < n) {
            if (isLetter(c)) {
                goto flag;
            }
            w = word[b] = getchar();
            if (c != w){
                b++;
            }
            if (c == w) {
                printf("%s ", &stroka[i]);
                break;
            }
        }
        flag:
        i++;
    }
    return 0;
}
 
 
int isLetter(char c) {
    return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2019, 22:54
Ответы с готовыми решениями:

Ввести строку и слово. Вывести количество слов в строке, имеющих длину, равную длине введенного слова.
Ввести строку и слово. Вывести количество слов в строке, имеющих длину, равную длине введенного...

Ввести строку и слово. Вывести количество слов в строке, имеющих длину, равную длине введенного слова.
Как ввести строку и слово, чтобы вывести количество слов в строке, имеющих длину, равную длине...

Дана строка. Вывести на экран слова, внутри которых имеется хотя бы одна буква, с которой слово начинается. [Turbo prolog][есть решение]
predicates ...

Напечатать те слова из введенного предложения, в которых есть хотя бы одна буква, случается в слове три и более раз
С клавиатуры ввести предложения. Напечатать те слова из введенного предложения, в которых есть хотя...

3
Модератор
2269 / 1606 / 875
Регистрация: 16.10.2013
Сообщений: 4,761
Записей в блоге: 12
20.11.2019, 06:20 2
Лучший ответ Сообщение было отмечено Юле4каС как решение

Решение

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
#define size 10000
#define sizew 1000
 
int isLetter(char c);
int isContainChar(char* w1, char* w2);
 
int main() {
    char stroka[size];  // строка
    char word[sizew];   // слово
    char buf[sizew];    // буфер для слов строки
    int k;              // счетчик для буфера
    
    printf("input string: ");
    for (int l = 0; l < size; l++) {
        stroka[l] = getchar();
        if (stroka[l] == '\n') {
            stroka[l] = '\0';
            break;
        }
    }
    
    printf("input word: ");
    for (int l = 0; l < sizew; l++) {
        word[l] = getchar();
        if (word[l] == '\n') {
            word[l] = '\0';
            break;
        }
    }
    
    k = 0;
    for(int i = 0; stroka[i] != '\0'; i++){
        if(stroka[i] != ' '){
            buf[k++] = stroka[i];
        } else{
            buf[k] = '\0';
            if(isContainChar(buf, word)){
                printf("%s\n", buf);
            }
            k = 0;
        }
    }
    
    return 0;
}
 
int isLetter(char c) {
    return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
 
int isContainChar(char* w1, char* w2){
    for(int i = 0; w1[i] != '\0'; i++){
        for(int j = 0; w2[j] != '\0'; j++){
            if((w1[i] == w2[j]) && isLetter(w2[j])) return 1;
        }
    }
    return 0;
}
Код
input string: lorem ipsum dolor sit amet                                                                                      
input word: word                                                                                                              
lorem                                                                                                                         
dolor
1
1 / 1 / 0
Регистрация: 12.11.2019
Сообщений: 14
20.11.2019, 13:01  [ТС] 3
Всё хорошо, но не работает, если ввести только два слова((

Добавлено через 23 минуты
Точнее не работает, если после нужного слова нет пробела:
(Ввожу слово wid)
"hello world" -> ""
"hello world " -> "world"
"hello world how ar u wow" -> "world how"
"hello world how ar u wow " -> "world how wow"

Добавлено через 24 минуты
Уже не надо - я придумала как решить эту проблему)
Большое спасибо, что практически с нуля написали весь этот код :3
1
Модератор
2269 / 1606 / 875
Регистрация: 16.10.2013
Сообщений: 4,761
Записей в блоге: 12
20.11.2019, 13:29 4
Юле4каС, не за что) Вы молодец, что разобрались, это радует
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2019, 13:29
Помогаю со студенческими работами здесь

Ввести строку, вывести на экран слова в которых есть указанный символ ПОМОГИТЕ ПОЖАЛУЙСТА ДОДЕЛАТЬ ПРОГУ
// Example program #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; int main() { ...

Вывести те слова, у которых есть хотя бы одна буква «а», стоящая рядом с «м»
Вывести те слова, у которых есть хотя бы одна буква «а», стоящая рядом с «м».

Ввести строку вывести каждое слово из этой строки с кол-ом повторений этого слова учитывая все знаки препинания...
Составить прогу: Ввести строку вывести каждое слово из этой строки с кол-ом повторений этого слова...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru