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

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

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

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

20.03.2014, 00:00. Просмотров 273. Ответов 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]];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2014, 00:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что делает данная строка в коде (C++):

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++
Вопрос. Что в данном коде делают функции с 97ой строки, интересует так же что значит FILE *fp и getc(fp) (конкретно что значит fp) ...

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

Что делает данная программа? - 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; ...

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

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

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

C++
1
++buckets[index];
0
ValeryS
Модератор
6708 / 5117 / 482
Регистрация: 14.02.2011
Сообщений: 17,194
20.03.2014, 00:41 #4
Цитата Сообщение от sanlex25 Посмотреть сообщение
а что делает это строка?
элемент массива buckets который лежит по смещению index(indexский элемент массива) увеличивает на 1
т.е
C++
1
++buckets[index];
равносильно, в данном контексте
C++
1
buckets[index]=buckets[index]+1;
0
kiborgdelto
71 / 73 / 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
0
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 единицу, а уже после этого изменит значения элемента массива на ноль, правильно?
0
ValeryS
Модератор
6708 / 5117 / 482
Регистрация: 14.02.2011
Сообщений: 17,194
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 единицу, а уже после этого изменит значения элемента массива на ноль, правильно?
нет будут делать одно и тоже
после точки с запятой, что пред, что пост дадут один результат
1
sanlex25
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 29
20.03.2014, 02:16  [ТС] #8
спасибо за информацию
0
20.03.2014, 02:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2014, 02:16
Привет! Вот еще темы с ответами:

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

Пожалуйста подскажите что делает данная функция? - 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++
Что эта программа делает и если можно комментарии к ней (C++) #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int pro(int x, int y, int s) { ...


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

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

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