Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Форма защиты лабораторных работ

Динамическое выделение памяти

 

ОБЩЕЕ ЗАДАНИЕ

Разработать 2 консольных приложения для работы с одномерными массивами (выделять память двумя способами: с помощью функций malloc и операции new). В каждом приложении создать 3 динамических одномерных массива (размерность задаем с клавиатуры) со случайными числами (заполнение организовать в отдельной процедуре). Суммировать соответствующие значения двух массивов в третий. Очистить память.

 

// Комментарий:

Способы работы с динамической памятью:

а) Первый использует семейство функций malloc (free для очистки памяти) (язык C);

идентификатор = (тип_идентификатора*) malloc (sizeof(тип_идентификатора))

 

б) Второй использует операции new и delete

тип_данных *имя_указателя = new тип_данных;

 

#include <iostream>

#include <ctime>

using namespace std;

void vvod_matr(int n, int *m)

{

int i;

for (i=0; i<n; i++)

{

m[i]=rand()/10;

cout << m[i] << ' ';

}

cout << endl;

}

 

int main()

{

srand (time(0));

int N; cout << "Vvedite razmer: "; cin >> N;

 

int *A = new int[N]; // или отдельно int *A; A = new int[N];

int *B; B = new int[N];

int *C = new int[N];

 

vvod_matr(N,A);

vvod_matr(N,B);

for (int i = 0; i < N; i++) {

C[i]=A[i]+B[i];

}

 

for (int i = 0; i < N; i++) cout << " znachenie " << i << " elementa massiva A = " << A[i] << endl;

for (int i = 0; i < N; i++) cout << " znachenie " << i << " elementa massiva B = " << B[i] << endl;

cout <<endl;

for (int i = 0; i < N; i++) cout << " znachenie " << i << " elementa massiva C (SYMMA) = " << C[i] << endl;

 

system("pause");

delete [] A,B,C; // очистка памяти

return 0;

}

-------------------------------------------------------------------

#include <iostream>

#include <ctime>

using namespace std;

void vvod_matr(int n, int *m)

{

int i;

for (i=0; i<n; i++)

{

m[i]=rand()/10;

cout << m[i] << ' ';

}

cout << endl;

}

 

int main()

{

srand (time(0));

int N; cout << "Vvedite razmer: "; cin >> N;

int *p1, *p2;

p1 = (int*) malloc (sizeof(int));

 

int *A = (int*) malloc (sizeof(int*)*N);

int *B; B = (int*) malloc (sizeof(int*)*N);

int *C = (int*) malloc (sizeof(int*)*N);

 

vvod_matr(N,A);

vvod_matr(N,B);

for (int i = 0; i < N; i++) {

C[i]=A[i]+B[i];

}

 

for (int i = 0; i < N; i++) cout << " znachenie " << i << " elementa massiva A = " << A[i] << endl;

for (int i = 0; i < N; i++) cout << " znachenie " << i << " elementa massiva B = " << B[i] << endl;

cout <<endl;

for (int i = 0; i < N; i++) cout << " znachenie " << i << " elementa massiva C (SYMMA) = " << C[i] << endl;

 

system("pause");

free(A); // очистка памяти

free(B);

free(C);

return 0;

}

 


ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ

Форма защиты лабораторных работ

После того, как программа будет успешно откомпилирована, необходимо провести несколько запусков программы с различными начальными параметрами, проанализировать полученные результаты работы написанной программы. В случае правильной работы программы можно защищать ее преподавателю, иначе исправить ошибки и провести повторные запуски программ с теми же и другими начальными параметрами. При защите написанной программы студент должен правильно отвечать на поставленные вопросы преподавателя, ориентироваться в написанной программе, уметь изменять функциональные особенности программы, предвидеть результаты работы программы при различных начальных параметрах.

В соответствии со своим вариантом:

 

// Е_С2_21) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от //0 до 1000. Опишите алгоритм, который находит и выводит среднее арифметическое всех элементов массива, //имеющих нечётное значение. Гарантируется, что хотя бы один такое элемент в массиве есть.
// Е_С2_22) Опишите алгоритм подсчета максимального количества //подряд идущих отрицательных элементов в целочисленном массиве длины 30.
// Е_С2_23) Дан целочисленный массив из 30 элемента, //Элементы массива могут принимать значения от (–20) до 20 - сведения о температуре за каждый день ноября. //Опишите алгоритм, который подсчитывает и выводит максимальную температуру среди дней, //когда были заморозки (температура опускалась ниже нуля). //Гарантируется, что хотя бы один день в ноябре была отрицательная температура.
// Е_С2_36) Дан целочисленный массив из 70 элемента. //Опишите алгоритм, позволяющий найти и вывести //наименьшую нечётную сумму двух соседних элементов массива. //Гарантируется, что в массиве есть соседние элементы с нечётной суммой.
// Е_С2_25) Дан целочисленный массив из 30 элемента, //все элементы которого – неотрицательные числа, не превосходящие 10000. //Опишите алгоритм, который находит и выводит минимальное трехзначное число, //записанное в этом массиве. если таких чисел нет, нужно вывести сообщение «Таких чисел нет».
// Е_С2_26) Дан целочисленный массив из 30 элементов, //все элементы которого – положительные числа, не превосходящие 100. //Опишите алгоритм,, который находит и выводит номер элемента, //имеющего максимальное количество целочисленных делителей //(если таких элементов несколько, то номер любого из них).
// Е_С2_27) Дан целочисленный массив из 40 элемента, //все элементы которого – целые числа в интервале от -500 до 500. //Опишите алгоритм, который находит и выводит находит среднее арифметическое //всех положительных элементов массива, которые кратны первому элементу (делятся нацело на первый элемент). //Гарантируется, что первый элемент массива положительный.
// Е_С2_28) Дан целочисленный массив из 20 элемента, //все элементы которого – целые числа в интервале от -1000 до 1000. //Опишите алгоритм, который находит находит минимальное значение //из всех нечетных элементов массива, которые делятся на 5. //Гарантируется, что хотя бы один такой элемент существует.
// Е_С2_29) Дан целочисленный массив из 30 элемента, //все элементы которого – целые числа в интервале от 0 до 1000. //Опишите алгоритм, позволяющий найти и вывести сумму элементов массива, кратных тринадцати. //Гарантируется, что в исходном массиве есть хотя бы один элемент, значение которого делится на тринадцать.
// Е_С2_30) Дан целочисленный массив из 30 элемента, //все элементы которого – целые числа в интервале от 0 до 1000. //Опишите алгоритм, позволяющий найти среднее арифметическое нечётных трехзначных чисел, //записанных в этом массива. //Если ни одного такого числа нет, нужно вывести сообщение об этом.
// Е_С2_31) Дан целочисленный массив из 30 элемента, //все элементы которого – целые числа в интервале от 0 до 100. //Опишите алгоритм, позволяющий найти произведение элементов массива, //которые имеют чётное значение и не оканчиваются на 0. //Гарантируется, что в исходном массиве есть хотя бы один элемент, //значение которого чётно и не оканчиваются на 0.

--------------------------------------------------

// двумерный

#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

void vvod_matr(int n, int **a)

{

int i,j;

for (i=0; i<n; i++)

{

for (j=0; j<n; j++)

{

a[i][j]=rand()%5;

cout << a[i][j] << ' ';

}

cout << endl;

}

}

int main()

{

srand (time(0));

int i,j,n,k,e,**A,**B,**C,**D;

cout << "Vvedite n: ";

cin >> n;

A=(int**) malloc(sizeof(int*)*n);

for (j=0; j<n; j++) A[j]=(int*) malloc (sizeof(int*)*n);

B=(int**) malloc (sizeof(int*)*n);

for (j=0; j<n; j++) B[j]=(int*) malloc(sizeof(int*)*n);

C=(int**) malloc(sizeof(int*)*n);

for (j=0; j<n; j++) C[j]=(int*) malloc(sizeof(int*)*n);

D=(int**) malloc(sizeof(int*)*n);

for (j=0; j<n; j++) D[j]=(int*) malloc(sizeof(int*)*n);

 

vvod_matr(n,A);

vvod_matr(n,B);

vvod_matr(n,C);

vvod_matr(n,D);

 

e=0;

for (i=0; i<n; i++)

for (j=0; j<n; j++)

{

for (k=0; k<n; k++)

{

e=e+B[k][j]*C[i][k];

}

B[i][j]=e;

e=0;

}

 

e=0;

for (i=0; i<n; i++)

for (j=0; j<n; j++)

{

for (k=0; k<n; k++)

{

e=e+B[k][j]*D[i][k];

}

D[i][j]=e;

e=0;

}

 

 

for (i=0; i>j; i++)

for (j=0; j<i; j++)

{

A[i][j]=A[j][i];

{

cout << A[j][i] << ' ';

}

cout << endl;

}

 

for (i=0; i<n; i++)

for (j=0; j<n; j++)

{

D[i][j]=D[i][j]-A[i][j];

}

 

for (i=0; i<n; i++)

{

for (j=0; j<n; j++)

{

cout << D[i][j] << ' ';

}

cout << endl;

}

system("PAUSE");

return EXIT_SUCCESS;

}



<== предыдущая лекция | следующая лекция ==>
Функции, определённые пользователем | Лабораторная работа №1. Изучение интерфейса программного средства имитационного моделирования ARENA и построение простейшей имитационной модели
Поделиться с друзьями:


Дата добавления: 2016-12-05; Мы поможем в написании ваших работ!; просмотров: 263 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Большинство людей упускают появившуюся возможность, потому что она бывает одета в комбинезон и с виду напоминает работу © Томас Эдисон
==> читать все изречения...

2493 - | 2164 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.