Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/14: Рейтинг темы: голосов - 14, средняя оценка - 5.00
 Аватар для KeyGen
388 / 295 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1

Цикл for

23.08.2011, 19:35. Показов 3156. Ответов 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;
 
}
Выполнение:
Миниатюры
Цикл for  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.08.2011, 19:35
Ответы с готовыми решениями:

Цикл: Посчитать среднее арифметическое всех чисел в заданном диапазоне. Цикл while.
Напишите пожалуйста код для данной задачки с помощью цикла while Вывести числа в пользовательском диапазоне с шагом, указанным...

Цикл: Определить, сколько простейших организмов будет через каждый период их деления. Цикл while.
Напишите пожалуйста код к этой задачке, неделю уже ломаю себе голову как ее решить. Одноклеточная амеба каждые 3 часа делится на 2...

Почему цикл на при 1 уходит в бесконечный цикл?
#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,...

22
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
23.08.2011, 19:43
В массиве размером 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
Цитата Сообщение от 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
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
23.08.2011, 19:45
Правильный заголовок цикла мог бы выглядеть так:
C++
1
for (int i = a - 1; i >= 0; i--)
или, менее понятно, так:
C++
1
for (int i = a; --i >= 0; )
1
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
23.08.2011, 19:46
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
388 / 295 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
23.08.2011, 19:51  [ТС]
Я правильно понял?
C++
1
2
3
4
...    
for (int i=a; i<a,i!=-2; i--)
cout << mass[i];  
...
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
23.08.2011, 19:52
Цитата Сообщение от KeyGen Посмотреть сообщение
Я правильно понял?
Нет. Не правильно.
0
Заблокирован
23.08.2011, 19:53
Цитата Сообщение от 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
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
23.08.2011, 19:59
Сыроежка, в пятых, не тебе меня учить как кодить, если хочешь перед кем-то повыпендриваться, то ошибся адресом.

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

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

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

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

Что касается "выпендриваться", то этот термин как раз применим именно к вам, так как ваш код мало того, что некорректный, так ее не по теме! Никто в этой теме про списки не говорил! А речь идет о цикле for! так что ваш выпендрешь совершенно неуместен!
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
23.08.2011, 20:02
вот тебе даже отрывок из реализации 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
Цитата Сообщение от sandye51 Посмотреть сообщение
Сыроежка, в пятых, не тебе меня учить как кодить, если хочешь перед кем-то повыпендриваться, то ошибся адресом.

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

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

про for: не было явно сказано что с помощью него реализовать надо, вполне логично было подумать что в нем ошибка
0
Заблокирован
23.08.2011, 20:10
Цитата Сообщение от 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
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
23.08.2011, 20:11
Цитата Сообщение от Сыроежка Посмотреть сообщение
где говорится про списки?!
а где про них не говорится?

все, заканчиваем разговор.
0
Заблокирован
23.08.2011, 20:13
Цитата Сообщение от sandye51 Посмотреть сообщение
а где про них не говорится?

все, заканчиваем разговор.
Это уже не ко мне! С этим вопросом вам надо к психиатру, так как ваше поведение явно не адекватное! Например, здесь не говорилось про сказку про Колобка. Значит ли это, что мы обсуждаем сказку про Колобка?!
0
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
23.08.2011, 20:15
Сыроежка, к психиатру как раз тебе пора. Не думаю, что человек, несущий такую охинею, является адекватом.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
23.08.2011, 20:23
C++
1
2
3
size_t a = mass.size() - 1;
for(size_t i = a; i != string::npos; --i)
    cout << mass[i];
0
Заблокирован
23.08.2011, 20:24
Цитата Сообщение от KeyGen Посмотреть сообщение
Я правильно понял?
C++
1
2
3
4
...    
for (int i=a; i<a,i!=-2; i--)
cout << mass[i];  
...
Как уже было сказано, ваш код некорректный. Я тут отвлекся на одного невменяемого, но, возвращаясь к вашему исходному вопросу, замечу, что, как тут уже было отмечано, второй параметр цикла у вас записан неправильно. Нет необходимости в нем использовать оператор "запятая".

Вы можете записать свой цикл несколькими вариантами. Например,

C++
1
2
for ( int i = a - 1 ; i >= 0; i-- )
   cout << mass[i];
или

C++
1
2
for ( int i = 0; i < a; i++ )
   cout << mass[a -i - 1];
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.08.2011, 20:25
Можно проще...
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <sstream>
int main()
{
    std::string str;
    std::getline( std::cin, str );
    std::cout << std::string( str.rbegin(), str.rend() );
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.08.2011, 20:25
Помогаю со студенческими работами здесь

Цикл: Не могу создать цикл для switch
не могу создать цикл для switch

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru