Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
artem611
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 15
#1

Разъяснение работы цикла while() - C++

10.04.2012, 18:18. Просмотров 567. Ответов 10
Метки нет (Все метки)

Всем добрый день. Я начинающий программист, да и к тому же учусь на Java. А тут попался код, на С++, но в нем есть некоторые моенты, которые я не могу понять. Поясните пожалуйста.
Код
nt n;
	vector < vector<int> > g (n, vector<int> (n));
	... чтение графа в матрицу смежности ...

	vector<int> deg (n);
	for (int i=0; i<n; ++i)
		for (int j=0; j<n; ++j)
			deg[i] += g[i][j];

	int first = 0;
	while (!deg[first])  ++first;

еще в коде есть такая запись: if (g[i][j])
Объясните пожалуйста как работает в данном случае while(!deg[first]) и if(g[i][j]), ведь это не булевские выражения

Всем заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2012, 18:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разъяснение работы цикла while() (C++):

Алгоритм работы цикла FOR ? - C++
Правильно ли я понимаю, как работает этот цикл. Постоянно путаюсь. 1. Присваиваются значение в инициализирующем блоке 2. Выполняется...

объясните принцип работы цикла : ? - C++
объясните принцип работы цикла : ?

Не могу разобраться в принципе работы цикла - C++
1. как в данном случае работает цикл for без третьего условия? for(i=0; s ; ) { for(;s&amp;&amp;s==' ';i++); if(s) {....}}2. Чему у нас...

Как жестко задать частоту работы цикла - C++
пишу программу в ней основная работа будет выполнятся в цикле while (условие) { блок инструкций } как сделать так что...

Каково значение переменной после работы цикла - C++
Где то когда то читал, что значение переменной цикла после его окончания неопределено. Но использование такое вроде бы видел. Как...

Проверьте правильность работы цикла вычисления суммы - C++
Ввод N и x с клавиатуры #include &lt;iostream&gt; using namespace std; int main() { setlocale(0, &quot;&quot;); double S = 0; //...

10
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.04.2012, 18:23 #2
Цитата Сообщение от artem611 Посмотреть сообщение
if (g[i][j])
C++
1
if (g[i][j] != 0)
Цитата Сообщение от artem611 Посмотреть сообщение
while (!deg[first])
C++
1
while (deg[first] == 0)
1
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.04.2012, 18:24 #3
В С вообще не было bool, вместо этого использовался int.
C
1
if (a) { //...
Истинно если а != 0, и ложно, если а == 0
В с++ есть bool, но работает он аналогичным образом.
C++
1
2
bool a = 123; //a == 1
bool b = 0; //b == 0
Поэтому
C++
1
!deg[first]
равносильно (!deg[first]) != 0, или, иначе, deg[first] == 0
1
artem611
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 15
10.04.2012, 18:38  [ТС] #4
Спасибо большое. Буду разбираться дальше.

P.S. как оперативно мне ответили. Приятно удивлен)

А, вот еще один момент:
Код
if (deg[i] & 1)
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.04.2012, 18:42 #5
Цитата Сообщение от artem611 Посмотреть сообщение
if (deg[i] & 1)
По смыслу равносильно
C++
1
if ( deg[i] % 2 != 0)
Но более эффективно
0
IPtv
8 / 8 / 0
Регистрация: 10.04.2012
Сообщений: 34
10.04.2012, 18:44 #6
Цитата Сообщение от artem611 Посмотреть сообщение
А, вот еще один момент:
Код
if (deg[i] & 1)
конъюнкция
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
10.04.2012, 18:50 #7
IPtv, это не совсем конъюнкция, это битовая операция. Смысл конечно тот же, но все же.
0
IPtv
8 / 8 / 0
Регистрация: 10.04.2012
Сообщений: 34
10.04.2012, 18:54 #8
Цитата Сообщение от fasked Посмотреть сообщение
IPtv, это не совсем конъюнкция, это битовая операция. Смысл конечно тот же, но все же.
ну дык. товарищу с явой подробности явно не упали, а рисовать таблицу истинности руками влом, а написать "побитовое и" не очень информативно
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
10.04.2012, 18:56 #9
Цитата Сообщение от IPtv Посмотреть сообщение
ну дык. товарищу с явой подробности явно не упали, а рисовать таблицу истинности руками влом, а написать "побитовое и" не очень информативно
Ну дык
Побитовое И
0
IPtv
8 / 8 / 0
Регистрация: 10.04.2012
Сообщений: 34
10.04.2012, 18:57 #10
Цитата Сообщение от fasked Посмотреть сообщение
это всё гугл, скотина
0
artem611
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 15
10.04.2012, 20:30  [ТС] #11
Спасибо ребята. С последним вопросом сам разобрался уже, но все равно спасибо
P.S. тему можно закрывать. Всем еще раз спасибо)
0
10.04.2012, 20:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2012, 20:30
Привет! Вот еще темы с ответами:

Как записать результаты работы цикла в переменную? - C++
Доброго времени суток, я новичок в программировании, мне нужно записать результат данного цикла в переменную, что бы я мог использовать...

Запомнить самую длинную строку и выдать её после окончания работы цикла ввода - C++
2. На вход символьного фильтра подаются строки. Фильтр запоминает самую длинную строку и выдает её после окончания работы цикла ввода.

Разъяснение float f = 1.2F; - C++
Вчера читал статью про C++ и встретил код, написанный следующим методом float f = 1.2F; и пришел в замешательство. Переменная f...

Разъяснение кода - C++
Доброго времени суток, такая проблема, надеюсь поможете безвозмездно. Имеется программа &quot;шифрования&quot; Хочется чтобы спецы объяснили сам...


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

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

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