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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Сформировать последовательность из элементов матрицы http://www.cyberforum.ru/cpp-beginners/thread413552.html
Cоставить программу заданной обработки матрицы целых чисел. В процессе обработки использовать перестановки элементов внутри массива, не создавая новых массивов. Заполнение исходного массива организовать с помощью генератора случайных чисел. Исходный и обработанный массив выводить на экран. Во всех вариантах работать с ЗАДАНОЙ матрицей, не создавая дополнительных массивов и матриц (кроме...
C++ Дан массив из 10 значений, вывести числа в порятке убывания Дан массив из 10 значений, он представляет собой рандомные числа, например 3,2,5,9,1,... Сделать сортировку чисел по убыванию. В программе использовать классы. http://www.cyberforum.ru/cpp-beginners/thread413549.html
C++ Какие буквы встречаются чаще
Помогите решить задачи. Ни чего не получается. Дана строка. состоящая из маленьких латинских букв и пробелов, не более 100 символов. Определить. какие буквы встречается в тексте наиболее часто. B выходной файл необходимо записать самые часто встречающиеся буквы без пробелов в алфавитном порядке. Другая задача. Имеется 3 вазы: две круглые и одна квадратная. Требуется определить можно ли...
Сформировать из cтолбцов матрицы В матрицу С, в которой столбцы C++
Сформировать из cтолбцов матрицы В матрицу С, в которой столбцы расположены в порядке убывания модулей сумм их элементов. в матрице С найти сумму элементов строк с четными номерами, содержащих хотя бы один нулевой элемент. помогите пожалуйста Добавлено через 4 часа 13 минут помогите пожалуйста
C++ Алгоритм реализуемый с помощью вложенных циклов типа ПОКА http://www.cyberforum.ru/cpp-beginners/thread413520.html
Очень прошу помочь решить задачу. Брату задали 6 задач, 5 из них я написал, а вот 6 никак не могу.. Текст задания: Выберите три различные точки из заданного множества точек на плоскости так, чтобы внутри треугольника с вершинами в выбранных точках лежала ровно одна точка. P.S. Написать не могу не из за ошибок в коде, а в принципе не понимаю что требуется. Раздел в задачнике называется как...
C++ Метод Гира 2 порядка Здравствуйте всем, нужна помощь, нужно написать программу которая бы всё это высчитавала и если есть такая возможность формулу показать... а то я не совсем понимаю, что да как т.к. в и-нете не могу найти ничего похожего... Заранее спасибо подробнее

Показать сообщение отдельно
greeezz
272 / 165 / 4
Регистрация: 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;
}
 
Текущее время: 05:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru