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

Функция, которая оставляет в строке только буквы и пробелы между словами

26.11.2018, 01:06. Просмотров 1039. Ответов 1
Метки нет (Все метки)


Есть примерный код, но выводит совсем не то. Кто знает, в чем причина, и что нужно переделать или дописать?
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
#include <stdio.h>
int
isLetter(char c) {
    if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
        return 1;
    }
    return 0;
}
void
delete_symb(char *str) {
    int i = 0;
    int d = 0;
    while (str[i] != 0) {
        if (isLetter(str[i])) {
            d++;
        }
        if (!(isLetter(str[i]))) {
            d--;
        }
        str[d++] = str[i++];
    }
    str[d] = '\0';
}
 
 
int main() {
    char str[1000];
    printf("Input the string:\n");
    gets_s(str);
    delete_symb(str);
    printf("%s\n", str);
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2018, 01:06
Ответы с готовыми решениями:

Создать программу, которая в символьной строке оставляет только те слова, в которых есть повторяющиеся символы
Помогите создать программу, которая в символьной строке оставляет только те слова, в которых есть...

Функция, которая добавляет равномерно пробелы в каждой строке до определенной длины
Прошу помощи, бьюсь над программой почти месяц. Суть в том, чтобы написать программу, использующую...

Отредактировать текст, удаляя лишние пробелы между словами
В текстовом файле хранится некоторый текст. Отредактировать текст, удаляя лишние пробелы между...

Отредактировать строку удаляя лишние пробелы между словами
Отредактировать строку удаляя лишние пробелы между словами.На языке си.

1
Невнимательный
436 / 358 / 128
Регистрация: 08.02.2013
Сообщений: 1,001
Записей в блоге: 2
26.11.2018, 05:07 2
Лучший ответ Сообщение было отмечено NRS как решение

Решение

Только что-то такое приходит в мысли на первый взгляд
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
#include <stdio.h>
int
isLetter(char c) {
    if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
        return 1;
    }
    return 0;
}
void
delete_symb(char *str) {
    char* Ptr = str;
    char sdvig = 0;
    while(*Ptr && isLetter(*Ptr)){// пропускает если вначале isLetter
        ++str;
        ++Ptr;
        if (*Ptr == ' '){ // пропускает пробел после слова
            ++str;
            ++Ptr;
//++sdvig;
        }
    }
    ++Ptr;
    while (*Ptr) {// или Ptr != str
        if(!isLetter(*Ptr)){
            ++Ptr;
            continue;
        }
        while(isLetter(*Ptr)){
            *(str++) = *(Ptr++);
        }
        *(str++) = ' ';// пробел
        ++sdvig;
    }
    if (sdvig) --str; // последний пробел
    *str = '\0';
}
 
 
int main() {
    char str[1000];
    printf("Input the string:\n");
    fgets(str,999,stdin);
    delete_symb(str);
    printf("'%s'\n", str);
return 0;
}
// можно сократить, если убрать пропуск уже совпадающего
и перезаписывать символы ими самими
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2018, 05:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Удалить из файла лишние пробелы, оставив по одному между словами
Добрый день. Помогите с программой. Заранее спасибо. Дан файл, содержащий некоторый текст....

Выровнять строки в файле по правой и левой границе, вставляя между словами пробелы
Доброго времени суток. Задача: Выравнять строки в файле по правой и левой границе, вставляя между...

Удалить из текстового файла все лишние пробелы, оставив между словами не более одного пробела
Дано вот такое задание: Дан текстовый файл. Удалить из него все лишние пробелы, оставив между...

Буквы ю, ъ, ф, э в строке удвоить, а между словами оставить только по одному пробелу
Пользователь заполняет символьную строку русскими буквами. Буквы ю, ъ, ф, э в ней нужно удвоить, а...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.