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

Программа удаляет все слова начинающиеся со строчной буквы (пояснить код) - C++

Восстановить пароль Регистрация
 
Andriy24
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 35
25.11.2012, 18:12     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код) #1
Почему в этой программе нужно в islower записать именно str[0] ? Почему 0?
Программа удаляет все слова начинающиеся со строчной буквы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstring>
int main()
{
     char b[] = "So Many many : many , Words", s[100];
    char* str = strtok(b, " ,.:");
     do {
         if (!islower(str[0]))
             {
                strcat(s,str);
                strcat(s," ");
             }
     } 
     while (str = strtok(NULL," ,.:"));
     std::cout<<s;
     std::system("pause");
     return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2012, 18:12     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код)
Посмотрите здесь:

Вывести все слова начинающиеся с заданной буквы. C++
Дан текстовый файл. Вывести все слова, начинающиеся с заданной буквы C++
Программа, которая вводит текст, удаляет в нем все слова заданной длины, а оставшиеся слова выводит в алфавитн C++
Выделить в строке s1 все слова,начинающиеся с гласной буквы C++
Напишите программу, которая удаляет из слова X все буквы, которые встречаютьс в слове Z C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
c00le®
138 / 138 / 12
Регистрация: 20.03.2009
Сообщений: 235
25.11.2012, 18:42     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код) #2
Цитата Сообщение от Andriy24 Посмотреть сообщение
Почему в этой программе нужно в islower записать именно str[0] ? Почему 0?
Программа удаляет все слова начинающиеся со строчной буквы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstring>
int main()
{
     char b[] = "So Many many : many , Words", s[100];
    char* str = strtok(b, " ,.:");
     do {
         if (!islower(str[0]))
             {
                strcat(s,str);
                strcat(s," ");
             }
     } 
     while (str = strtok(NULL," ,.:"));
     std::cout<<s;
     std::system("pause");
     return 0;
}
Насколько я понял, индексы строки отсчитываются с 0, а не с 1
Andriy24
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 35
25.11.2012, 18:48  [ТС]     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код) #3
Цитата Сообщение от c00le® Посмотреть сообщение
Насколько я понял, индексы строки отсчитываются с 0, а не с 1
Но почему только 0? А не например вот так:
C++
1
2
3
4
5
6
7
8
9
do {
         if (!islower(str[i]))
             {
                strcat(s,str);
                strcat(s," ");
             }
i++;
     } 
     while (str = strtok(NULL," ,.:"));
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
25.11.2012, 19:07     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код) #4
а где ты тут вообще видишь i ???
str - это указатель на символ в строке b, в данном случае на первый символ в слове.

C++
1
2
3
4
char b[] = "So Many many : many , Words"
      ---------^
      |
char* str = strtok(b, " ,.:");
Andriy24
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 35
25.11.2012, 19:13  [ТС]     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код) #5
Я не понимаю почему 0? Кто-то объяснить?
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
25.11.2012, 19:14     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код) #6
str[0]='M'
str[1]='a'
str[2]='n'
str[3]='y'
str[4]=' '
str[5]='m'
str[6]='a'
str[7]='n'
str[8]='y'
str[9]=' '
str[10]=':'
str[11]=' '
str[12]='m'
str[13]='a'
str[14]='n'
str[15]='y'
str[16]=' '
str[17]=','
str[18]=' '
str[19]='W'
str[20]='o'
str[21]='r'
str[22]='d'
str[23]='s'
str[24]=0
Andriy24
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 35
25.11.2012, 20:17  [ТС]     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код) #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
str[0]='M'
str[1]='a'
str[2]='n'
...
str[22]='d'
str[23]='s'
str[24]=0
Здесь вас str меняется а в программе НЕТ! ПОЧЕМУ НЕТ?

Добавлено через 1 час 1 минуту
Ну так кто скажет почему там 0?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2012, 14:43     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код)
Еще ссылки по теме:

C++ Вывести все слова из строки, начинающиеся с определенной буквы
C++ Найти все слова, начинающиеся с буквы b
Написать программу, которая удаляет из текстового файла слова, начинающиеся и оканчивающиеся на гласные буквы C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
30.11.2012, 14:43     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код) #8
Andriy24, потому что:
1. Массивы в С/С++ нумеруются с нуля.
2. strtok модифицирует анализируемую строку и при каждом следующем вызове (при первом вызове её надо передать строку для разбиения, при последующих для продолжения работы с той же строкой - NULL) возвращает указатель на очередной её элемент, который она выделила. Таким образом, в начале каждой итерации массива str будет указывать на следующее слово строки, и первая буква этого слова относительно str будет именно str[0].
Yandex
Объявления
30.11.2012, 14:43     Программа удаляет все слова начинающиеся со строчной буквы (пояснить код)
Ответ Создать тему
Опции темы

Текущее время: 07:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru