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

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

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

Что делает данная строка в коде - C++

20.03.2014, 00:00. Просмотров 260. Ответов 7
Метки нет (Все метки)

Кто может объяснить что делает данная строка в коде, вот функция в которой она используется(корманная сортировка):

C++
1
2
3
4
5
6
7
8
9
10
11
int bucketSort(int* arr, int n)
{
 int buckets[m];
 for (int j=0; j< m; ++j)
 buckets[j]=0;
 for (int i=0; i < n; ++i)
 ++buckets[arr[i]];
 for (int i=0, j=0; j < m; ++j)
 for (int k=buckets[j]; k>0; --k)
 arr[i++]=j;
 }
вот строка которая интересует:

C++
1
 ++buckets[arr[i]];
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2014, 00:00     Что делает данная строка в коде
Посмотрите здесь:

List iterator что делает данная строка кода - C++
for (list&lt;int&gt;::iterator i = sequence.begin(); i != sequence.end(); i++) (*result) &lt;&lt; (i != sequence.begin() ? &quot; &quot; : &quot;&quot;) &lt;&lt; (*i); ...

Что делает эта строка в коде C++? - C++
Сейчас пишу только на C#, когда то писал на delphi. Нужно понять вот эту строку на С++: string szPrice =...

Что делает данная конструкция? - C++
int x = 5; 0 = x + x; Что она делает, как называется и зачем используется?

что делает данная функция - C++
bool isProoved(Node&amp; node) { for (string left : node.left) for (string right : node.right) if (isSingleExpression(left) &amp;&amp;...

Что делает данная функция - C++
Вопрос. Что в данном коде делают функции с 97ой строки, интересует так же что значит FILE *fp и getc(fp) (конкретно что значит fp) ...

Что делает данная программа? - C++
Здравствуйте! Откопал код программы, необходимо узнать, что она конкретно делает. Есть догадки, но хочу удостовериться, что думаю верно....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.03.2014, 00:05     Что делает данная строка в коде #2
C++
1
2
int index = arr[i];
++buckets[index];
sanlex25
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 29
20.03.2014, 00:37  [ТС]     Что делает данная строка в коде #3
объясниете, пожалуйста, более популярно на словах

Добавлено через 1 минуту
добавляет к элементу массива buckets единицу, или не так?

Добавлено через 17 минут
а что делает это строка?

C++
1
++buckets[index];
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
20.03.2014, 00:41     Что делает данная строка в коде #4
Цитата Сообщение от sanlex25 Посмотреть сообщение
а что делает это строка?
элемент массива buckets который лежит по смещению index(indexский элемент массива) увеличивает на 1
т.е
C++
1
++buckets[index];
равносильно, в данном контексте
C++
1
buckets[index]=buckets[index]+1;
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
20.03.2014, 00:43     Что делает данная строка в коде #5
Цитата Сообщение от sanlex25 Посмотреть сообщение
C++
1
++buckets[arr[i]];
данная строка увеличивает arr[i]-й элемента массива buckets на единицу
к примеру если arr[i] = 4 то увеличится 5-й элемент массива buckets (5-й т.к. массив в с начинается с 0-го элемента)

Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
2
int index = arr[i];
++buckets[index];
тоже самое только записанно в более понятной форме, переменная index принимает значение i-го элемента массива arr, затем увеличиваем на единицу элемент с номером index массива buckets
sanlex25
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 29
20.03.2014, 01:31  [ТС]     Что делает данная строка в коде #6
Спасибо, и еще я понимаю чем отличается допустим преинкримент от постинкремента, но вот именно допустим в этом цикле:
C++
1
2
for (int j=0; j< m; ++j)
 buckets[j]=0;
чем будет отличаться от
C++
1
2
for (int j=0; j< m; j++)
 buckets[j]=0;
во второй записи вначале приравняет элемент массива к нулю а после в цикле добавит единицу, а в первой записи вначале добавит в цикле к j единицу, а уже после этого изменит значения элемента массива на ноль, правильно?
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
20.03.2014, 01:48     Что делает данная строка в коде #7
sanlex25,
в данном случае ничем
а вот здесь, например, очень даже
C++
1
2
3
4
int a=1;
arr[a++]=5;// запишет в arr[1] 5 а потом добавит 1 к a 
a=1;
arr[++a]=5; // добавит 1 к а, потом запишет в arr[2] 5
когда изучишь побольше то узнаешь, что пост работает с копией объекта а пред с самим объектом

Добавлено через 1 минуту
Цитата Сообщение от sanlex25 Посмотреть сообщение
во второй записи вначале приравняет элемент массива к нулю а после в цикле добавит единицу, а в первой записи вначале добавит в цикле к j единицу, а уже после этого изменит значения элемента массива на ноль, правильно?
нет будут делать одно и тоже
после точки с запятой, что пред, что пост дадут один результат
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2014, 02:16     Что делает данная строка в коде
Еще ссылки по теме:

Что делает данная программа? - C++
#include &lt;stdarg.h&gt; #include &lt;iostream.h&gt; #include &lt;conio.h&gt; void sum (char *fmt,...) { va_list ap; int a; double b; ...

Пожалуйста подскажите что делает данная функция? - C++
Пожалуйста подскажите что делает данная функция? fflush(stdin);

Ребята! Пожалуйста, объясните что делает данная программа? - C++
#include &quot;stdafx.h&quot; #include&lt;fstream&gt; #include &quot;defs.h&quot; #define S 0 #define B 7 #define PLUS 1.5 #define MINUS 0.5 using...

Что означает данная строка. Указатели - C++
void varInDynamicMemory(){ int *p1; int i=12; float *p2; float f=3.14; double *p3; double d=4.789; cout&lt;&lt;&quot;Исходные значения...


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

Или воспользуйтесь поиском по форуму:
sanlex25
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 29
20.03.2014, 02:16  [ТС]     Что делает данная строка в коде #8
спасибо за информацию
Yandex
Объявления
20.03.2014, 02:16     Что делает данная строка в коде
Ответ Создать тему
Опции темы

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