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

Как использовать данные из цикла вне его - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
29.04.2014, 18:35     Как использовать данные из цикла вне его #1
Уважаемые модераторы прошу удалит предыдущую тему.

Так как я изучаю программирование самостоятельно часто появляются вопросы на которых неоткуда получит ответ кроме как спросит на форуме. По этому решил создать тему и поставит все свои вопросы которые есть сейчас и появятся в будущем в этой теме.

Буду очень благодарен если кто та из опытных программистов будет следит за темой.

И так вопрос 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
25
26
27
28
29
30
31
32
33
34
35
int main()
{ setlocale (LC_ALL , "Russian");
    string text;
    string f;
    vector<string> vtext;
    
    std::cout << " Введите текст " << std::endl;
    if(std::getline(std::cin, text))
     
    int s = 5;
        for(string::size_type i = 0; i != text.size(); i++)
        { f = text[i];
        
        std::cout << text[i] << " ";
        
        vtext.push_back(f);
        std::cout << f << " ";
        text[i] = toupper(text[i]);
        std::cout << text[i] << " ";
        
    }
    int r = 2;
    char c = 'a';
        for(vector<string>::iterator it = vtext.begin(); it != vtext.end(); it++)
        {
    *it = r;
    r++;
    *it = c;
    c++;
    std::cout << *it << "-";
    }
        _getch ();
        
        return 0;
    }


Вопрос 2. Почему иногда переменное инициализированная перед циклом (for) не принимается в цикле. Пишет то переменная не инициализирована или не известна.

Вопрос 3. Сегодня учил библиотечный тип bitset. Привлекло внимание следующее:
Цитирую из книги:
" На машине с 32 - битовым типом unsigned long, шестнадцатеричное значение 0xffff представляется последовательностью из 16 битов, заполненных единицами , с последующими нулями до конца размера. Набор битов можно инициализировать с значением 0xffff следующим образом.
//набор bitvec1 меньше инициализирующего значения.
bitset<16> bitvec1(0xffff);
// размер набора bitvec2 и инициализирующая значение совпадают
bitset<32> bitvec2(0xffff);
Вот не понятно. Если 0xffff шестнадцатеричное то почему "// размер набора bitvec2 и инициализирующая значение совпадают
bitset<32> bitvec2(0xffff);"

