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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
KeyGen
384 / 291 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
#1

Цикл for - C++

23.08.2011, 19:35. Просмотров 1968. Ответов 22
Метки нет (Все метки)

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>
 
using namespace std;
 
int main ()
{
     
//////////////////////////////////////////////////////// 
    // ÎòîáðГ*æåГ*ГЁГҐ ñëîâГ* Г*Г* îáîðîò. ГЌГҐ ìîãó Г°Г*çîáðГ*ГІГјГ±Гї îêóäГ*
    // áåðåòüñÿ ïðîáåë, ïîäñêГ*æèòå, ïîæГ*éëóñòГ*.  
    
    string mass;
    getline(cin,mass);
    
    int a = mass.size();
    
    for (int i=a; i<=a,i!=-1; i--)
    cout << mass[i];   
    
    cout << endl;
    system("PAUSE");
    return 0;
 
}
Выполнение:
0
Миниатюры
Цикл for  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2011, 19:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Цикл for (C++):

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { int x=0, y=0,...

Цикл: цикл for вообще никак не воспринимается транслятором - C++
Пишу программу, которая производит различные действия с одномерным массивом. Возникла следующая проблема: цикл for вообще никак не...

Задание на цикл с параметром и цикл с постусловием - C++
Помогите пожалуйста написать программу с этими циклами. 1. Вычислить и напечатать таблицу значений функции Z= (e^-x)sinx для 0&lt;=x&lt;=П,...

Цикл for/Цикл while Помогите срочно пожалуйста... - C++
1.Вычислить и вывести на экран в виде таблицы значения функции F от x1 до x2 с шагом dx. где a, b и c - действительные числа. 2.Цикл...

Цикл с параметром и цикл с условием - C++
1. Составить программу вычисления суммы первых 10 непарных чисел 2. Дано числовой ряд и некоторое число &quot;епсила&quot;. Найти сумму...

Изменить цикл for на цикл do-while - C++
помогите передать программу с цикла FOR в цикл DO-WHILE #include &lt;math.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
23.08.2011, 19:43 #2
В массиве размером a последний элемент mass[a-1], а элемента mass[a] нет.

Добавлено через 2 минуты
Цитата Сообщение от KeyGen Посмотреть сообщение
C++
1
for (int i=a; i<=a,i!=-1; i--)
Здесь, кстати, условие i <= a мало того, что избыточно, так оно и вовсе игнорируются. Условия нельзя комбинировать запятой, для этого есть логические операторы && и ||
1
Сыроежка
Заблокирован
23.08.2011, 19:43 #3
Цитата Сообщение от KeyGen Посмотреть сообщение
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>
 
using namespace std;
 
int main ()
{
     
//////////////////////////////////////////////////////// 
    // ÎòîáðГ*æåГ*ГЁГҐ ñëîâГ* Г*Г* îáîðîò. ГЌГҐ ìîãó Г°Г*çîáðГ*ГІГјГ±Гї îêóäГ*
    // áåðåòüñÿ ïðîáåë, ïîäñêГ*æèòå, ïîæГ*éëóñòГ*.  
    
    string mass;
    getline(cin,mass);
    
    int a = mass.size();
    
    for (int i=a; i<=a,i!=-1; i--)
    cout << mass[i];   
    
    cout << endl;
    system("PAUSE");
    return 0;
 
}
Выполнение:
Дело в том, что вы выводите на печать больше символов, чем есть в вашей строке. То есть цикл ц вас должен меняться в отрезке от [ a - 1, 0 ], а у вас меняется в отрезке [ a, 0 ] Обычно в буфер, где хранится ваша строка, помещается также завершающий нулевой символ, то есть '\0'. Вот именно он при выводе cout << mass[a]; замещается на экране пробелом.
1
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
23.08.2011, 19:45 #4
Правильный заголовок цикла мог бы выглядеть так:
C++
1
for (int i = a - 1; i >= 0; i--)
или, менее понятно, так:
C++
1
for (int i = a; --i >= 0; )
1
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
23.08.2011, 19:46 #5
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
#include <iostream>
#include <list>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <iterator>
#include <conio.h>
 
template <typename valueType>
struct reverser : 
    public std::unary_function<std::string, void>
{
    void operator()(std::string& _value) const
    {
        reverse(_value.begin(), _value.end());
    }
};
 
int main()
{
    std::list<std::string> text;
    copy(std::istream_iterator<std::string>(std::cin), std::istream_iterator<std::string>(), back_inserter(text));
    for_each(text.begin(), text.end(), reverser<std::string>());
    copy(text.begin(), text.end(), std::ostream_iterator<std::string>(std::cout, " "));
    _getch();
    return EXIT_SUCCESS;
}
1
KeyGen
384 / 291 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
23.08.2011, 19:51  [ТС] #6
Я правильно понял?
C++
1
2
3
4
...    
for (int i=a; i<a,i!=-2; i--)
cout << mass[i];  
...
0
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
23.08.2011, 19:52 #7
Цитата Сообщение от KeyGen Посмотреть сообщение
Я правильно понял?
Нет. Не правильно.
0
Сыроежка
Заблокирован
23.08.2011, 19:53 #8
Цитата Сообщение от sandye51 Посмотреть сообщение
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
#include <iostream>
#include <list>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <iterator>
#include <conio.h>
 
template <typename valueType>
struct reverser : 
    public std::unary_function<std::string, void>
{
    void operator()(std::string& _value) const
    {
        reverse(_value.begin(), _value.end());
    }
};
 
int main()
{
    std::list<std::string> text;
    copy(std::istream_iterator<std::string>(std::cin), std::istream_iterator<std::string>(), back_inserter(text));
    for_each(text.begin(), text.end(), reverser<std::string>());
    copy(text.begin(), text.end(), std::ostream_iterator<std::string>(std::cout, " "));
    _getch();
    return EXIT_SUCCESS;
}
У вас тут несколько ошибок.

Во-первых, совершенно непонятно, зачем функциональный объект определен как шаблонный, когда параметр шаблона нигде в нем не используется?

Во-вторых, использовать иденьтификаторы, которые начинаются с символа подчеркивания, - это плохой стиль программирования, так как такие идентификаторы зарезервированы системой.

В-третьиъ, у вас выйдет ошибка компиляции, так как компилятор не найдет объявление функции reverse, так как вы не указали, какому пространству имен ее идентификатор принадлежит.

В-четвертых, вы вообще не ту задачу сделали, которая требуется в исходном задании!
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
23.08.2011, 19:59 #9
Сыроежка, в пятых, не тебе меня учить как кодить, если хочешь перед кем-то повыпендриваться, то ошибся адресом.

3 пункт еще раз прочитай че написал. Неужели сложно структуру отличить от функции?

Добавлено через 1 минуту
и насчет второго пункта, для полей класса эти подчеркивания уж точно по барабану
сам много раз видел как в опен сорс либах именно так и называли поля, чтоб отличах их от обычных переменных в методах
0
Сыроежка
Заблокирован
23.08.2011, 20:01 #10
Цитата Сообщение от sandye51 Посмотреть сообщение
Сыроежка, в пятых, не тебе меня учить как кодить, если хочешь перед кем-то повыпендриваться, то ошибся адресом.

3 пункт еще раз прочитай че написал. Неужели сложно структуру отличить от функции?

Добавлено через 1 минуту
и насчет второго пункта, в классе эти подчеркивания уж точно ни на что не влияют
У вас неправильная программа, которая к тому же не должна компилироваться. Кому еще вас учить, если кроме меня никто не указал на ваши ошибки?!

Что касается "выпендриваться", то этот термин как раз применим именно к вам, так как ваш код мало того, что некорректный, так ее не по теме! Никто в этой теме про списки не говорил! А речь идет о цикле for! так что ваш выпендрешь совершенно неуместен!
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
23.08.2011, 20:02 #11
вот тебе даже отрывок из реализации stl
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
_Myt& operator++()
        {   // preincrement
        ++current;
        return (*this);
        }
 
    _Myt operator++(int)
        {   // postincrement
        _Myt _Tmp = *this;
        ++current;
        return (_Tmp);
        }
 
    _Myt& operator--()
        {   // predecrement
        --current;
        return (*this);
        }
 
    _Myt operator--(int)
        {   // postdecrement
        _Myt _Tmp = *this;
        --current;
        return (_Tmp);
        }
 
    template<class _RanIt2>
        bool _Equal(const move_iterator<_RanIt2>& _Right) const
        {   // test for iterator equality
        return (current == _Right.base());
        }
0
Сыроежка
Заблокирован
23.08.2011, 20:02 #12
Цитата Сообщение от sandye51 Посмотреть сообщение
Сыроежка, в пятых, не тебе меня учить как кодить, если хочешь перед кем-то повыпендриваться, то ошибся адресом.

3 пункт еще раз прочитай че написал. Неужели сложно структуру отличить от функции?

Добавлено через 1 минуту
и насчет второго пункта, для полей класса эти подчеркивания уж точно по барабану
сам много раз видел как в опен сорс либах именно так и называли поля, чтоб отличах их от обычных переменных в методах
По барабану все лишь тем, кто является плохим программистом!
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
23.08.2011, 20:03 #13
Сыроежка, ты хоть компилить пробовал? прежде чем рот разивать

про for: не было явно сказано что с помощью него реализовать надо, вполне логично было подумать что в нем ошибка
0
Сыроежка
Заблокирован
23.08.2011, 20:10 #14
Цитата Сообщение от sandye51 Посмотреть сообщение
Сыроежка, ты хоть компилить пробовал? прежде чем рот разивать

про for: не было явно сказано что с помощью него реализовать надо, вполне логично было подумать что в нем ошибка
Название темы "Цикл for" - для вас не является явным указанием на цикл for?! И ткните пальцем, пожалуйста, в то место темы, где говорится про списки?!

Добавлено через 52 секунды
Цитата Сообщение от sandye51 Посмотреть сообщение
вот тебе даже отрывок из реализации stl
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
_Myt& operator++()
        {   // preincrement
        ++current;
        return (*this);
        }
 
    _Myt operator++(int)
        {   // postincrement
        _Myt _Tmp = *this;
        ++current;
        return (_Tmp);
        }
 
    _Myt& operator--()
        {   // predecrement
        --current;
        return (*this);
        }
 
    _Myt operator--(int)
        {   // postdecrement
        _Myt _Tmp = *this;
        --current;
        return (_Tmp);
        }
 
    template<class _RanIt2>
        bool _Equal(const move_iterator<_RanIt2>& _Right) const
        {   // test for iterator equality
        return (current == _Right.base());
        }
Реализация STL, к вашему сведению, является системным кодом реализации С++. Вами бы это следовало знать, прежде чем что-то тут провозглашать!
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
23.08.2011, 20:11 #15
Цитата Сообщение от Сыроежка Посмотреть сообщение
где говорится про списки?!
а где про них не говорится?

все, заканчиваем разговор.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2011, 20:11
Привет! Вот еще темы с ответами:

заменить цикл for на цикл while - C++
#include &lt;iostream&gt; using namespace std; int main() { int N, M, sum; cout &lt;&lt; &quot;Введите число N:&quot; &lt;&lt; endl; ...

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием... - Turbo Pascal
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать учесть особенности получения квадратного...

Написать в турбо паскале, Цикл с параметром, Цикл, с постусловием, и с предусловием пожалуйста - Turbo Pascal

Как реализовать бесконечный цикл While, но чтобы этот цикл не грузил процессор? - Visual C++
Допустим есть цикл: while (1) { ... } Как сделать так, чтобы бесконечный цикл не грузил процессор. Избавиться от...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.08.2011, 20:11
Ответ Создать тему
Опции темы

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