Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Norfolkrussia
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 14
1

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

02.04.2013, 15:53. Просмотров 638. Ответов 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
Ответы с готовыми решениями:

Напишите комментарии к строковой функции
char* substrdel (char *str, char *substr, int *substr_flag) char...

Удалить из строки комментарии вида '/* ... */". Игнорировать вложенные комментарии.
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; using namespace...

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

Комментарии
Ребят,если не сложно, закомментируйте вот это,пожалуйста #include...

Комментарии
Доброй ночи, одолжил у друга графическую программу написанную на языке С с...

10
ijonhson
47 / 47 / 15
Регистрация: 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 / 15
Регистрация: 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 / 15
Регистрация: 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 / 15
Регистрация: 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 / 15
Регистрация: 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
02.04.2013, 21:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2013, 21:53

Комментарии
Напишите комментарии к программе. #include &lt;stdio.h&gt; #include &lt;conio.h&gt;...

Комментарии
Есть такая вот программа: #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include...

Комментарии
Народ, нужны комментарии к строкам этой программы(типа что означают, что...


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

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

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