0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
1

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

29.04.2014, 18:35. Показов 4114. Ответов 69
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые модераторы прошу удалит предыдущую тему.

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

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

И так вопрос 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 << "-";
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2014, 18:35
Ответы с готовыми решениями:

Функция ввода: как мне получить in, чтобы затем использовать его вне функции?
Здравствуйте, форумчане. У меня появилась проблема. Я создаю подобие движка для создания консольных...

В каком месте использовать конструктор - вне цикла или в цикле?
Добрый день! Как писать правильнее? Ниже два примера: QStringList data; foreach(const QString...

printf не выводи данные вне цикла.
Здравствуйте! Проблема состоит в том,что если printf стоит внутри какого-нибудь цикла,то данные...

Область видимости. Не могу вызвать переменную вне цикла For, т.е. вывести в цикле могу, а вне цикла нет. Почему?
Привет, не могу вызвать переменную вне цикла for, тоесть вывести в цикле могу, а вне цикла нет...

69
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
29.04.2014, 18:37 2
Цитата Сообщение от Altair42 Посмотреть сообщение
По этому решил создать тему и поставит все свои вопросы которые есть сейчас и появятся в будущем в этой теме.
решил он... а как же
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
???
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
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, Получается за каждый вопрос создать отдельную тему?
Можно посмотреть на этот как на один вопрос. Все вопросы вокруг одной темы. И пусть модератор отвечает на счет этого.
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
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);}
Не компилируется или компилируется и работает неправильно, или при работе выдает ошибку и завершается?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:12 5
Цитата Сообщение от Altair42 Посмотреть сообщение
Сообщение выводит но не ждет ввода. Не могу понят почему. Спросил в другой теме именно на этот вопрос не ответили ( может времени не нашли)
Гед там вопрос об этом?
Как делать я вам в той теме написал:
Ошибка VC++ или не понятно что
Почему так делать нужно, от вас вопроса не было, написали только, что этот код вам знаком (откуда мне знать, может и причина его применения известна?) и всё.
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
29.04.2014, 19:15  [ТС] 6
alsav22, Последний пост в той же теме.

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

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

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

Добавлено через 1 минуту
Цитата Сообщение от Altair42 Посмотреть сообщение
Не могу показать пример ибо такое случается не постоянно.
О чём тогда вопрос? Как случится покажите код, получите ответ.
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
29.04.2014, 19:36  [ТС] 12
Цитата Сообщение от alsav22 Посмотреть сообщение
Как написали, так и работает.
Меня запутал то что я там использовал переменную типа инт чтоб присвоит его к стринг. Обычно попытка такого присваивание выдавало ошибку ( до использование итерации).
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:38 13
Цитата Сообщение от Altair42 Посмотреть сообщение
Меня запутал то что я там использовал переменную типа инт чтоб присвоит его к стринг.
А зачем int присваивать string? Чтобы потом вопросы на форуме задавать?
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
29.04.2014, 19:39  [ТС] 14
Цитата Сообщение от alsav22 Посмотреть сообщение
Не в этом дело. Вам предложили вариант, чтобы код нормально работал. Реакция такая:
Прости но. Как тебе понравится если за тебя кто та будет жевать еду?
Без обид только. Когда я получаю готовый код чтоб использовать в программе я чувствую себя так же.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:41 15
Цитата Сообщение от Altair42 Посмотреть сообщение
Запомни "n" в конец вектора при вводе
Где там вектор, и где там запомни? Читайте дальше книгу.
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
29.04.2014, 19:41  [ТС] 16
Цитата Сообщение от alsav22 Посмотреть сообщение
А зачем int присваивать string? Чтобы потом вопросы не форуме задавать?
Я учусь. И должен экспериментировать. Если бы я не присвоил инт к стирнг не узнал бы что итератор может работать так. А спросил на форуме чтоб утвердит свое знание. Если просто везение что это сработало?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:42 17
Цитата Сообщение от Altair42 Посмотреть сообщение
Как тебе понравится если за тебя кто та будет жевать еду?
Разжёвывание - это объяснение кода, чего вы и хотите. Не хотите разжёвывания - сами разбирайтесь, как код работает, пользы будет больше.
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
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, Мне кажется вы сердитесь Вот мы обсуждаем элементы кода. Вот это объяснение. А готовый код иногда кажется... как сказать. Как будто я только учусь водит машину мне дали управлять самолетом.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.04.2014, 19:56 19
Вот мой код:
C++
1
2
std::cin.clear();
while (std::cin.get() != '\n');
Цитата Сообщение от alsav22 Посмотреть сообщение
Где там вектор, и где там запомни?
Или вы свой код не понимаете?
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
29.04.2014, 20:03  [ТС] 20
Я очень любознательный. Люблю "тыкать куда попало" чтоб посмотреть что будет. Так и учусь. Часто возникают вопросы что? и почему? которые не редко бесит окружающих. Прошу понять и жаловать

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


1 std::cin.clear();
2 while (std::cin.get() != '\n');
1 - как я понял очищает буфер обмена?
2 - продолжает цикл ока не будет введен энтер?
0
29.04.2014, 20:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2014, 20:03
Помогаю со студенческими работами здесь

Объявление внутри цикла или вне его?
Мне всегда казалось что если создать переменную до цикла и просто реассайнить ей ссылки, то это...

Как из цикла вывести данные для другого цикла?
Вообщем такая фигня... Как из цикла вывести данные для другого цикла? а то он не видит Пример...

Как использовать увеличенную переменную -n++ то вне функции
сли я хочу использовать увеличенну переменную -n++ то как мне ее использовать вне функции? я...

Как сделать переменную, инициализированную в цикле for, досупную вне этого цикла?
Здравствуйте. Подскажите как сделать чтобы переменная которая была инициализированна в цикле for...


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

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru