Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Темы для предварительной проработки
Задание Выполнить индивидуальное задание в соответствии с вариантом. Пример программы Здание. Выполнить 4 метода сортировки массива: пузырьковая, выборочная, быстрая, методом Шелла. Сравнить результаты. Текст программы. #include <stdio.h> #include <iostream.h> #include <stdlib.h>
void Print_mas(int[], int); void Puzir_sort(int[], int); void Vibor_sort(int[], int); void Quick_sort(int[], int, int); void Shell_sort(int[], int);
void Print_mas(int array[], int length) { for (int i=0; i<=length-1; i++) printf("%5i",array[i]); printf("\n");
}
int main(void) { int i; /* индекс в массиве */ const n=10; int Ar[n]; /* массив, который обрабатывается */ int firs_value=-10; int last_value=10*2;
/* Заполнение элементов массива с помощью генератора случайных чисел*/ for (i=0; i<=n-1; i++) Ar[i]=firs_value + rand() % last_value;
/* вывод начального массива */ printf("Nachalnij mas:\n"); Print_mas(Ar, n);
Puzir_sort(Ar, n);
/* вывод отсортированного массива */ printf("Puzir sorted mas:\n"); Print_mas(Ar, n);
Vibor_sort(Ar, n); /* вывод отсортированного массива */ printf("Vibor sorted mas:\n"); Print_mas(Ar, n);
Quick_sort(Ar, 0, n-1); /* вывод отсортированного массива */ printf("Vibor sorted mas:\n"); Print_mas(Ar, n);
Shell_sort(Ar, n); /* вывод отсортированного массива */ printf("Vibor sorted mas:\n"); Print_mas(Ar, n);
return 0; }
void Puzir_sort(int mas[], int size) { int i, j, temp; for (i=0; i<size; i++) for (j=i+1; j<size; j++) if (mas[i]>mas[j]) {temp=mas[i]; mas[i]=mas[j]; mas[j]=temp;} }
void Vibor_sort(int m[], int len) { int i, temp, start, min, pos_min; start=0; while(start!=len-1) { min=m[start]; pos_min=start; for (i=start; i<len; i++) if (m[i]<min) { min=m[i]; pos_min=i;} if (pos_min!=start) {temp=m[start]; m[start]=m[pos_min]; m[pos_min]=temp;} start++;} }
void Quick_sort(int Mas[], int Low, int High ) { int i,j,p,temp; i=Low; j=High; p=Mas[(Low+High)/2]; do{ while(Mas[i]<p) i++; while(Mas[j]>p) j--; if(i<=j) { temp=Mas[i]; Mas[i]=Mas[j]; Mas[j]=temp; i++; j--;} } while(i<=j); if (j>Low) Quick_sort(Mas, Low, j); if (i<High) Quick_sort(Mas, i, High); }
void Shell_sort(int M[], int N) { int temp, middle, i, change; middle=N/2; do { do { change=0; for (i=0; i<N-middle; i++) if (M[i]>M[i+middle]) { temp=M[i]; M[i]=M[i+middle]; M[i+middle]=temp; change=1;} }while (change); middle=middle/2; }while (middle!=1); }
Варианты индивидуальных заданий
Лабораторная работа №12 Использование указателей Цель работы Целью лабораторной работы является получение практических навыков в работе с указателями и с адресной арифметикой в языке C. Теми для предварительной проработки
Задания для выполнения Выполнить задание лабораторной работы №9 (работа со строками) с таким дополнительным условиями: в тексте программы запрещается применять операцию индексации. Пример программы
#include <stdio.h> #include <iostream.h>
int substr(char *, char *, int, int); //функция выделения подстроки
int main(void) { char str1[100], str2[100]; //исходная строка и строка-результат int p,l,r; /* Ввод исходных данных */ printf("Input string\n"); scanf("%s", str1); printf("Input position\n"); cin>>p; //позиция символа, с которой копировать printf("Input length\n"); cin>>l; //количество копируемых символов r=substr(str1,str2,p,l); //вызов функции r=0 – успешное выполнение, //r=1 – ошибка if(r==0) { cout<<"Result string"<<endl; cout<<str2<<endl;} else cout<<"Data error"<<endl; return 0; }
int substr(char *s1, char *s2, int pos, int len) { int l1=0, l2=0, i=0; char *c; c=s1; do { c++; i++; }while (*c!='\0'); l1=i-1; l2=len; if ((pos+len>l1)||(pos<0)||(len<=0)) { return 1;} else { c=s1; for (i=1; i<=pos; i++) c++; for (i=1; i<=len; i++) { *s2=*c; s2++; c++; } *s2='\0'; return 0;} }
Лабораторная работа №13 Использование структур Цель работы Целью лабораторной работы является получение практических навыков в работе с интегрированными типами данных - структурами и массивами структур языка C. Темы для предварительной проработки
Задания для выполнения Составить программу, в которой будут вводиться 7 - 10 строк таблицы, образец которой приведен в Вашем варианте индивидуального задания к лабораторной работе №2 и выводится на экран таблица - сразу же после ввода и после сортировки ее по значениям в первом столбце. Примечания к таблице, которые есть в работе №2, можно не выводить. Пример программы (вариант №30) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-05-10; просмотров: 206. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |