С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
-8 / 0 / 0
Регистрация: 23.01.2011
Сообщений: 52

Комментарии к программе

22.12.2011, 06:06. Показов 2072. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
-------------------------------------------------------------------------------------------------
Условие:
Удалить из массива последний отрицательный элемент. Если такого нет сдвинуть все элементы на х вправо.
--------------------------------------------------------------------------------------------------
Напишите пожалуйста комментарии к функциям.
Программа:
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
void out(int * a, int n) {
 
        for (int i=0; i<n; i++)
                std::cout << a[i] << ' ';
 
        std::cout << '\n';
 
}
 
void shiftR(int * a, int n, int v) {
 
        int * buf = new int[v];
 
        memmove(buf,a+n-v,v*sizeof(int));
 
        memmove(a+v,a,(n-v)*sizeof(int));
 
        memmove(a,buf,v*sizeof(int));
 
        delete[] buf;
 
}
 
void delPos(int * a, int n, int pos) {
 
        if (pos!=n-1)
                memmove(a+pos,a+pos+1,(n-pos-1)*sizeof(int));
 
        a[n-1]=0;
 
}
 
int retLastNegPos(int * a, int n) {
        for (int i=n-1; i>=0; i--)
                if (a[i]<0) return i;
 
        return -1;
}
 
int main() {
 
        int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8}; // -4,-9,4,5,4,-4,5,3 };
        int size  = sizeof(arr) / sizeof(arr[0]);
 
        int p;
 
        out(arr,size);
 
        if ((p=retLastNegPos(arr,size))!=-1)
                delPos(arr,size,p);
        else
                shiftR(arr,size,1);
 
        out(arr,size);
 
 
 
        getchar();
        return 0;
}
Добавлено через 20 минут
Help!

Добавлено через 14 часов 50 минут
Как я понимаю помощи ждать бесполезно?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.12.2011, 06:06
Ответы с готовыми решениями:

Комментарии к программе
привет всем. помогите, пожалуйста, разобраться в работе программы. вот код #include &lt;iostream&gt; #include &lt;ctime&gt; ...

Комментарии к программе
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; /* оболочка strcmp(const char*, const char*) для функции qsort */ ...

Комментарии к программе
нужна помощь с комментариями, желательно к каждой строчке #include &lt;stdio.h&gt; /*Подключение библиотеки stdio.h*/ #include...

4
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.12.2011, 06:10
Цитата Сообщение от krexx Посмотреть сообщение
Как я понимаю помощи ждать бесполезно?
здесь просто нечего комментировать
0
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
22.12.2011, 06:16
krexx, я же вам написал программу
В ЭТОЙ ТЕМЕ которая вам делает все что вам надо с комментариями чуть ли не в каждой строке.
Вы бы хоть написали что вас там не устроило.
1
-8 / 0 / 0
Регистрация: 23.01.2011
Сообщений: 52
23.12.2011, 00:56  [ТС]
greeezz, Спасибо большое, но меня попросили написать комментарии именно к этой задаче, которая находится в этой теме!

Добавлено через 1 минуту
Да, и в этой программе похоже не задействованы функции.
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
61
62
63
64
65
66
67
68
69
70
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
int main() {
 
        const int size = 10;
        int myArray[size];
        bool err = false;
        int x; // для сдвига массива впроаво
        int newSize; // пользователь может ввести меньше чем SIZE цифр
        int lastNegativIndex = -1; // у массива не бывает отрицательных индексов.
                                                           // поэтому если значение этой переменной
                                                           // останется равное -1 то отрицательных элементоа нет
 
        cout << "Please enter " << size << " digits separated by space\n>";
 
        //читаем цифры предоставленные пользователем и сразу проверяем есть ли отрицательные.
        //если есть то сохраняем индекс последнего встретившегося отрицательного элемента
        //выполнения цикла происходит пока не достигнут предел массива или не достигнут конец строки
        for (int i = 0; i < size && cin.peek() != '\n'; ++i) {
                //если от пользователя получен символ не являющийся целым числом то выходим из цикла
                //и сообщаем пользователю об ошибке
                if (!(cin >> myArray[i])) {
                        err = true;
                        break;
                }
                if (myArray[i] < 0) {
                        lastNegativIndex = i;
                }
                newSize = i + 1;
        }
        if (err) {
                cout << "Provided number is incorrect" << endl;
        } else {
                //если найден отрицательный элемент
                if (lastNegativIndex > -1) {
                        cout << "Last negative element is: " << myArray[lastNegativIndex] << endl;
                        //удаляем его смещая все элемены справа от него на 1 в лево
                        //на место последнего записываем 0
                        for (int i = lastNegativIndex; i < newSize; ++i) {
                                if (i == newSize - 1) {
                                        myArray[i] = 0;
                                } else {
                                        myArray[i] = myArray[i + 1];
                                }
                        }
                } else {
                        //выполняем смещение всех элементов массива в право на Х
                        //сдвиг проще выполнять начиная с крайнего правого элемента
                        cout << "Please provide the offset value ";
                        if (cin >> x && x > 0) {
                                for (int i = newSize - 1; i >= 0; --i) {
                                        if (i < x) {
                                                myArray[i] = 0;
                                        } else {
                                                myArray[i] = myArray[i - x];
                                        }
                                }
                        }
                }
                //печатаем результат
                for (int i = 0; i < newSize; ++i) {
                        cout << myArray[i] << " ";
                }
        }
 
        return 0;
}
Добавлено через 21 минуту
Ребята очень срочно нужны комментарии к этой программе!
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
void out(int * a, int n) {
 
        for (int i=0; i<n; i++)
                std::cout << a[i] << ' ';
 
        std::cout << '\n';
 
}
 
