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

Цикл почему-то не заканчивается. - C++

Восстановить пароль Регистрация
 
nikitapel
 Аватар для nikitapel
36 / 36 / 4
Регистрация: 20.03.2011
Сообщений: 331
14.04.2011, 19:50     Цикл почему-то не заканчивается. #1
Значит идея такая пока не сгенерируется число =2 цикл будет повторяться. Но когда число =2 цикл все равно не заканчивается. Подскажите почему?
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
#include <iostream>
#include <windows.h>
#include<time.h>
#include <cstdlib>
#include <time.h>
#define randomize() srand((unsigned)time(NULL));
#define random(p) ((int)(rand()*p/RAND_MAX))
using namespace std;
 
int main()
{
int a,i;
srand (clock()); 
i=0;
a=1;
while (a!=2) {
int a = rand()%3 + 1; // Случайное число.
cout<<a <<endl;
Sleep(0);
i=i+1; 
}
cout<<i <<endl;
system("Pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 19:54     Цикл почему-то не заканчивается. #2
а в условии цикла не изменяется.

Добавлено через 26 секунд
А вот а в строке 17 изменяется.

Добавлено через 59 секунд
Почитайте про область видимости переменных.
nikitapel
 Аватар для nikitapel
36 / 36 / 4
Регистрация: 20.03.2011
Сообщений: 331
14.04.2011, 20:13  [ТС]     Цикл почему-то не заканчивается. #3
И как тогда сделать?

Добавлено через 17 минут
Так и не понял почему так не работает сделал так
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
#include <iostream>
#include <windows.h>
#include<time.h>
#include <cstdlib>
#include <time.h>
#define randomize() srand((unsigned)time(NULL));
#define random(p) ((int)(rand()*p/RAND_MAX))
using namespace std;
 
int main()
{
int a,i,k;
srand (clock()); 
i=0;
a=1;
k=1;
while (k!=2) {
int a = rand()%101 + 1; // Случайное число.
if (a==100) { k=2;}
cout<<a <<endl;
Sleep(0);
i=i+1; 
}
cout<<i <<endl;
system("Pause");
}
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 20:17     Цикл почему-то не заканчивается. #4
По первому посту:
Строка 16 - используется а, объявленная в строке 12 и инициализированная в строке 15.
Строка 20 - выводится а созданная в строке 18. Это СОВСЕМ ДРУГАЯ а.

Давайте переменным осмысленные имена.
Помимо a,i,k есть ещё многабукафф.
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
14.04.2011, 20:24     Цикл почему-то не заканчивается. #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
#include <iostream>
#include <windows.h>
#include<time.h>
#include <cstdlib>
#include <time.h>
#define randomize() srand((unsigned)time(NULL));
#define random(p) ((int)(rand()*p/RAND_MAX))
using namespace std;
 
int main()
{
int a,i;
srand (clock()); 
i=0;a=0;
do{
 a = rand()%3 + 1; // Ñëó÷Г*Г©Г*îå ÷èñëî.
cout<<a <<endl;
Sleep(70);
i=i+1; 
}while (a!=2);
cout<<i<<" "<<a <<endl;
system("Pause");
}
Yandex
Объявления
14.04.2011, 20:24     Цикл почему-то не заканчивается.
Ответ Создать тему
Опции темы

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