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

не понимаю код - C++

Восстановить пароль Регистрация
 
Lev93
1 / 1 / 0
Регистрация: 09.02.2013
Сообщений: 51
02.03.2013, 00:31     не понимаю код #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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
int main()
{
    string text; 
    string word;
    stringstream s;
    
    getline(cin, text);
    
    s << text;
    
    do
    {
        s >> word;
        if (word[0] == word[word.size() - 1]) cout << word << endl;
    } while (!s.eof());
    
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.03.2013, 00:42     не понимаю код #2
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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
int main()
{
    string text; // строка для текста
    string word; // строка для слова
    stringstream s; // строковый поток
    
    getline(cin, text); // вводим текст с клавиатуры
    
    s << text; // помещаем текст в строковый поток
    
    do // цикл чтения из потока, пока не достигнут конец потока
    {
        s >> word; // читаем текст из потока по слову
        if (word[0] == word[word.size() - 1]) cout << word << endl; // если первая и последняя буквы слова равны, то выводим слово
    } while (!s.eof()); 
    
    system("pause");
    return 0;
}
Lev93
1 / 1 / 0
Регистрация: 09.02.2013
Сообщений: 51
02.03.2013, 00:47  [ТС]     не понимаю код #3
а что такое while (!s.eof());
и как это будет выглядеть в борланде (у нас в институте требуют писать только на борланде )
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
02.03.2013, 00:50     не понимаю код #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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
int main()
{
    string text; 
    string word;
    stringstream s;
    
    getline(cin, text); //Вводим строку
    
    s << text; //записываем в stringstream для удобства
    
    do
    {
        s >> word; //для чего - то перезаписываем исходную строку в др. переменную
        if (word[0] == word[word.size() - 1]) cout << word << endl; //т.к. любая строка это массив значит к нему    
// можно обращаться по индексам, сравнивается 1 буква строки с последней word[0] == word[word.size() - 1] и 
//  если они одинаковы выводят на экран это слово cout << word << endl;
    } while (!s.eof()); //условие цикла выполнять до тех пор пока не закончится поток(строка со словами)   
    system("pause"); // приостановка приложения чтобы увидеть результат
    return 0;
}
Добавлено через 1 минуту
пока писал уже кто то ответил ))
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
02.03.2013, 00:51     не понимаю код #5
Чтобы лучше понять этот код, пробеги по книге с STL
У павловской есть хорошие примеры, там будет и про строки и про потоки...
они все в пространстве std::
C++
1
2
3
std::string;
std::stringstream;
std::fstream; // и тд..
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.03.2013, 01:20     не понимаю код #6
Цитата Сообщение от Lev93 Посмотреть сообщение
а что такое while (!s.eof());
Проверка на конец потока (что в потоке больше нечего читать).

Добавлено через 27 секунд
Цитата Сообщение от Lev93 Посмотреть сообщение
и как это будет выглядеть в борланде
Понятия не имею.

Добавлено через 18 минут
Можно упростить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string word; // строка для слова
    cout << "Enter the string\n";
    do // цикл чтения по слову до конца строки
    {
       cin >> word; // читаем слово
       if (word[0] == word[word.size() - 1]) cout << word << endl; // если первая и последняя буквы слова равны, то выводим слово
    } while (cin.peek() != '\n'); 
 
    system("pause");
    return 0;
}
Lev93
1 / 1 / 0
Регистрация: 09.02.2013
Сообщений: 51
02.03.2013, 01:55  [ТС]     не понимаю код #7
спасибо ребята!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2013, 11:03     не понимаю код
Еще ссылки по теме:

C++ Не понимаю задания
C++ Слишком сложный код программы, ничего не понимаю(

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

Или воспользуйтесь поиском по форуму:
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
02.03.2013, 11:03     не понимаю код #8
Цитата Сообщение от Lev93 Посмотреть сообщение
спасибо ребята!
Тут принято кнопоку жать +1, а это сообщение удалят модераторы
Yandex
Объявления
02.03.2013, 11:03     не понимаю код
Ответ Создать тему
Опции темы

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