close

Вход

Забыли?

вход по аккаунту

?

Отчет Лаба 5

код для вставкиСкачать
 ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
"УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВРСИТЕТ"
Кафедра "Информационные системы и технологии"
Лабораторная работа №5
Обработка одномерных массивов
Выполнил студент гр.ИСТбд-11 Халилов Динар
Проверил преподаватель Докторова Е.А.
Ульяновск 2013
Задание: Из исходного массива символов, заполненного случайным образом символами с кодами в диапазоне от 21 до 254, выделить в отдельные массивы символы цифр и знаков препинания. Провести сортировку полученных массивов. Для контроля результата сделать распечатку массивов, в том числе исходного.
Вариант №13
В программе я использовал 3 сортировки:
- Метод прямого включения - Метод вставки
- Метод пузырька
Код программы:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
#include <conio.h>
#define N 20
#define M 30
void Randomize()
{
srand(time(0));
}
int Random(int range)
{
return (rand() % range);
}
void Title() {
printf("Laboratornaya rabota #5 variant #2. KHALILOV D.D ISTbd-11 \n");
printf("Zapolnenie 2-x odnomernux massivov bukvami latinskogo alfavita \n");
printf("v sluchainom poradke. \n");
printf("Zapolnit 3'i massiva simvolami iz pervux dvux.\n\n");
}
void New_Item(int *p, int n, int range1, int range2)
{
p[n] = Random(range2 - range1) + range1;
}
void Filling (int *p, int n, int range1, int range2)
{ int i;
p[0]=Random (range2 - range1) + range1;
for (i=1;i<n; i++)
New_Item(p, i, range1, range2);
}
void Print(int *p, int n)
{ int i;
for (i=0; i<n; i++)
printf("%2c",p[i]);
puts("");
}
int Min(int *c, int n, int *index)
{ int i, min;
min = c[0];
(*index) = 0;
for (i=1; i<n; i++)
if (c[i]<min)
{
min = c[i];
(*index) = i;
}
return min;
}
void Exchange (int *c, int n, int k)
{ int tmp;
tmp = c[n];
c[n] = c[k];
c[k] = tmp;
}
void SearchSort (int *c, int n)
{
int i, min, indexMin; int *p;
for (i=0; i<n-1; i++)
{p = (c+i);
min = Min(p, n-i, &indexMin);
Exchange (p, 0, indexMin); }
}
int * Copy (int *c, int n)
{ int *m, i;
m = (int*)malloc(sizeof(int)*n);
for ( i = 0; i<n; i++ ) m[i] = c[i];
return m;
}
void IncludeSort(int *c, int n) {
int i, j, x;
int *p;
p = (c - 1);
for (i=1; i<n; i++)
{
if (p[i-1]>p[i]) {
x=p[i];
j=i-1;
while ((j>0) && (p[j] > x)) {
p[j+1] = p[j];
j--; }
p[j+1]= x;
}
}
}
void BubbleSort(int *c,int n)
{
int i, j;
for(i = 0; i <= n - 2; i++)
for(j = n-1; j >=i+1; j--)
if (c[j] < c[j - 1])
Exchange(c, j, j - 1);
}
int main()
{
int p[N];
int k[M];
int *p1, *p2, *p3;
int *k1, *k2, *k3;
int i, j, x,range;
Title();
Randomize();
printf("Zapolnenie massiva #1\n");
Filling(p,N,65,90);
printf("Zapolnenie massiva #2\n");
Filling(k,M,65,90);
printf("Raspechatka massiva #1\n");
Print (p,N);
printf("Raspechatka massiva #2\n");
Print (k,M);
printf("Sozdanie dublicata #1-go massiva\n");
p1 = Copy(p,N);
printf("Sozdanie dublicata #2-go massiva\n");
k1 = Copy(k,M);
printf("Sortirovka metodom pryamogo poiska pervogo massiva\n");
SearchSort(p1,N);
printf("Raspechatka pervogo massiva, otsortirovannogo metodom pryamogo poiska\n");
Print(p1,N);
printf("\n");
printf("Sortirovka metodom pryamogo poiska vtorogo massiva\n");
SearchSort(k1,M);
printf("Raspechatka vtorogo massiva, otsortirovannogo metodom pryamogo poiska\n");
Print(k1,M);
printf("Sozdanie dublicata #1-go massiva\n");
p2 = Copy(p,N);
printf("Sozdanie dublicata #2-go massiva\n");
k2 = Copy(k,M);
printf("Sortirovka metodom pryamogo vkluchenia pervogo massiva\n");
IncludeSort(p2,N);
printf("Raspechatka pervogo massiva, otsortirovannogo metodom pryamogo vkluchenia\n");
Print(p2,N);
printf("\n");
printf("Sortirovka metodom pryamogo vkluchenia vtorogo massiva\n");
IncludeSort(k2,M);
printf("Raspechatka vtorogo massiva, otsortirovannogo metodom pryamogo vkluchenia\n");
Print(k2,M);
printf("Sozdanie dublicata #1-go massiva\n");
p3 = Copy(p,N);
printf("Sozdanie dublicata #2-go massiva\n");
k3 = Copy(k,M);
printf("Sortirovka puzerkovum metodom pervogo massiva\n");
BubbleSort(p3,N);
printf("Raspechatka pervogo massiva, otsortirovannogo puzerkovum metodom\n");
Print(p3,N);
printf("\n");
printf("Sortirovka metodom pryamogo vkluchenia vtorogo massiva\n");
BubbleSort(k3,M);
printf("Raspechatka vtorogo massiva, otsortirovannogo puzerkovum metodom\n");
Print(k3,M);
getch();
}
Вывод программы:
Использованная литература:
МЕТОДИЧЕСКИЕ УКАЗАНИЯ, ЗАДАНИЯ И ПРИМЕРЫ ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ № 1 - 8
ДЛЯ СТУДЕНТОВ НАПРАВЛЕНИЯ 23040062 "Информационные системы и технологии"
Документ
Категория
Рефераты
Просмотров
20
Размер файла
70 Кб
Теги
лаба, отчет
1/--страниц
Пожаловаться на содержимое документа