Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 240
#1

Замена прописных букв строчными - C++

22.11.2011, 11:27. Просмотров 1093. Ответов 3
Метки нет (Все метки)

Всем привет!

Такая проблемка: вводим строку и, если после , или ; стоит прописная буква - заменяем эту букву на строчную. Написал такой код:

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>
#include <ctype.h>
#include <conio.h>
 
int main ()
{
    const int N = 255;
    int i=0, c;
    char str[N];
    while ((c = _getch()) != 13 && i<N) //13 = enter
    {
        if (c == 0 || c == 0xE0) 
            _getch();
 
        else if (isgraph(c)) 
        {
            _putch(c);
            str[i++]=c;
        }
    }
    i=0;
    char *s = str;
    while(*s++)
    {
        if((str[i] == ',' || str[i] == ';') && str[i++] != 0)
            str[i++] = tolower(str[i++]);
        ++i;
    }
 
    printf("%s ", str);
    return 0;
}
Тут не всё правильно (ибо вывод вообще какой-то корявый). Но разобраться мне самому не по силам.

Покажите, пжлст, где мои ошибки и варианты их исправлений.

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2011, 11:27     Замена прописных букв строчными
Посмотрите здесь:

Перевод букв из прописных в строчные - C++
Всем добрый день! Задача вроде бы проста - есть исходный файл. Получить второй файл образованный из первого с заменой всех его прописных...

Количество прописных букв в строке - C++
Привет всем. Ребят есть такая задача: напишите программу, которая подсчитывает и отображает на экране количество прописных букв в строке....

Нахождение и подсчет прописных букв - C++
Возникла проблема с подсчетом прописных букв, вот условие задачи: Написать функцию, которая получает в качестве параметров две строки...

поиск слов, состоящих из прописных букв - C++
всем доброго времени суток, собственно сабж, необходимо найти слова, содержащиеся в файле, которые состоят только из прописных букв. ...

Найти количество прописных букв в строке - C++
Здравствуйте, у меня код: #include&lt;iostream&gt; #include&lt;cctype&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; using namespace std; int...

Буллеан (степень) множества латинских прописных букв - C++
Найти буллеан множества латинских прописных букв.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.11.2011, 11:51     Замена прописных букв строчными #2
не используй вложенный инкремент (неправильно сделано условие)
-=ЮрА=-
Заблокирован
Автор FAQ
22.11.2011, 12:03     Замена прописных букв строчными #3
amfisat, решил написать всё с нуля, т.к. разбирать Ваш код по косточкам не особо хотелось
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>
#include <ctype.h>
#include <conio.h>
 
int main()
{
    long i = 0;
    char chr, str[1024];
    printf("Enter string (less than 1024 chars)\n");
    //Ñ÷èòûâГ*ГҐГ¬ ñòðîêó Г± ïðîáåëГ*ìè, Гў chr - \n îò ââîäГ*
    scanf("%[^\n]%c",str,&chr);
    while(str[i + 1] != '\0')
    {
        if(str[i] == ',' || str[i] == ';')
        while(str[i] != '\0')
        {
            if(isalpha(str[i]))
            {
                if(isupper(str[i]))
                    str[i] = tolower(str[i]);
                break;
            }
            i++;
            
        }
        i++;
    }
    printf("Trasformed string\n%s\n",str);
    printf("Press any key to continue\n");
    _getch();
    return 0;
}
Enter string (less than 1024 chars)
Rdfgd, Thghj; sdfds; Afdsf, Ffdg; fgdf
Trasformed string
Rdfgd, thghj; sdfds; afdsf, ffdg; fgdf
Press any key to continue

Добавлено через 6 минут
PS:
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
scanf("%[^\n]%c",str,&chr);
- вот этой строкой мы заменяем весь Ваш цикл ввода
Цитата Сообщение от amfisat Посмотреть сообщение
while ((c = _getch()) != 13 && i<N) //13 = enter
* * * * {
* * * * * * * * if (c == 0 || c == 0xE0)
* * * * * * * * * * * * _getch();
else if (isgraph(c))
* * * * * * * * {
* * * * * * * * * * * * _putch(c);
* * * * * * * * * * * * str[i++]=c;
* * * * * * * * }
* * * * }
Ну а насчёт ошибок, думается вот здесь они кроются
Цитата Сообщение от amfisat Посмотреть сообщение
str[i++] != 0)
* * * * * * * * * * * * str[i++] = tolower(str[i++]);
- после запятой или точки с запятой идёт пробел, а может и несколько, поэтому нужно их "пропустить". Если не прибегать к спец функциям - сделать это проще всего в цикле
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(str[i] != '\0')
* * * * * * * * {
* * * * * * * * * * * * if(isalpha(str[i]))
* * * * * * * * * * * * {
* * * * * * * * * * * * * * * * if(isupper(str[i]))
* * * * * * * * * * * * * * * * * * * * str[i] = tolower(str[i]);
* * * * * * * * * * * * * * * * break;
* * * * * * * * * * * * }
* * * * * * * * * * * * i++;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2011, 12:28     Замена прописных букв строчными
Еще ссылки по теме:

СИ: Вывод отдельно заглавных и прописных букв из строки - C++
Нужно написать задачу на СИ, задание следущее: с клавиатуры вводится случайная строка. На экран выводятся раздельно заглавные и прописные...

Подсчитать слова, состоящие из латинских прописных букв. - C++
int main(int argc, char* argv) { int cnt=0, i; char *str=&quot;I can use the online Help system from the Help menu.&quot;; for (i=1;...

Удалить из строки слова, состоящие только из прописных букв - C++
Работа со строками (С) Дана строка символов, состоящая из прописных и строчных латинских букв и пробелов. Группы символов, разделенные...

Преобразование всех строчных букв в прописные, а прописных — в строчные - C++
Задача:Код строчных букв ASCII отличается от кода прописных на 32. Таким образом, чтобы преобразовать строчную букву в прописную,...

Проверить является ли выражение состоящее только из ПРОПИСНЫХ букв палиндромом - C++
Проверить является ли выражение состоящее только из ПРОПИСНЫХ букв палиндромом. Если да то напечатать полученный, иначе вывести строку с...

Сколько слов, состоящих только из прописных букв, содержится в сообщении - C++
Всем привет.Есть такое вот задание: Подсчитать сколько слов, состоящих только из прописных букв, содержится в сообщении, и в каждом таком...


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

Или воспользуйтесь поиском по форуму:
amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 240
22.11.2011, 12:28  [ТС]     Замена прописных букв строчными #4
Класс, спасибо, буду разбираться.
Yandex
Объявления
22.11.2011, 12:28     Замена прописных букв строчными
Ответ Создать тему
Опции темы

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