Вопрос 4. Сегодня изучал итераторы. Написал программу которую показал на 1 вопросе. При использование вектора такой код не верен из за того что инициализированная значение r относится типу int а сам вектор типу string. Но при использование итератора не выдало не каких ошибок. И выводит некие символы. Не тарабарщина а определенные символы: Если написать Hello! получится смайлик, карточные знаки, символ ноты ( со звуком ). Если написать текст по больше получится эти символы и еще множество символов. Это ошибка программы или так и должно быт?
код C++
C++
1
2
3
4
5
6
7
8
9
10
int r = 2;
    char c = 'a';
        for(vector<string>::iterator it = vtext.begin(); it != vtext.end(); it++)
        {
    *it = r;
    r++;
    *it = c;
    c++;
    std::cout << *it << "-";
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11840 / 6819 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
29.04.2014, 18:37     Как использовать данные из цикла вне его #2
Цитата Сообщение от Altair42 Посмотреть сообщение
По этому решил создать тему и поставит все свои вопросы которые есть сейчас и появятся в будущем в этой теме.
решил он... а как же
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
???
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
29.04.2014, 18:50  [ТС]     Как использовать данные из цикла вне его #3
Часть кода которого показал в низу не работает. Точнее работает на половину. Сообщение выводит но не ждет ввода. Не могу понят почему. Спросил в другой теме именно на этот вопрос не ответили ( может времени не нашли)

код С++

Остальное находится тут
C++
1
2
3
4
if(num.size() % 2 != 0)
{std::cout << "Колличество эдлементов вектора не четное. Прошу добавит элемент в вектор для продолжение операции!\n";
if(std::cin >> n)
    num.push_back(n);}


Добавлено через 6 минут
Croessmah, Получается за каждый вопрос создать отдельную тему?
Можно посмотреть на этот как на один вопрос. Все вопросы вокруг одной темы. И пусть модератор отвечает на счет этого.
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
29.04.2014, 18:51     Как использовать данные из цикла вне его #4
Цитата Сообщение от Altair42 Посмотреть сообщение
C++
1
2
3
4
if(num.size() % 2 != 0)
{std::cout << "Колличество эдлементов вектора не четное. Прошу добавит элемент в вектор для продолжение операции!\n";
if(std::cin >> n)
 num.push_back(n);}
Не компилируется или компилируется и работает неправильно, или при работе выдает ошибку и завершается?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:12     Как использовать данные из цикла вне его #5
Цитата Сообщение от Altair42 Посмотреть сообщение
Сообщение выводит но не ждет ввода. Не могу понят почему. Спросил в другой теме именно на этот вопрос не ответили ( может времени не нашли)
Гед там вопрос об этом?
Как делать я вам в той теме написал:
Ошибка VC++ или не понятно что
Почему так делать нужно, от вас вопроса не было, написали только, что этот код вам знаком (откуда мне знать, может и причина его применения известна?) и всё.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
29.04.2014, 19:15  [ТС]     Как использовать данные из цикла вне его #6
alsav22, Последний пост в той же теме.

Добавлено через 2 минуты
Denis123456789, Комилируется. Работает. Выводит сообщение при вводе не четного количества цифр. переходит на селдующий шаг не завершая функцию if ( не ждет ввода )
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:16     Как использовать данные из цикла вне его #7
Цитата Сообщение от Altair42 Посмотреть сообщение
Вопрос 2. Почему иногда переменное инициализированная перед циклом (for) не принимается в цикле. Пишет то переменная не инициализирована или не известна.
Пример кода.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
29.04.2014, 19:17  [ТС]     Как использовать данные из цикла вне его #8
alsav22, Не обижайся друг. Я подумал у тебя просто нет времени. Я понимаю что болшенство из вас заняты.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:24     Как использовать данные из цикла вне его #9
Цитата Сообщение от Altair42 Посмотреть сообщение
Последний пост в той же теме.
Цитата Сообщение от Altair42 Посмотреть сообщение
Не могу понят, почему программа переходит к выполнению след функции когда функция if не завершена?
Ответ: потому что не сделали то, что написано в 7 посте.

Добавлено через 2 минуты
Почему не останавливается цикл по требованию?

Добавлено через 4 минуты
Цитата Сообщение от Altair42 Посмотреть сообщение
Это ошибка программы или так и должно быт?
Как написали, так и работает.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
29.04.2014, 19:29  [ТС]     Как использовать данные из цикла вне его #10
alsav22,
Не могу показать пример ибо такое случается не постоянно. Иногда цикл просто не видит инициализированную переменную перед собой.
На счет 7-го поста той темы. Я не понимаю тот код. Если перевести код на человеческий язык, там говорит: Запомни "n" в конец вектора при вводе, очисти кеш ( или буфер) от ввода, перейди на следующую строку при нажатие энтер. Но сам код cin.clear(), cin.get() мне не знаком.
1- я не думал что от этого что та изменится. Вы могли бы на той теме написать что функция if не работает из за этого. Я просто скопировал бы.
2- не люблю использовать то чего сам не мог бы делать. Ибо не знал об этом.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:36     Как использовать данные из цикла вне его #11
Неправильно вас процитировал:
Цитата Сообщение от Altair42 Посмотреть сообщение
Этот код мне не знаком. Пока следую программе книги с которого учу с++. Как то перешел с циклов на массивы ( видеоуроки) 3 дня сидел над заданием. Спасибо за совет.
Цитата Сообщение от Altair42 Посмотреть сообщение
Я подумал у тебя просто нет времени.
Не в этом дело. Вам предложили вариант, чтобы код нормально работал. Реакция такая:
Цитата Сообщение от Altair42 Посмотреть сообщение
Этот код мне не знаком. Пока следую программе книги с которого учу с++.
Цитата Сообщение от Altair42 Посмотреть сообщение
Исправил все. Кроме
Что на это можно сказать? Продолжайте дальше следовать книге...

Добавлено через 1 минуту
Цитата Сообщение от Altair42 Посмотреть сообщение
Не могу показать пример ибо такое случается не постоянно.
О чём тогда вопрос? Как случится покажите код, получите ответ.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
29.04.2014, 19:36  [ТС]     Как использовать данные из цикла вне его #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Как написали, так и работает.
Меня запутал то что я там использовал переменную типа инт чтоб присвоит его к стринг. Обычно попытка такого присваивание выдавало ошибку ( до использование итерации).
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:38     Как использовать данные из цикла вне его #13
Цитата Сообщение от Altair42 Посмотреть сообщение
Меня запутал то что я там использовал переменную типа инт чтоб присвоит его к стринг.
А зачем int присваивать string? Чтобы потом вопросы на форуме задавать?
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
29.04.2014, 19:39  [ТС]     Как использовать данные из цикла вне его #14
Цитата Сообщение от alsav22 Посмотреть сообщение
Не в этом дело. Вам предложили вариант, чтобы код нормально работал. Реакция такая:
Прости но. Как тебе понравится если за тебя кто та будет жевать еду?
Без обид только. Когда я получаю готовый код чтоб использовать в программе я чувствую себя так же.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:41     Как использовать данные из цикла вне его #15
Цитата Сообщение от Altair42 Посмотреть сообщение
Запомни "n" в конец вектора при вводе
Где там вектор, и где там запомни? Читайте дальше книгу.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
29.04.2014, 19:41  [ТС]     Как использовать данные из цикла вне его #16
Цитата Сообщение от alsav22 Посмотреть сообщение
А зачем int присваивать string? Чтобы потом вопросы не форуме задавать?
Я учусь. И должен экспериментировать. Если бы я не присвоил инт к стирнг не узнал бы что итератор может работать так. А спросил на форуме чтоб утвердит свое знание. Если просто везение что это сработало?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:42     Как использовать данные из цикла вне его #17
Цитата Сообщение от Altair42 Посмотреть сообщение
Как тебе понравится если за тебя кто та будет жевать еду?
Разжёвывание - это объяснение кода, чего вы и хотите. Не хотите разжёвывания - сами разбирайтесь, как код работает, пользы будет больше.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
29.04.2014, 19:52  [ТС]     Как использовать данные из цикла вне его #18
Цитата Сообщение от alsav22 Посмотреть сообщение
Где там вектор, и где там запомни? Читайте дальше книгу.

C++
1
2
3
4
5
6
std::cout << "Введите несколько чисел" << std::endl;
while(std::cin >> n) //Это разве не означает что при вводе n 
     num.push_back(n); //n будет присвоено в конец вектора num 
                                //( а вектор в свою очеред запомнит его как последный элемент)
std::cin.clear();
while (std::cin.get() != '\n');
Добавлено через 5 минут
alsav22, Мне кажется вы сердитесь Вот мы обсуждаем элементы кода. Вот это объяснение. А готовый код иногда кажется... как сказать. Как будто я только учусь водит машину мне дали управлять самолетом.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:56     Как использовать данные из цикла вне его #19
Вот мой код:
C++
1
2
std::cin.clear();
while (std::cin.get() != '\n');
Цитата Сообщение от alsav22 Посмотреть сообщение
Где там вектор, и где там запомни?
Или вы свой код не понимаете?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2014, 20:03     Как использовать данные из цикла вне его
Еще ссылки по теме:

C++ Как использовать данные из файла заранее созданного?
В каком месте использовать конструктор - вне цикла или в цикле? C++
Что из себя представляет код в стеке, и как его использовать C++

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

Или воспользуйтесь поиском по форуму:
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
29.04.2014, 20:03  [ТС]     Как использовать данные из цикла вне его #20
Я очень любознательный. Люблю "тыкать куда попало" чтоб посмотреть что будет. Так и учусь. Часто возникают вопросы что? и почему? которые не редко бесит окружающих. Прошу понять и жаловать

Добавлено через 4 минуты
alsav22, Ну этот код я написал несколько дней назад до тех пор много чего написал. Я обычно не запоминаю то что не важна ( как например код которого уже написал. Знаю способ не надо помнит код).
Приношу извинение
Цитата Сообщение от alsav22 Посмотреть сообщение
Код C++


1 std::cin.clear();
2 while (std::cin.get() != '\n');
1 - как я понял очищает буфер обмена?
2 - продолжает цикл ока не будет введен энтер?
Yandex
Объявления
29.04.2014, 20:03     Как использовать данные из цикла вне его
Закрытая тема Создать тему
Опции темы

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