void shiftR(int * a, int n, int v) {
 
        int * buf = new int[v];
 
        memmove(buf,a+n-v,v*sizeof(int));
 
        memmove(a+v,a,(n-v)*sizeof(int));
 
        memmove(a,buf,v*sizeof(int));
 
        delete[] buf;
 
}
 
void delPos(int * a, int n, int pos) {
 
        if (pos!=n-1)
                memmove(a+pos,a+pos+1,(n-pos-1)*sizeof(int));
 
        a[n-1]=0;
 
}
 
int retLastNegPos(int * a, int n) {
        for (int i=n-1; i>=0; i--)
                if (a[i]<0) return i;
 
        return -1;
}
 
int main() {
 
        int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8}; // -4,-9,4,5,4,-4,5,3 };
        int size  = sizeof(arr) / sizeof(arr[0]);
 
        int p;
 
        out(arr,size);
 
        if ((p=retLastNegPos(arr,size))!=-1)
                delPos(arr,size,p);
        else
                shiftR(arr,size,1);
 
        out(arr,size);
 
 
 
        getchar();
        return 0;
}
Заранее спасибо!

 Комментарий модератора 
2.14. Чтобы "поднять" тему в разделе и поиске по форуму, используйте осмысленные сообщения, например "Тема/проблема/задача актуальна". Если вы чего-то достигли в решении проблемы на этот момент, сообщите об этом.
0
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
23.12.2011, 01:30
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
//эта функция принемает в качетсве аргументов указатель на int и переменную типа int
//указатель на int это указатель на первый элемент массива
//переменная int n  это размер этого массива
void out(int * a, int n) {
 
    //в цикле печатаем содержание массива отделяя кажый его элемент пробелом
        for (int i=0; i<n; i++)
                std::cout << a[i] << ' ';
        //после печати массива добавляется символ перехода на новую строку
        std::cout << '\n';
 
}
 
 
//int * a - указатель на int (в вашем случае тут массив элементов типа int)
//int n - размер массива
//int v - величина на которую надо выполнить сдвиг
void shiftR(int * a, int n, int v) {
 
        //выделяется память на новый массив элементов типа int  размером v
        int * buf = new int[v];
 
        // void *memmove(void *to, const void *from, size_t count);
        // в вашем случае :
        //buf - адрес в памяти куда надо начть перемещение
        //a+n-v - начаная с v-нного элемента с конца массива будет осуществляться переност в buff
        //v*sizeof(int) - количество символов которое будет перемещено
        memmove(buf,a+n-v,v*sizeof(int));
 
        //a+v  вычисляется адрес куда будет осуществляться перенос
        //a адрес откуда осуществляться перенос
        //(n-v)*sizeof(int)количество символов которое будет перемещено
        memmove(a+v,a,(n-v)*sizeof(int));
 
        //тут по аналогии с первыми двумя
        memmove(a,buf,v*sizeof(int));
 
        //высвобождается память выделенная под массив buf
        delete[] buf;
 
}
 
//int * a, int n, - тоже самое что и в предыдущих функциях
//int pos -  индекс элемента который надо удалить
void delPos(int * a, int n, int pos) {
 
        //если индекс элемента который надо удалить не последний в массиве
        if (pos!=n-1)
            //все элементы после pos смещаются на 1 влево.
                memmove(a+pos,a+pos+1,(n-pos-1)*sizeof(int));
        //на место значения последнего элемента записывается 0 
        a[n-1]=0;
 
}
 
//поиск последего отрицательного элемента.
//поиск выполняется с конца массива
int retLastNegPos(int * a, int n) {
        for (int i=n-1; i>=0; i--)
            //если отрицательный элемент найден то возвращается его индекс
                if (a[i]<0) return i;
        //иначе возвращается -1
        return -1;
}
 
int main() {
        //массив элементов типа int
        int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8}; // -4,-9,4,5,4,-4,5,3 };
        //вычесляется размер массива
        //путем деления всего объема памяти занимаего массивом на объем памаяти
        //занимаемый одним элементом
        int size  = sizeof(arr) / sizeof(arr[0]);
 
        //ну тупо переменная объявлена
        int p;
 
        //вызов функции печатающей массив
        out(arr,size);
 
        //если найден отрицательный элемент
        if ((p=retLastNegPos(arr,size))!=-1)
            //удаляем отрицательный элемент 
                delPos(arr,size,p);
        //иначе
        else
            //смещаем элементы массива
                shiftR(arr,size,1);
 
        //вызов функции печатающей массив
        out(arr,size);
 
 
        //ждем пока пользователь ченить нажмет
        getchar();
        
        //сообщаем системе что программа выполнена успешно
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.12.2011, 01:30
Помогаю со студенческими работами здесь

комментарии к программе
можно написать построчные комментарии к программе? #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include...

комментарии к программе
помогите пожалуйста!!! нужно написать комментарии вот к этой программе (нужны к каждой строчке) и еще подскажите эта программа рабочая? ...

Комментарии к программе
Есть программа которая считывает текст из файла и выводит только предложения,содержащие введенное с клавиатуры слово!!Помогите разобраться...

Комментарии к программе
Здраствуйте. Напишите, пожалуйста, комментарии к строкам, где этих комментариев нет. У меня брат - бездарь. А сам я написать комментарии не...

Напишите комментарии к программе
здесь программа считает кол-во одинаковых цифр и их значение, мне нужно подробное описание шагов. #include &quot;stdafx.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru