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

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

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

Комментарии к функции - C++

02.04.2013, 15:53. Просмотров 500. Ответов 10
Метки нет (Все метки)

Программа меняет в списке элемент на ближайший следующий за ним, который больше его. Если такого элемента нет то заменяет нулем.
Не могу разобраться, какие действия выполняются в функции maxNeighbour.
Помогите прокомментировать, пожалуйста.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "stdafx.h" 
#include "conio.h" 
#include <iostream> 
 
using namespace std; 
 
void maxNeighbour( int *table, int size ) 
{ 
 int *nоninit = new int[size*2], q = 0; 
 
 for ( int i = 0; i < size; ++i ) 
 { 
 while ( q > 0 ) 
 { 
 if ( table <= noninit[q-1] ) break; 
 table[noninit[q-2]] = table; 
 q -= 2; 
 } 
 q += 2; 
 noninit[q-1] = table; 
 noninit[q-2] = i; 
 } 
 
 while ( q > 0 ) 
 { 
 table[noninit[q-2]] = 0; 
 q -= 2; 
 } 
 
 delete[] noninit; 
} 
 
void main( ) 
{ 
 int table[] = { 1, 3, 2, 5, 3, 4 }; 
 int tsize = 6; 
 int k; 
 for ( k = 0; k < tsize; ++k ) cout << table[k] << " "; 
 cout << endl; 
 
 maxNeighbour( table, tsize ); 
 
 for ( k = 0; k < tsize; ++k ) cout << table[k] << " "; 
 cout << endl; 
 getch(); 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2013, 15:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Комментарии к функции (C++):

Напишите комментарии к строковой функции - C++
char* substrdel (char *str, char *substr, int *substr_flag) char *substr_of_str; int i; substr_of_str=strstr(str,substr); if...

Удалить из строки комментарии вида '/* ... */". Игнорировать вложенные комментарии. - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; using namespace std; int main(int argc, char *argv) { ...

Удалить из строки комментарии вида '/* . */". Игнорировать вложенные комментарии - C++
Всем привет! есть строка вида : char str=&quot;abc/*111/*def/*222*/ghi*/333*/jkl&quot;; нужно получить abc /*def ghi*/ jkl Реально ли так...

Комментарии - C++
Народ, нужны комментарии к строкам этой программы(типа что означают, что делают) Выручите... #include &lt;iostream.h&gt; #include &lt;string.h&gt; ...

Комментарии - C++
Добрый вечер. В интернете нашел код сортировки слиянием.Сам смог разобрать только int main(). Напишите пожалуйста комментарии к int...

Комментарии - C++
Доброй ночи, одолжил у друга графическую программу написанную на языке С с использованием библиотеки graphics.h , очень хочу в ней...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
02.04.2013, 17:04 #2
а код рабочий?
0
Norfolkrussia
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 14
02.04.2013, 17:11  [ТС] #3
Да, полностью работает.
0
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
02.04.2013, 17:17 #4
может чего-то дописать забыл?
в этой строке:
C++
1
if ( table <= noninit[q-1] ) break;
0
Norfolkrussia
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 14
02.04.2013, 17:25  [ТС] #5
Да если б код мой был. Мне надо помочь разобраться в нем. Не поможешь прокомментировать как там что работает в этой функции, ну и дополнить, если что-то не так. Хотя программу тестил работает как надо.
0
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
02.04.2013, 17:56 #6
не может она работать нельзя сравнивать указатель на массив с целым числом,в зависимости от того что должно быть тут table[?] она может работать по разному

Добавлено через 25 минут
то что код переписан с тетрадки или учебника понятно по встречающимся русским символам в коде,перепишите всё символ в символ и постараемся помочь.
0
Norfolkrussia
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 14
02.04.2013, 18:39  [ТС] #7
http://forum2007.algolist.ru/showfla...530/Main/10867
Вот отсюда взял код.
0
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
02.04.2013, 20:56 #8
никогда такого не делал взгляни подойдёт?
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
 
using namespace std;
 
void maxNeighbour( int *table, int size )//в функцию передайтся 
// массив int,переменная size(если size не является размером массива функция не
//будет выполняться корректно)
{
    int *noninit = new int[size*2], q = 0;/*выделяем память под
    массив типа int(так как в массив записывается значения элементов
     и их индекс размер массива умножаем на 2),инициализируем переменную q
    (используется как счётчик)*/
 
    for ( int i = 0; i < size; ++i )/*проход по элементам массива table
    поиск и замена элементов */
    {
        while ( q > 0 )/*при первой итерации цикла for уcловие=false
    соответственно цикл пропускается и выполняется код следующий за циклом
    при последующих итерациях выполняется следующий код*/
        {
            if ( table[i] <= noninit[q-1] ) break;/*выходим из цикла 
            если table[i] больше table[noninit[q-2]]*/ 
            table[noninit[q-2]] = table[i];
            /*если меньше заменяем все элементы до table[i] 
            которые меньше table[i] на значение table[i]*/
            q -= 2;//переходим к предыдущему элементу 
           
        }
        q += 2;
        noninit[q-1] = table[i];//инициализируется элемент q-1 массива
        //noninit элементом i массива table
        noninit[q-2] = i; //записываем в массив noninit индекс элемента  
    }
 
    while ( q > 0 )/*если после циклов остались элементы не соответствующие 
    условию то их индексы записаны в массиве noninit при это индекс<=q,
    индекс-четное число*/
    {
        table[noninit[q-2]] = 0;
        q -= 2;
    }
 
    delete[] noninit;
}
 
int main( )
{
    int table[] = { 1, 3, 2, 5, 3, 4 };
    const int tsize = sizeof( table ) / sizeof( table[0] );
 
    int k;
    for ( k = 0; k < tsize; ++k ) cout << table[k] << " ";
    cout << endl;
 
    maxNeighbour( table, tsize );
 
    for ( k = 0; k < tsize; ++k ) cout << table[k] << " ";
    cout << endl;
    system("pause");
}
1
Norfolkrussia
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 14
02.04.2013, 21:37  [ТС] #9
ijonhson, Спасибо большое. Теперь все стало куда более понятно
0
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
02.04.2013, 21:48 #10
и зачем было вручную переписывать весь код
1)дольше
2)наделал ошибок
почему не выделить текст и ctrl+c ctrl+v или правой кнопкой мыши->копировать ->вставить
0
Norfolkrussia
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 14
02.04.2013, 21:53  [ТС] #11
Да я просто пока тестил, немного поменял его под свои нужды. Потом лень было снова ссылку на исходник искать и попытался придать первозданный вид коду, видимо удалил немного лишнего.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2013, 21:53
Привет! Вот еще темы с ответами:

Комментарии - C++
Есть такая вот программа: #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; ...

Комментарии - C++
Напишите комментарии к программе. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; void main() { char s, tbw, tew,...

Комментарии - C++
Добрый вечер! Если у кого то есть время и желание помочь, просьба прокоментировать строчки, вот в таком коде : #include...

Комментарии - C++
Ребят,если не сложно, закомментируйте вот это,пожалуйста #include &quot;stdafx.h&quot; #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.04.2013, 21:53
Ответ Создать тему
Опции темы

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