Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Суковатова / лаба11
.docМОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЛЕСА
Факультет электроники и системотехники.
Лабораторная работа № 11
по программированию на языке высшего уровня С
Тема: «Динамическая память»
Выполнил студент: Суковатова Л.Н.
ВТ-11
Проверил: Ларионов Н.В.
Москва 2012 г.
1. Условия задания:
Написать программы используя функции и динамическую память.
Примечание. Размерности массивов задаются именованными константами.
Вариант 10
в одномерном массиве, состоящем из п целых элементов, вычислить:
1) минимальный по модулю элемент массива;
2) сумму модулей элементов массива, расположенных после первого элемента,
равного нулю.
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине — элементы, стоявшие в нечетных позициях.
2. Данные: а) Исходные: a[i]
б) Рабочие: k
в) Выходные:min, s, a[i]
3. Листинг программы:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <time.h>
#define N 10
void generate_elements(int a[]);
void print_elements(int a[]);
int find_min(int a[]);
int find_summ(int a[]);
void sort(int a[]);
int* a;
int main()
{
int result,i;
char str[10];
a = new int[N];
generate_elements(a);
print_elements(a);
result = find_min(a);
printf("Minimalny element massiva raven %d\n",a[result]);
result = find_summ(a);
printf("Summa elementov massiva posle pervogo nulya ravna %d\n",result);
sort(a);
printf("===========SORTED=================\n");
print_elements(a);
delete a;
getch();
return 0;
}
void generate_elements(int a[])
{
int i;
time_t t;
srand(time(&t));
for(i = 0;i < N;i++)
a[i] = rand() % 100;
}
void print_elements(int a[])
{
int i;
for (i = 0;i < N;i++)
printf("%d\t",a[i]);
}
int find_min(int a[])
{
int i;
int min,index;
min = fabs(a[0]);
for(i = 0;i < N;i++)
if (fabs(a[i]) < min)
{
min = fabs(a[i]);
index = i;
}
return index;
}
int find_summ(int a[])
{
int i,first_zeroi = N;
int summ = 0;
for(i = 0;i < N;i++)
if (a[i] == 0)
{
first_zeroi = i;
break;
}
// printf("first_zeroi = %d\n",first_zeroi);
for(i = first_zeroi;i < N;i++)
{
summ += fabs(a[i]);
// printf("!");
}
return summ;
}
void sort(int a[])
{
int a2[N];
int i,j = 0;
for(i = 0;i < N;i++)
if (((i+1) % 2) == 0)
{
a2[j] = a[i];
j++;
}
for(i = 0;i < N;i++)
if (((i+1) % 2) != 0)
{
a2[j] = a[i];
j++;
}
for(i = 0;i < N;i++)
a[i] = a2[i];
}