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

с кодом С++ проблемы...пожалуйста... - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как открыть файл для чтения в БИНАРНОМ режиме? http://www.cyberforum.ru/cpp-beginners/thread190293.html
Друзья! Файл, который надо открыть БИНАРНЫЙ, в нём два байта. Содержание файла 33 20 00 00 имя "input" Вот по логике вещей пра должна его в бинарном режиме открыть и число 33 20 записать в переме6нную x Как она это число будет трактовать- дело второе уже. НУ раз это число типа int и учитывая, что 33 и 20 это шестнадцатеричные числа, тогда наверное число будет 00002033h или по-простому...
C++ MPI_Recv Добрый день! Я с таким заданием: нужно написать небольшой, простенький пример, демонстрирующий, как работает функция MPI_Recv. Подскажите, пожалуйста, какой можно привести пример, и в чём он может заключаться. Заранее спасибо за советы. http://www.cyberforum.ru/cpp-beginners/thread190286.html
Строка C++
Спасите.... Написать нужно... Преобразовать строку так, чтобы все буквы в ней были отсортированы по возрастанию.
Двумерный массив C++
Помогите пожалуйста с С++.... Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки и столбцы, первые элементы которых совпадают. Листинг...
C++ Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие в файл F. Числа в файле G должны следовать http://www.cyberforum.ru/cpp-beginners/thread190261.html
Помогите доздать с++) вот задание: Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие в файл F. Числа в файле G должны следовать в порядке убывания без пов¬торений. учусь в кодеблоксе. помогите с --Числа в файле G должны следовать в порядке убывания без пов¬торений. #include <stdio.h> #include <stdlib.h> { int main() int number;
C++ Графы 1. Осуществите генерацию матрицы смежности M(G) неориентированного графа G, где n – порядок помеченного графа. Пример алгоритма генерации матрицы смежности графа, состоящего из N Вершин на языке С++. int M; //Матрица смежности int i,j; //Переменные-счётчики srand( (unsigned)time( NULL ) ); //устанавливаем начальную точку генерации //случайных чисел в зависимости от... подробнее

Показать сообщение отдельно
Alexandr93
2 / 2 / 0
Регистрация: 09.11.2010
Сообщений: 65
13.11.2010, 00:04  [ТС]     с кодом С++ проблемы...пожалуйста...
Вот вся лабораторная.

Лабораторная работа № 10
"Динамические массивы"
Цель: Организация динамических массивов.
1. Краткие теоретические сведения
При традиционном определении массива:
тип имя_массива [количество_элементов];
общее количество памяти, выделяемой под массив, задается определением и равно количество_элементов * sizeof(тип).
Но иногда бывает нужно чтобы память под массив выделялась для решения конкретной задачи, причем ее размеры заранее не известны и не могут быть фиксированы.
Формирование массивов с переменными размерами можно организовать с помощью указателей и средств динамического распределения памяти двумя способами:
1) с использованием библиотечных функций, описанных в заголовочных файлах alloc.h и stdlib.h (стандартный Си);
2) с использованием операций new и delete (Си++).
1.1. Формирование динамических массивов с использованием библиотечных функций
Для выделения и освобождения динамической памяти используются функции
Функция Прототип и краткое описание
malloc void * malloc(unsigned s)
Возвращает указатель на начало области динамической памяти длиной в s байт, при неудачном завершении возвращает NULL
calloc void * calloc(unsigned n, unsigned m)
Возвращает указатель на начало области динамической памяти для размещения n элементов длиной по m байт каждый, при неудачном завершении возвращает NULL
realloc void * realloc(void * p, unsigned s)
Изменяет размер блока ранее выделенной динамической памяти до размера s байт, р- адрес начала изменяемого блока, при неудачном завершении возвращает NULL
free void *free(void p)
Освобождает ранее выделенный участок динамической памяти, р – адрес первого байта
Пример:
Функция для формирования одномерного динамического массива
C++
1
2
3
4
5
6
7
8
int * make_mas(int n)
(
int *mas;
mas=(int*)malloc(n*sizeof(int));
for(int i=0;i<n;i++)
mas[i]=random(10);
return mas;
}
Для выделения памяти используется функция malloc, параметром которой является размер выделяемого участка памяти равный n*sizeof(int). Так как функция malloc возвращает нетипизированный указатель void*, то необходимо выполнить преобразование полученного нетипизированного указателя в указатель int*.
Освободить выделенную память можно функцией free(mas).

1.2. Формирование динамических массивов с использованием операций new и delete
Для динамического распределения памяти используются операции new и delete. Операция
new имя_типа
или
new имя_типа инициализатор
позволяет выделить и сделать доступны свободный участок памяти, размеры которого соответствуют типу данных, определяемому именем типа. В выделенный участок заносится значение определяемое инициализатором, который не является обязательным параметром. В случае успешного выделения памяти операция возвращает адрес начала выделенного участка памяти, если участок не может быть выделен, то возвращается NULL.
Примеры:
1)
C++
1
2
int *i;
   i=new int(10);
2)
C++
1
2
float *f;
   f=new float;
3)
C++
1
    int *mas=new[5];
В примерах 1, 2 показано как выделить память под скалярные переменные, пример 3 показывает выделение памяти под массив переменных.
Операция delete указатель освобождает участок памяти ранее выделенный операцией new.
Пример:
Функция для формирования двумерного динамического массива
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int ** make_matr(int n)
{
int **matr;
int i,j;
matr=new int*[n];
for (i=0;i<n;i++)
{
matr[i]=new int[n];
for (j=0;j<n;j++)
matr[i][j]=random(10);
}
return matr;
}
При формировании матрицы сначала выделяется памяти для массива указателей на одномерные массивы, а затем в цикле с параметром выделяется память под n одномерных массивов.

**matr

*matr[1] *matr[2] *matr[3] . . . . *matr[n]

Чтобы освободить память необходимо выполнить цикл для освобождения одномерных массивов
C++
1
2
for(int i=0;i<n;i++)
delete matr[i];
После этого освобождаем память на которую указывает указатель matr
C++
1
delete [] matr;
2. Постановка задачи
Написать программу, в которой создаются динамические массивы и выполнить их обработку в соответствии со своим вариантом.
3. Порядок выполнения работы
1. Ввести размер массива;
2.Сформировать массив с помощью операции new или библиотечных функций malloc (calloc);
3.Заполнить массив (можно с помощью датчика случайных чисел);
4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы);
5.Напечатать массив(ы)-результат(ы);
6.Удалить динамические массивы с помощью операции delete или библиотечной функции free.

4. Варианты заданий
7.Сформировать двумерный массив. Удалить из него столбец с заданным номером;

5. Содержание отчета
1. Постановка задачи.
2. Функции для формирования массива, печати массива, преобразования массива, удаления массива.
3. Результаты выполнения работы.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru