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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
#1

Циклы - C++

25.07.2012, 22:35. Просмотров 2062. Ответов 68
Метки нет (Все метки)

Нужна помощь с циклом.Есть определенный массив из которого необходимо вытащить данные и поставить в цикл, так же необходимо делать проверку, вот что у меня получилось:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
LPDIRECT3DTEXTURE9 values[4];
    values[0] = Green; 
    values[1] = Red; 
    values[2] = Yellow; 
    values[3] = Blue; 
 
    while (GetAsyncKeyState(VK_NUMPAD1) &1 )
     {
         for (int i=0; i <= 4; ++i)
        {
        x = values[i];
        bFugas = !bFugas;
        }
        
 
     }
Т.Е при нажатии на num1 , должна происходить смена цвета)
P.S Надеюсь написал понятным языком)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2012, 22:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Циклы (C++):

Заменить в коде циклы for на циклы while - C++
int i, j, n; bool a; cin &gt;&gt; i &gt;&gt; n; for (i; i&lt;n; i++) { a = true; for (j = 2; j &lt;= i / 2; j++) if ((i%j) == 0) a =...

Циклы do и while - C++
Приветсвую всех. Прошу помощи в решении двух задач: 1.Составить программу для определения, является ли натуральное число k степенью...

Циклы - C++
1)Используя перебор значений найти все числа из диапазона от n до m, которые при возведении в квадрат дают палиндром 2)В соревнованиях...

Циклы - C++
Дан номер телевизионного канала(от 1 до 5). Вывести на экран наиболее популярные программы заданного канала.

циклы - C++
вывести на экран все целые числа из диапазона от А до Б, кратные трем (А&lt;=B)

циклы - C++
помогите вывести таблицу 4 3 2 1 0 3 2 1 0 2 1 0 1 0 0

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 12:51 #31
Если так написать:
C++
1
2
3
4
5
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
        x = Red;
        bFugas = !bFugas;
    }
, то цвет меняется?
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 12:57  [ТС] #32
Цитата Сообщение от alsav22 Посмотреть сообщение
Если так написать:
C++
1
2
3
4
5
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
        x = Red;
        bFugas = !bFugas;
    }
, то цвет меняется?
Нет, не работает.
Я подумал, тут х не нужен вообще) вместо него сразу написать values[i] а дальше уже от этого плясать
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 13:10 #33
Если записать так:
C++
1
2
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
        bFugas = !bFugas;
и так:
C++
1
m_pD3Ddev->SetTexture(0, Red);
, то всё правильно работает? Цвет меняется?
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 13:13  [ТС] #34
Цитата Сообщение от alsav22 Посмотреть сообщение
Если записать так:
C++
1
2
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
        bFugas = !bFugas;
и так:
C++
1
m_pD3Ddev->SetTexture(0, Red);
, то всё правильно работает? Цвет меняется?
Да загорается красным, а при 2 нажатии перестает подсвечивается
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 13:31 #35
Если так:
C++
1
2
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
             bFugas = !bFugas;
и так:
C++
1
m_pD3Ddev->SetTexture(0, values[1]);
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 13:40  [ТС] #36
Цитата Сообщение от alsav22 Посмотреть сообщение
Если так:
C++
1
2
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
             bFugas = !bFugas;
и так:
C++
1
m_pD3Ddev->SetTexture(0, values[1]);
да...
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 14:09 #37
C++
1
2
3
4
5
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
        int i = 1;
        bFugas = !bFugas;
    }
C++
1
m_pD3Ddev->SetTexture(0, values[i]);
И что происходит, если три раза нажать?
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 14:12  [ТС] #38
о5 ошибка, таже самая что и с х
http://www.keepme.ru/upload/previews/2012/07/26/aa6fb96254ca53f0723652d082c2526d.png

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
        int i = 1;
        bFugas = !bFugas;
    }
C++
1
m_pD3Ddev->SetTexture(0, values[i]);
И что происходит, если три раза нажать?
снова включается, сама ф-ия GetAsyncKeyState представляет из себя некий цикл...
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 14:20 #39
Если так:
C++
1
2
3
4
5
6
int i = 3;
    if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
        i = 1;
        bFugas = !bFugas;
    }
C++
1
m_pD3Ddev->SetTexture(0, values[i]);
Добавлено через 2 минуты
о5 ошибка, таже самая что и с х
Эта ошибка возникает до нажатия?
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 14:29  [ТС] #40
Цитата Сообщение от alsav22 Посмотреть сообщение
Если так:
C++
1
2
3
4
5
6
int i = 3;
    if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
        i = 1;
        bFugas = !bFugas;
    }
C++
1
m_pD3Ddev->SetTexture(0, values[i]);
Добавлено через 2 минуты
Эта ошибка возникает до нажатия?
нет при нажатии

Добавлено через 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
28
29
30
31
32
    
    int color=0;
 
 
    while (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
    for(int a=0; a<4;a++)
    {
        color++;
        bFugas = !bFugas;
 
    }
    }
 
 
if (bFugas) 
 { 
     if (Fugas) 
 { 
 DWORD dwOldZEnable; 
 m_pD3Ddev->GetRenderState(D3DRS_ZENABLE,&dwOldZEnable); 
 m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,D3DZB_FALSE); 
 m_pD3Ddev->SetTexture(0,White);
 m_pD3Ddev->DrawIndexedPrimitive(device,BaseVertexIndex,MinVertexIndex,NumVertices,startIndex,primCount); 
 m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,dwOldZEnable); 
 if(color=1)m_pD3Ddev->SetTexture(0,Red);
 if(color=2)m_pD3Ddev->SetTexture(0,White);
 if(color=3)m_pD3Ddev->SetTexture(0,Green);
 if(color=4)m_pD3Ddev->SetTexture(0,Blue);
 if(color=5)m_pD3Ddev->SetTexture(0,Black);
 } 
 }
Что надо исправить?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 14:50 #41
Если эта ошибка возникает до нажатия, значит программа, минуя это:
C++
1
2
3
4
5
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
       int i = 1;
        bFugas = !bFugas;
    }
проходит до этого:
C++
1
m_pD3Ddev->SetTexture(0,values[i]);
и встречает там неинициализированную переменную i. Раз это происходит, значит bFugas в это время не false. Эта переменная может ещё где-нибудь меняться, кроме как здесь?
C++
1
2
3
4
5
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
        int i = 1;
        bFugas = !bFugas;
    }
Добавлено через 5 минут
Цитата Сообщение от Igrom@n Посмотреть сообщение
Что надо исправить?
Надо сначала без циклов передать значение цвета. Если получится, тогда дальше двигаться. Тут знак сравнения нужен, а не присваивания:
C++
1
if(color==1)m_pD3Ddev->SetTexture(0,Red);
Добавлено через 4 минуты
По моему, там цикл вообще не нужен, если и так идёт постоянный опрос нажатия клавиша. Ведь вы сами написали, что
сама ф-ия GetAsyncKeyState представляет из себя некий цикл.
Добавлено через 3 минуты

Не по теме:

Хуже нет, когда нет возможности самому пробовать.



Добавлено через 5 минут
Заход в эту конструкцию HRESULT APIENTRY происходит когда?
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 14:53  [ТС] #42
Цитата Сообщение от alsav22 Посмотреть сообщение
Если эта ошибка возникает до нажатия, значит программа, минуя это:
C++
1
2
3
4
5
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
       int i = 1;
        bFugas = !bFugas;
    }
проходит до этого:
C++
1
m_pD3Ddev->SetTexture(0,values[i]);
и встречает там неинициализированную переменную i. Раз это происходит, значит bFugas в это время не false. Эта переменная может ещё где-нибудь меняться, кроме как здесь?
C++
1
2
3
4
5
if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
        int i = 1;
        bFugas = !bFugas;
    }
Добавлено через 5 минут
Надо сначала без циклов передать значение цвета. Если получится, тогда дальше двигаться. Тут знак сравнения нужен, а не присваивания:
C++
1
if(color==1)m_pD3Ddev->SetTexture(0,Red);
Добавлено через 4 минуты
По моему, там цикл вообще не нужен, если и так идёт постоянный опрос нажатия клавиша. Ведь вы сами написали, что

Добавлено через 3 минуты

Не по теме:

Хуже нет, когда нет возможности самому пробовать.

да, в самом начала задается значение bFugas = false; Это значит что сейчас он выключен.
Заметил, что при a=0 ни горит ничего, при a=1,2 почему то горит черный.а если горит черный, значит он не смотрит на этот участок кода:
C
1
2
3
4
5
if(color=1)m_pD3Ddev->SetTexture(0,Red);
 if(color=2)m_pD3Ddev->SetTexture(0,White);
 if(color=3)m_pD3Ddev->SetTexture(0,Green);
 if(color=4)m_pD3Ddev->SetTexture(0,Blue);
 if(color=5)m_pD3Ddev->SetTexture(0,Black);
Добавлено через 2 минуты
Вам необходим сам исходник??
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 15:08 #43
Цитата Сообщение от Igrom@n Посмотреть сообщение
Вам необходим сам исходник??
Нет, я о другом написал. IDE нужно настраивать. Код исправили? ==

Добавлено через 5 минут
И как вы значение a видите?

Добавлено через 3 минуты
Цикл этот никуда не годится. Мой вам совет, уберите его, вернитесь к if и добейтесь передачи одного цвета через переменную. Потом дальше. Циклы тут только всё путают.
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 15:09  [ТС] #44
Цитата Сообщение от alsav22 Посмотреть сообщение
Нет, я о другом написал. IDE нужно настраивать. Код исправили? ==

Добавлено через 5 минут
И как вы значение a видите?

Добавлено через 3 минуты
Цикл этот никуда не годится. Мой вам совет, уберите его, вернитесь к if и добейтесь передачи одного цвета через переменную. Потом дальше. Циклы тут только всё путают.
Руками перебрал.. Я так понял, что от а ничего не зависит, нажав 1 раз, 1 раз к color и прибавится,
при повторном нажатии это не происходит...
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 15:11 #45
Этот вариант даёт ошибку?
C++
1
2
3
4
5
6
int i = 3;
    if (GetAsyncKeyState(VK_NUMPAD1) &1 )
    {
        i = 1;
        bFugas = !bFugas;
    }

C++
1
m_pD3Ddev->SetTexture(0, values[i]);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2012, 15:11
Привет! Вот еще темы с ответами:

циклы - C++
с точностью е=0.001

Циклы в Cи - C++
Всем привет, в общим столкнулся с проблемой, мне необходимо пробежаться по одной и той же строчке содержащею цифры например 1,2,3,4,5... ...

Циклы - C++
Как написать программу, в которой нужно сложить значения получаемые в цикле? z=sin(\sum_{3}^{10}(a*k+c)) a,c известны

Циклы - C++
Добрый день! Хочу попросить помощи в решении следующей задачи: Условие 1: Напишите программу, рассчитывающую сумму денег, которую вы...


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

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

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