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

организовать цикл - C++

Восстановить пароль Регистрация
 
Valery_
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 101
10.11.2009, 11:16     организовать цикл #1
Пожалуйста помогите организовать цикл:

while ((A!+a) && (A!+b))
{
далее подряд идут 4 операции
}
if A=a {....}
else {....}

Нужно чтобы выход из цикла был как выполнится условие. В данном случае даже если условие выполнено - все равно идет проверка остальных условий до конца цикла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
10.11.2009, 11:19     организовать цикл #2
несовсем понял что ты хочешь.. но...
используй либо цикл do...while() или оператор выхода из цикла break;

Добавлено через 1 минуту
или ты хочешь в середине цикла иметь возможность выйти? тогда break;
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.11.2009, 11:26     организовать цикл #3
Цитата Сообщение от Valery_ Посмотреть сообщение
Нужно чтобы выход из цикла был как выполнится условие.
C
1
while ((A!+a) && (A!+b) && A!=a)
хотя если честно не очень понятна первая часть условия: (A!+a) && (A!+b)
Valery_
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 101
10.11.2009, 11:33  [ТС]     организовать цикл #4
ошибся прото в условии while ((A!=a)&&(A!=b))
чтобы не писать длинный код - вот просто упрощение:

{
A=A/2;
A=A/4;
A=A/8;
A=A/16;
}
нужно выйти как только условие будет выполнено. В реальности тут опрас ком порта на разных скоростях. И как только будет получен ответ - надо выйти и его обработать не продолжая дальнейший опрос чтобы сохранились DCB а момент получения ответа так как в зависимости от ответа дальше будут идти еще действия с портом на той же скорости
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
10.11.2009, 11:40     организовать цикл #5
Valery_, тебя не понять. Приведи цикл свой. И напиши условие, при котором должен осуществляться выход.
Valery_
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 101
10.11.2009, 11:53  [ТС]     организовать цикл #6
вот цикл
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
char A[256]; // буффер обмена с портом
char B[3]; - буффер обмена
char a[1]={0xFA} // костанта
char b[1]={0x3D}
 
while (( A[0]!=a[0])&&(A[0]!=b[0])
 
        BuildCommDCB("baud=19200 parity=N data=8 stop=1", &dcbCommPort);
        SetCommState(hComm, &dcbCommPort);
        WriteFile(hComm, B, 3, &BytesWrite, NULL);
        ReadFile(hComm, А, 256, &BytesRead, NULL);
 
        BuildCommDCB("baud=38400 parity=N data=8 stop=1", &dcbCommPort);
        SetCommState(hComm, &dcbCommPort);
        WriteFile(hComm, B, 3, &BytesWrite, NULL);
        ReadFile(hComm, А, 256, &BytesRead, NULL);
 
        BuildCommDCB("baud=57600 parity=N data=8 stop=1", &dcbCommPort);
        SetCommState(hComm, &dcbCommPort);
        WriteFile(hComm, B, 3, &BytesWrite, NULL);
        ReadFile(hComm, А, 256, &BytesRead, NULL);
 
        BuildCommDCB("baud=115200 parity=N data=8 stop=1", &dcbCommPort);
        SetCommState(hComm, &dcbCommPort);
        WriteFile(hComm, B, 3, &BytesWrite, NULL);
        ReadFile(hComm, А, 256, &BytesRead, NULL);
 
}
Далее ибет обработка If A[0]=a[0] {................}
else {.......................}

нужно выйти из цикла как только будет получен правильный ответ из порта. Не продолжая дальнейшее сканирование.
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
10.11.2009, 11:58     организовать цикл #7
Valery_, у тебя и в коде после while не хватает ) { ?

Добавлено через 46 секунд
Цитата Сообщение от Valery_ Посмотреть сообщение
как только будет получен правильный ответ из порта.
где проверка на правильный ответ из порта?
Valery_
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 101
10.11.2009, 11:59  [ТС]     организовать цикл #8
я не копировал код так как он большой. там в реальности еще рассчет контрольой суммы и формирование строки отправки. просто набрал укороченный и в спешке сделал пару ошибок. Но вопрос по выходу их цикла а не по {} ()
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
10.11.2009, 12:01     организовать цикл #9
Цитата Сообщение от Valery_ Посмотреть сообщение
while (( A[0]!=a[0])&&(A[0]!=b[0])
BuildCommDCB("baud=19200 parity=N data=8 stop=1", &dcbCommPort);
SetCommState(hComm, &dcbCommPort);
WriteFile(hComm, B, 3, &BytesWrite, NULL);
ReadFile(hComm, А, 256, &BytesRead, NULL);

// проверка

BuildCommDCB("baud=38400 parity=N data=8 stop=1", &dcbCommPort);
SetCommState(hComm, &dcbCommPort);
WriteFile(hComm, B, 3, &BytesWrite, NULL);
ReadFile(hComm, А, 256, &BytesRead, NULL);

// проверка

BuildCommDCB("baud=57600 parity=N data=8 stop=1", &dcbCommPort);
SetCommState(hComm, &dcbCommPort);
WriteFile(hComm, B, 3, &BytesWrite, NULL);
ReadFile(hComm, А, 256, &BytesRead, NULL);

// проверка

BuildCommDCB("baud=115200 parity=N data=8 stop=1", &dcbCommPort);
SetCommState(hComm, &dcbCommPort);
WriteFile(hComm, B, 3, &BytesWrite, NULL);
ReadFile(hComm, А, 256, &BytesRead, NULL);
}
я правильно проверки раставил?

Добавлено через 1 минуту
Цитата Сообщение от Valery_ Посмотреть сообщение
Но вопрос по выходу их цикла
и ответ был дан:

Цитата Сообщение от Monte-Cristo Посмотреть сообщение
оператор выхода из цикла break;
просто можешь вставить в любом месте цикла

C++
1
if (/* некое условие по которому нужно выйти из цикла */) break;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2009, 12:03     организовать цикл
Еще ссылки по теме:

C++ Организовать список
C++ Организовать цикл
Как организовать цикл здесь? C++
Организовать цикл do/while, который принимает целые числа с клавиатуры и вычитает их из 10000 C++
Организовать цикл худения и кормежки жирафа C++

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

Или воспользуйтесь поиском по форуму:
Valery_
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 101
10.11.2009, 12:03  [ТС]     организовать цикл #10
спасибо
заработало
Yandex
Объявления
10.11.2009, 12:03     организовать цикл
Ответ Создать тему
Опции темы

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