Систематизация знаний по алгоритмизации и языку программирования C/C++
Разработка рекуррентного метода сортировки по алфавитному порядку. Общая структурная схема программы. Сортировка методом Шелла по полю строкового типа. Сортировка методом быстрой сортировки по полю строкового типа. Сохранение справочника в файле.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.01.2013 |
Размер файла | 28,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Введение
Целью данной курсовой работы является систематизация знаний по алгоритмизации и языку программирования C и применение их на практике при создании рабочего проекта. В этой работе для выполнения всех требований преподавателя к функциональности рабочего приложения нам будут необходимы знания по всему курсу «Алгоритмизация и программирование на языке C/C++». Для создания курсового проекта необходимо выделить в задании на курсовую работу корневую задачу, которая будет реализована в главном модуле, а так же прикладные задачи, требования к которым указаны в описании функциональности программы. Также необходимо продумать алгоритмы коррекции данных, введённых пользователем. Для этого в ход выполнения работы добавляется дополнительный пункт тестирования полученной программы на правильность реакции на различные данные, вводимые пользователем: как корректные, так и некорректные. Для тестирования необходимо продумать ход мыслей рядового пользователя, а также его характерные ошибки при использовании вашей программы. Для исключения большинства таких ошибок достаточно будет продумать информативный и удобный интерфейс пользователя. Для блокирования же других необходимо составить алгоритмы анализа данных, введённых пользователем.
С++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.
Раздел 1. Постановка задачи
1. Создание справочника в памяти (Ввод данных) с использованием функций С.
2. Вывод справочника на экран с использованием функций С++.
3. Добавление записи в справочник.
4. Удаление записи из справочника.
5. Сортировка методом Шелла по полю строкового типа (по алфавиту).
6. Сортировка методом Шелла по числовому полю.
7. Сортировка методом быстрой сортировки по полю строкового типа (по алфавиту).
8. Сохранение справочника в файле с использованием функций языка С++.
9. Открытие справочника из файла с использованием функций языка С++.
10. Выход из программы.
Каждая запись должна состоять из 5 полей: марка (строковой тип); остальные 4 поля выбираются самостоятельно из справочников и должны представлять реальные параметры радиодеталей. При работе с программой также должны вводиться реальные марки и соответствующие им параметры деталей. Таблица с параметрами должна быть приведена в приложении.
При разработке программы создать собственный заголовочный файл, включающий директивы препроцессора, определение структуры данных, прототипы используемых функций. Каждый пункт меню, кроме выхода из программы, должен быть реализован в виде пользовательской функции, определяемой в отдельном файле. В программе использовать двоичный ввод/вывод в файлы. При запуске программы из командной строки в качестве аргумента командной строки должно передаваться имя файла-базы данных. При отсутствии аргумента при запуске программы имя файла-базы данных должно вводиться пользователем программы.
Предусмотреть защиту программы от ввода пользователем некорректных данных.
Курсовая работа выполняется с помощью компилятора gcc.
1. Структура данных использованных в данной программе
struct fotorezistor{
char marka[_MARKA];
float napr;
float sopr;
float chustv;
float mosch;
Вышеописанная структура объединяет 5 полей: marka[_MARKA]; napr, sopr, chustv, mosch. Поле marka[_MARKA] имеет целочисленный тип char, данный которого представляют собой символы, такие как буквы и знаки препинания. Данный массив хранит в себе марки фоторезисторов.
Поля napr, sopr, chustv, mosch имеют вещественный тип данных float данные которого представляют с собой числа с плавающей точкой. Поле napr хранит в себе рабочее напряжение на фоторезисторе, поле sopr-сопротивление, поле chustv- удельнаую чувствительность, поле mosch- мощность рассеявания.
2. Общая структурная схема программы
Прототипы функций использованных в программе:
int menu();
int vvod_C( struct fotorezistor *w );
void vivodAll(int kol, struct fotorezistor *w );
int del( int kol, struct fotorezistor *w );
void vivodNomer(int kol, struct fotorezistor *w );
void qsort_1(struct fotorezistor *w, int l, int r );
void sortshella(int kol, struct fotorezistor *w );
void qsort_2(struct fotorezistor *w, int l ,int r );
void save(int kol, struct fotorezistor *w, char *name );
int load(struct fotorezistor *w, char *name);
menu - выбор нужного нам пункта меню. Функция возвращает значение переменной punct в функцию main.
vvod_C - ввод данных о фоторезисторах. Данная функция возвращает значение переменной kol в функцию main .
vivodAll- вывод данных о введенных фоторезисторах на экран. Функция без возвращения.
del - удаление учетной записи из справочника. Функция возвращает значение переменной kol-1 в функцию main.
vivodNomer- вывод определенной учетной записи на экран. Функция без возвращения.
qsort_1 - быстрая сортировка по полю marka (по алфавиту). Функция без возвращения.
sortshella - сортировка методом Шелла по полю mosch. Функция без возвращения.
qsort_2 - быстрая сортировка по полю sopr. Функция без возвращения.
save - сохранение справочника в файле. Функция без возвращения.
load - открытие справочника из файла. Функция возвращает значение переменной kol в функцию main.
3. Описание специальных алгоритмов (сортировки, кодирования и т.д.), используемых при выполнении работы
В данной работе применялись сортировки методом Шелла и быстрая сортировка.
Сортировка Шелла -- алгоритм сортировки, являющийся усовершенствованным вариантом сортировки вставками. Идея метода Шелла состоит в сравнении элементов, стоящих не только рядом, но и на определённом расстоянии друг от друга. Иными словами -- это сортировка вставками с предварительными «грубыми» проходами. При сортировке Шелла сначала сравниваются и сортируются между собой значения, отстоящие один от другого на некотором расстоянии d. После этого процедура повторяется для некоторых меньших значений d, а завершается сортировка Шелла упорядочиванием элементов при d = 1. Эффективность сортировки Шелла в определённых случаях обеспечивается тем, что элементы «быстрее» встают на свои места.
Быстрая сортировка -- широко известный алгоритм сортировки, один из быстрых известных универсальных алгоритмов сортировки массивов.
Быстрая сортировка использует стратегию «разделяй и властвуй». Шаги алгоритма таковы:
1.Выбираем в массиве некоторый элемент, который будем называть опорным элементом. С точки зрения корректности алгоритма выбор опорного элемента безразличен. С точки зрения повышения эффективности алгоритма выбираться должна медиана, но без дополнительных сведений о сортируемых данных её обычно невозможно получить. Известные стратегии: выбирать постоянно один и тот же элемент, например, средний или последний по положению; выбирать элемент со случайно выбранным индексом.
2.Операция разделения массива: реорганизуем массив таким образом, чтобы все элементы, меньшие или равные опорному элементу, оказались слева от него, а все элементы, большие опорного -- справа от него. Обычный алгоритм операции:
3.Рекурсивно упорядочиваем подмассивы, лежащие слева и справа от опорного элемента.
4.Базой рекурсии являются наборы, состоящие из одного или двух элементов. Первый возвращается в исходном виде, во втором, при необходимости, сортировка сводится к перестановке двух элементов. Все такие отрезки уже упорядочены в процессе разделения.
Поскольку в каждой итерации (на каждом следующем уровне рекурсии) длина обрабатываемого отрезка массива уменьшается, по меньшей мере, на единицу, терминальная ветвь рекурсии будет достигнута всегда и обработка гарантированно завершится.
4. Листинг программы
Файл «my.h»
/* Заголовочные файлы */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <iostream>
#include <fstream>
using namespace std;
/* Объявление констант */
#define _KOL 20
#define _MARKA 10
#define _NAME 40
/* Объявление шаблона структуры */
struct fotorezistor{
char marka[_MARKA];
float napr;
float sopr;
float chustv;
float mosch;
};
/* Прототипы функций */
int menu();
int vvod_C( struct fotorezistor *w );
void vivodAll(int kol, struct fotorezistor *w );
int del( int kol, struct fotorezistor *w );
void vivodNomer(int kol, struct fotorezistor *w );
void qsort_1(struct fotorezistor *w, int l, int r );
void sortshella(int kol, struct fotorezistor *w );
void qsort_2(struct fotorezistor *w, int l ,int r );
void save(int kol, struct fotorezistor *w, char *name );
int load(struct fotorezistor *w, char *name);
Файл «main.c»
#include "my.h"
int main(int argc, char *argv[]){
char name[_NAME];
int kol = 0;
struct fotorezistor w[_KOL];
system("clear");
if(argc <= 1){
printf("Вы не узали имя файла при запуске!\n");
printf("Укажите сейчас.\n");
printf("В случае ошибки при вводе имени файла, программа завершит работу.\n");
fgets(name,_NAME,stdin);
name[strlen(name) - 1] = '\0';
if(strlen(name) == 0)
return 0;
}
else{
strcpy(name,argv[1]);
}
do{
switch( menu() ){
case 1: kol = vvod_C( w ); break;
case 2: vivodAll( kol,w ); break;
case 3: kol = del( kol,w );break;
case 4: vivodNomer( kol,w );break;
case 5: if((kol-1) < 1 || (kol-1) > _KOL){
printf("Нет данных!!!\n");
printf("Или данные уже отсортированы\n");
break;
}
qsort_1( w,0,kol-1 );
printf("Сортировка завершена\n");break;
case 6: sortshella( kol,w );break;
case 7: if(kol-1 < 2 || kol-1 > _KOL){
printf("Нет данных!!!\n");
printf("Или данные уже отсортированы\n");
break;
}
qsort_2( w,0,kol-1 );
printf("Сортировка завершена\n");break;
case 8: save( kol,w,name );break;
case 9: kol = load( w, name );break;
case 0: return 0;break;
default:
printf("Нет такого пункта меню!!!\n");
while( getchar() != '\n' )
continue;
break;
}
}while(1);
return 0;
}
Файл «menu.c»
#include "my.h"
int menu( void ){
int punct;
puts("\t\tМеню:");
puts(" 1 - Ввод данных с использованием функций C.");
puts(" 2 - Вывод данных на экран с испоьзованием функций C++.");
puts(" 3 - Удаление записи из справочника.");
puts(" 4 - Вывод записи по его порядковому номеру.");
puts(" 5 - Сортировка методом быстрой сортировки по полю строкового типа(по алфавиту).");
puts(" 6 - Сортировка методом Шелла по числовому полю(мощность).");
puts(" 7 - Сортировка методом быстрой сортировки по числовому полю (сопротивление).");
puts(" 8 - Сохранение справочника в файла с использованием функций языка С.");
puts(" 9 - Открытие справочника из файла с использованием функций языка С.");
puts(" 0 - Выход из программы.");
scanf("%d", &punct);
system("clear");
return punct;
}
Файл «vvod_C.c»
#include "my.h"
int vvod_C( struct fotorezistor *w ){
int kol,prov,i;
printf("Введите количество записей\n");
scanf("%d",&kol);
while(getchar() == '\0')continue;
if(kol < 1 || kol > _KOL){
printf("Количество записей не должно превышать %d!\n",_KOL);
return 0;
}
for(i = 0 ; i < kol;i++){
system("clear");
printf("Введите марку (%d):\n",i+1);
fgets(w[i].marka,20,stdin);
w[i].marka[strlen(w[i].marka) - 1] = '\0';
while(1){
printf("Введите напряжение в В(%d):\n",i+1);
scanf ("%f",&w[i].napr);
if(getchar()=='\n'){
break;
}else{
printf("Не корректные данные.\n");
while(getchar()!='\n')
continue;
}
}
while(1){
printf("Введите сопротивление в кОм(%d):\n",i+1);
scanf("%f",&w[i].sopr);
if(getchar()=='\n'){
break;
}else{
printf("Не корректные данные.\n");
while(getchar()!='\n')
continue;
}
}
while(1){
printf("Введите чуствительность(%d):\n",i+1);
scanf("%f",&w[i].chustv);
if(getchar()=='\n'){
break;
}else{
printf("Не корректные данные.\n");
while(getchar()!='\n')
continue;
}
}
while(1){
printf("Введите мощность(%d):\n",i+1);
scanf("%f",&w[i].mosch);
if(getchar()=='\n'){
break;
}else{
printf("Не корректные данные.\n");
while(getchar()!='\n')
continue;
}
}
}
return kol;
}
Файл «vivodAll.c»
#include "my.h"
void vivodAll( int kol, struct fotorezistor *w ){
if(kol < 1 || kol > _KOL){
cout<<"Нет данных!!!"<<endl;
return ;
}
int i;
cout.setf(ios::right);
cout<<"Таблица фоторезисторов:"<<endl;
cout <<"=======================================================================\n";
cout <<"| N|Марка фоторезистора| U рабочее| Rт,кОм |Чувствительность|Мощность|\n";
cout <<"=======================================================================\n";
for(i = 0 ;i < kol;i++){
cout<<"|";
cout.width(2);cout<<i+1<<"|";
cout.width(19);cout<<w[i].marka;cout<<"|";
cout.width(10);cout<<w[i].napr;cout<<"|";
cout.width(9);cout<<w[i].sopr;cout<<"|";
cout.width(16); cout<<w[i].chustv;cout<<"|";
cout.width(8);cout<<w[i].mosch;cout<<"|"<<endl;
cout <<"=======================================================================\n";
}
return;
}
Файл «vivodNomer.c»
#include "my.h"
void vivodNomer( int kol,struct fotorezistor *w ){
int i;
if(kol < 1 || kol > _KOL){
cout<<"Нет данных!!!"<<endl;
return ;
}
do{
printf("Введите номер фоторезистора:\n");
scanf("%d",&i);
if(i < 1 || i > kol){
printf("Нет такой записи!!!\n");
printf("Повторите ввод!\n");
}
else{
break;
}
}while(1);
i--;
cout<<"======================================================================="<<endl;
cout<<"| N|Марка фоторезистора| U рабочее| Rт,кОм |Чувствительность|Мощность|"<<endl;
cout<<"======================================================================="<<endl;
cout<<"|";
cout.width(2);cout<<i+1<<"|";
cout.width(19);cout<<w[i].marka;cout<<"|";
cout.width(10);cout<<w[i].napr;cout<<"|";
cout.width(9);cout<<w[i].sopr;cout<<"|";
cout.width(16); cout<<w[i].chustv;cout<<"|";
cout.width(8);cout<<w[i].mosch;cout<<"|"<<endl;
cout<<"======================================================================="<<endl;
return ;
}
Файл «del.c»
#include "my.h"
int del( int kol, struct fotorezistor *w ){
int i, x;
if(kol < 1 || kol > _KOL){
cout<<"Нет данных!!!"<<endl;
return kol;
}
printf("Введите номер удаляемой записи:\n");
while( !scanf("%d", &x) || x <= 0 || x > kol ){
printf("Нет такой записи в справочнике!!!\n");
while( getchar() != '\n' ) continue;
}
for( i = x - 1; i < kol-1; i++ )
w[i] = w[i + 1];
w[kol-1].marka[0] = '\0';
w[kol-1].napr = '\0';
w[kol-1].sopr = 0;
w[kol-1].chustv = 0;
w[kol-1].mosch = 0;
system("Clear");
printf("Запись - %d удалена из справочника.\n", x);
return kol-1;
}
Файл «save.c»
#include "my.h"
void save( int kol,struct fotorezistor *w, char *name ){
int res = 0,i;
FILE *fp;
if(kol < 1 || kol > _KOL){
cout<<"Нет данных!!!"<<endl;
return ;
}
system("clear");
if((fp=fopen(name,"wb"))==NULL){
printf("Не возможно открыть ФАЙЛ!!!\n");
}
fwrite(&kol,sizeof(int),1,fp);
for(i = 0;i < kol; i++)
res += fwrite(&w[i],sizeof(struct fotorezistor),1,fp);
if(res != kol){
printf("Не все данные загружены!!!\n");
printf("Загружено %d записей!!!\n", res);
}
fclose(fp);
printf("Данные отправленны в ФАЙЛ!!! (%s)\n",name);
return ;
}
Файл «load.c»
#include "my.h"
int load(struct fotorezistor *w, char *name ){
FILE *fp;
int kol,i;
if((fp=fopen(name,"rb"))==NULL){
printf("Не возможно открыть ФАЙЛ!!!(%s)\n",name);
exit(1);
}
fread(&kol,sizeof(int),1,fp);
for(i = 0; i < kol; i++)
fread(&w[i],sizeof(struct fotorezistor),1,fp);
system("clear");
printf("Загружено %d записей!!!\n",kol);
return kol;
}
Файл «sortBistr_1.c»
#include "my.h"
void qsort_1(struct fotorezistor *w,int l,int r){
int i = l, j = r;
struct fotorezistor swap;
char x[30];
if (l>=r)
return ;
strcpy(x,w[(r+l)/2].marka);
do{
while(strcmp(w[i].marka,x) < 0) i++;
while(strcmp(w[j].marka,x) > 0) j--;
if (i<=j){
swap=w[i];
w[i]=w[j];
w[j]=swap;
i++;
j--;
}
} while(!(i>j));
qsort_1(w,l, j);
qsort_1(w,i, r);
return ;
}
Файл «sortBistr_2.c»
#include "my.h"
void qsort_2 (struct fotorezistor *w, int l, int r) {
int i=l, j=r;
struct fotorezistor swap;
if (l>=r)
return;
float x=w[(r+l)/2].sopr;
do{
while(w[i].sopr<x) i++;
while(w[j].sopr>x) j--;
if (i<=j){
swap=w[i];
w[i]=w[j];
w[j]=swap;
i++;
j--;
}
} while(!(i>j));
qsort_2(w,l, j);
qsort_2(w,i, r);
return;
}
Файл «sortshella.c»
#include "my.h"
void sortshella(int kol, struct fotorezistor *w ){// сортировка "ШЕЛЛА" мощности фоторезистора
system("clear");
struct fotorezistor temp;
int i,j;
int step = kol / 2;
if(kol < 1 || kol > _KOL){
cout<<"Нет данных!!!"<<endl;
return ;
}
while (step > 0){
for (i = 0; i < (kol - step); i++){
j = i;
while ((j >= 0) && ( w[j].mosch > w[j + step].mosch) ){
temp = w[j];
w[j] = w[j + step];
w[j + step] = temp;
j--;
}
}
step = step / 2;
}
printf("Сортировка завершена.\n");
return ;
}
Makefile
result: vvod_C.o vivodNomer.o main.o vivodAll.o menu.o del.o sortBistr_1.o sortBistr_2.o sortshella.o load.o save.o
g++ vvod_C.o vivodNomer.o main.o vivodAll.o menu.o del.o sortBistr_1.o sortBistr_2.o sortshella.o load.o save.o -o result
menu.o: menu.c my.h
g++ -c menu.c
vvod_C.o: vvod_C.c my.h
g++ -c vvod_C.c
vivodNomer.o: vivodNomer.cpp my.h
g++ -c vivodNomer.cpp
vivodAll.o: vivodAll.cpp my.h
g++ -c vivodAll.cpp
main.o: main.c my.h
g++ -c main.c
del.o: del.c my.h
g++ -c del.c
sortBistr_1.o: sortBistr_1.c my.h
g++ -c sortBistr_1.c
sortBistr_2.o: sortBistr_2.c my.h
g++ -c sortBistr_2.c
sortshella.o: sortshella.c my.h
g++ -c sortshella.c
save.o: save.c my.h
g++ -c save.c
load.o: load.c my.h
g++ -c load.c
clean:
rm -rf *.o result
5. Результат
сортировка программа справочник файл
Меню:
1 - Ввод данных с использованием функций C.
2 - Вывод данных на экран с использованием функций C++.
3 - Удаление записи из справочника.
4 - Вывод записи по его порядковому номеру.
5 - Сортировка методом быстрой сортировки по полю строкового типа(по алфавиту).
6 - Сортировка методом Шелла по числовому полю(мощность).
7 - Сортировка методом быстрой сортировки по числовому полю (сопротивление).
8 - Сохранение справочника в файла с использованием функций языка С.
9 - Открытие справочника из файла с использованием функций языка С.
0 - Выход из программы.
2 - Вывод данных на экран с использованием функций C++.
Таблица фоторезисторов:
=======================================================================
| N|Марка фоторезистора| U рабочее | Rт,кОм |Чувствительность| Мощность|
=======================================================================
| 1| FSA-0| 75| 40000| 500| 0.011|
=======================================================================
| 2| FSA-1| 80| 9000| 500| 0.01|
=======================================================================
| 3| FSA-G1| 5| 47000| 500| 0.015|
=======================================================================
| 4| FSA-G2| 10| 150000| 500| 0.013|
=======================================================================
| 5| FSA-6| 30| 2500| 500| 0.014|
=======================================================================
| 6| FSK-0| 50| 5000| 7000| 0.125|
========================================================= ==============
| 7| FSK-1| 50| 5500| 7000| 0.1255|
=======================================================================
| 8| FSK-2| 100| 10000| 1500| 0.125|
=======================================================================
| 9| FSK-4| 50| 5700| 7000| 0.13|
=======================================================================
|10| FSK-5| 50| 5000| 6000| 0.05|
=======================================================================
|11| FSK-6| 50| 3300| 9000| 0.2|
=======================================================================
|12| FSK-P1| 100| 100000| 4000| 0.1|
=======================================================================
|13| SF2-2| 20| 4000| 75000| 0.05|
=======================================================================
|14| FSD-0| 20| 2e+07| 40000| 0.055|
=======================================================================
|15| SF3-1| 15| 1.5e+06| 600000| 0.01|
=======================================================================
|16| FSK-7A| 50| 10000| 1500| 0.35|
=======================================================================
|17| FSK-7B| 50| 1000| 6000| 0.355|
=======================================================================
|18| FSK-G7| 50| 6000| 3500| 0 .4|
=======================================================================
|19| FSK-G1| 50| 5000| 6000| 0.12|
=======================================================================
|20| FSK-G2| 50| 5800| 12000| 0.2|
=======================================================================
6. Сортировка методом быстрой сортировки по полю строкового типа (по алфавиту)
Таблица фоторезисторов:
=======================================================================
| N|Марка фоторезистора| U рабочее| Rт,кОм | Чувствительность| Мощность|
=======================================================================
| 1| FSA-0| 75| 40000| 500| 0.011|
=======================================================================
| 2| FSA-1| 80| 9000| 500| 0.01|
=======================================================================
| 3| FSA-6| 30| 2500| 500| 0.014|
=======================================================================
| 4| FSA-G1| 5| 47000| 500| 0.015|
=======================================================================
| 5| FSA-G2| 10| 150000| 500| 0.013|
=======================================================================
| 6| FSD-0| 20| 2e+07| 40000| 0.055|
=======================================================================
| 7| FSK-0| 50| 5000| 7000| 0.125|
=======================================================================
| 8| FSK-1| 50| 5500| 7000| 0.1255|
=======================================================================
| 9| FSK-2| 100| 10000| 1500| 0.125|
=======================================================================
|10| FSK-4| 50| 5700| 7000| 0.13|
============= ==========================================================
|11| FSK-5| 50| 5000| 6000| 0.05|
=======================================================================
|12| FSK-6| 50| 3300| 9000| 0.2|
=======================================================================
|13| FSK-7A| 50| 10000| 1500| 0.35|
=======================================================================
|14| FSK-7B| 50| 1000| 6000| 0.355|
=======================================================================
|15| FSK-G1| 5 0| 5000| 6000| 0.12|
=======================================================================
|16| FSK-G2| 50| 5800| 12000| 0.2|
=======================================================================
|17| FSK-G7| 50| 6000| 3500| 0.4|
=======================================================================
|18| FSK-P1| 100| 100000| 4000| 0.1|
=======================================================================
|19| SF2-2| 20| 4000| 75000| 0.05|
=======================================================================
|20| SF3-1| 15| 1.5e+06| 600000| 0.01|
7. Сортировка методом Шелла по числовому полю (мощность)
Таблица фоторезисторов:
=======================================================================
| N|Марка фоторезистора| U рабочее| Rт,кОм | Чувствительность| Мощность|
=======================================================================
| 1| FSA-1| 80| 9000| 500| 0.01|
=======================================================================
| 2| SF3-1| 15| 1.5e+06| 600000| 0.01|
=======================================================================
| 3| FSA-0| 75| 40000| 500| 0.011|
=======================================================================
| 4| FSA-G2| 10| 150000| 500| 0.013|
=======================================================================
| 5| FSA-6| 30| 2500| 500| 0.014|
=======================================================================
| 6| FSA-G1| 5| 47000| 500| 0.015|
=======================================================================
| 7| SF2-2| 20| 4000| 75000| 0.05|
=======================================================================
| 8| FSK-5| 50| 5000| 6000| 0.05|
=======================================================================
| 9| FSD-0| 20| 2e+07| 40000| 0.055|
=======================================================================
|10| FSK-P1| 100| 100000| 4000| 0.1|
=======================================================================
|11| FSK-G1| 50| 5000| 6000| 0.12|
=======================================================================
|12| FSK-0| 50| 5000| 7000| 0.125|
=======================================================================
|13| FSK-2| 100| 10000| 1500| 0.125|
=======================================================================
|14| FSK-1| 50| 5500| 7000| 0.1255|
=======================================================================
|15| FSK-4| 50| 5700| 7000| 0.13|
=======================================================================
|16| FSK-6| 50| 3300| 9000| 0.2|
=======================================================================
|17| FSK-G2| 50| 5800| 12000| 0.2|
=======================================================================
|18| FSK-7A| 50| 10000| 1500| 0.35|
=======================================================================
|19| FSK-7B| 50| 1000| 6000| 0.355|
=======================================================================
|20| FSK-G7| 50| 6000| 3500| 0.4|
=======================================================================
Заключение
Была проделана работа по разработке рекуррентного метода сортировки по алфавитному порядку, был разработан текстовый интерфейс пользователя. Использовался компилятор из пакета Borland Free Tool Package | Borland C/C++ Compiler for Win32. Проделана работа по поиску реальной информации по заданной теме, а также составление пробного файла. Произведена отладка программы.
Приобрели навыки составления законченной программы с пользовательским интерфейсом и коррекцией ошибок. В ходе работы был проанализирован и систематизирован учебный материал, заполнились пробелы в знаниях. Получены навыки практического применения знаний по теме лекций «Алгоритмизация и программирование на языке C».
Т. к. язык C/С++ - довольно удобный инструмент для получения быстрых и компактных программ, использующих эффективно доступные ресурсы машины, он налаживает определённые требования на разработчика: в отличие от «классических» языков инженерного программирования (Фортран и т.д.) , язык С способен на базовом уровне выполнять только простейшие операции, характерные для большинства процессорных платформ (собственно с помощью чего достигается его эффективность). Вследствие этого инженер-программист, использующий для решения вычислительной проблемы язык C/С++, должен обладать чёткой культурой программирования и ясно понимать процессы, происходящие в машине, при выполнении составленной им программы.
Список использованной литературы
1. Д.В. Балащенко, Д.В. Захаров Программирование на языке С/С++. Учебно-методическое пособие по дисциплине «Информатика и информационные технологии».Ч.2/-Гомель:БелГУТ,2011.-56с
2. Стивен Прата./Язык программирования С. - М. Издательство «Диасофт», 2002. -896 с.
3. П.Дейтел, Х.Дейтел./Как программировать на С/С++. - М, Издательство «Бином» 2001. - 1152 стр.
Приложение
Тип ФР |
Uраб, В |
Rт, ом. |
Удельная чувств., мка/лм-в |
Мощность рассеяния, Вт |
|
1 |
2 |
3 |
4 |
5 |
|
ФСА-0 |
4-100 |
40*103-106 |
500 |
0,01 |
|
ФСА-1 |
4-100 |
40*103-106 |
500 |
0,01 |
|
ФСА-Г1 |
4-40 |
47*103-470*103 |
500 |
0,01 |
|
ФСА-Г2 |
4-40 |
40*103-106 |
500 |
0,01 |
|
ФСА-6 |
5-30 |
50-300*103 |
500 |
0,01 |
|
ФСК-0 |
50 |
5*106 |
7000 |
0,125 |
|
ФСК-1 |
50 |
5*106 |
7000 |
0,125 |
|
ФСК-2 |
100 |
10*106 |
1500 |
0,125 |
|
ФСК-4 |
50 |
5*106 |
7000 |
0,125 |
|
ФСК-5 |
50 |
5*106 |
6000 |
0,05 |
|
ФСК-6 |
50 |
3,3*106 |
9000 |
0,2 |
|
ФСК-7а |
50 |
106 |
1500 |
0,35 |
|
ФСК-7б |
50 |
105 |
6000 |
0,35 |
|
ФСК-Г7 |
50 |
5*106 |
3500 |
0,35 |
|
ФСК-Г1 |
50 |
5*106 |
6000 |
0,12 |
|
ФСК-Г2 |
50 |
5*106 |
12000 |
0,2 |
|
ФСК-П1 |
100 |
1010 |
4000 |
0,1 |
|
СФ2-1 |
15 |
30*106 |
400000 |
0,01 |
|
СФ2-2 |
2(10) |
4*106 |
75000 |
0,05 |
|
СФ2-4 |
15 |
- |
- |
0,01 |
|
СФ2-9 |
25 |
>3,3*106 |
- |
0,125 |
|
СФ2-12 |
15 |
>15*106 |
- |
0,01 |
|
ФСД-0 |
20 |
20*108 |
40000 |
0,05 |
|
ФСД-1 |
20 |
20*106 |
40000 |
0,05 |
|
ФСД-Г1 |
20 |
20*106 |
40000 |
0,05 |
|
СФ3-1 |
15 |
15*108 |
600000 |
0,01 |
|
СФ3-8 |
25 |
- |
- |
0,025 |
Размещено на Allbest.ru
...Подобные документы
Обработка массивов элементов любого типа как главное назначение алгоритмов сортировки. Анализ наиболее используемых алгоритмов сортировки: пузырьком, выбором, вставками, методом Шелла и быстрой сортировкой. Основные требования к алгоритмам сортировки.
реферат [189,8 K], добавлен 06.12.2014Анализ основных алгоритмов внутренней сортировки массивов данных, сравнение сложности их реализации и производительности. Сортировка пузырьком, методами вставок, выбора, методом Шелла, быстрая сортировка. Операция разделения массива внутренней сортировки.
курсовая работа [161,7 K], добавлен 17.12.2015Разработка программы, сортирующей массивы данных различного типа методом подсчета. Основные шаги алгоритма сортировки, ее свойства и модификация подсчетом. Целесообразность применения сортировки подсчетом. Условия эффективности алгоритма сортировки.
лабораторная работа [438,5 K], добавлен 16.07.2015Понятие алгоритма и сортировки. Способы и алгоритмы сортировки массивов. Быстрая сортировка Хоара. Описание алгоритма "быстрой сортировки". Реализация на языке программирования. Анализ наихудшего разбиения. Вероятностные алгоритмы быстрой сортировки.
курсовая работа [291,5 K], добавлен 22.03.2012Сортировка как процесс расстановки элементов "в некотором порядке", ее структура и основные компоненты, характеристика методов. Порядок выбора того или иного метода сортировки: линейный с обменом и подсчетом, методом Шелла, с отложенными обменами.
реферат [27,1 K], добавлен 13.09.2009Изучение алгоритмов внутренней сортировки массивов данных, сравнение сложности их реализации и производительности. Отличительные черты сортировки включением, выбором, разделением, сортировки Шелла, обменной сортировки. Сравнение методов: плюсы и минусы.
курсовая работа [203,8 K], добавлен 03.12.2010Исследование основных особенностей алгоритмов быстрой и поразрядной сортировки данных. Построение графиков зависимости времени сортировки от количества элементов в файле и от степени перемешенности элементов. Описания сортировки чисел и строковых данных.
лабораторная работа [1,2 M], добавлен 23.07.2012Исторические предпосылки разработки тестирования. Виды электронных тестов и их роль в программировании. Этапы разработки программы для решения задачи быстрой сортировки. Пользовательский интерфейс, отладка, алгоритм программы. Файл теста в формате XML.
курсовая работа [1,5 M], добавлен 27.01.2014Понятие и основной принцип действия алгоритмов сортировки информации. Сравнительное исследование и анализ эффективности методов сортировки Шелла и Флойда в виде графиков зависимостей количества сравнений и числа перестановок элементов от объёма данных.
контрольная работа [573,6 K], добавлен 09.11.2010Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.
курсовая работа [359,0 K], добавлен 23.05.2012Разработка программы для осуществления сортировки данных методами "Выбора" с использованием языка C# и Visual Studio 2012. Плавный метод сортировки. Основные фазы сортировки во внутреннем представлении пирамиды. Программа сортировки методами выбора.
курсовая работа [637,6 K], добавлен 29.11.2014Понятие синтаксического анализа. Программный продукт для обработки данных строкового типа. Построение сканера текстов с использованием утилиты flex, синтаксического анализатора с помощью утилиты bison. Грамматика языка программирования обработки строк.
курсовая работа [261,7 K], добавлен 29.10.2012Анализ структуры топологической сортировки в программной среде. Метод топологической сортировки с помощью обхода в глубину. Программа, реализующая топологическую сортировку методом Демукрона. Создание карты сайта и древовидная система разделов.
курсовая работа [1,3 M], добавлен 22.06.2011Реализация различных методов сортировки. Алгоритмические языки программирования. Обработка большого числа единообразно организованных данных. Алгоритмы сортировки массивов. Анализ проблем реализации и использования различных видов сортировок массивов.
курсовая работа [640,3 K], добавлен 07.07.2011Алгоритмизация и структурное программирование на языке С/С++. Создание справочника в памяти (ввод данных), вывод справочника на экран с использованием потоковых классов, сортировка методом Шелла. Циклы, описание применяемых специальных алгоритмов.
курсовая работа [1,0 M], добавлен 26.02.2012Краткое описание языка программирования С++. Алгоритм линейного выбора элемента, методов минимального (максимального) элемента и челночной сортировки. Анализ и разработка приложения, организующего сортировку массива данных пятью методами сортировки.
реферат [614,8 K], добавлен 12.04.2014Постановка задачи сортировки. Анализ основных понятий сортировок слияниями. Алгоритм сортировки простым и естественным слиянием. Оценка сложности алгоритма. Программная реализация простого слияния. Тестирование меню на корректность входных данных.
курсовая работа [283,6 K], добавлен 22.06.2015Алгоритмы сортировки методами простых вставок и пузырька. Зависимость среднего времени сортировки от числа сортируемых элементов. Функции, осуществляющие сортировку любого количества элементов методом простых вставок, на основе сортировки таблицы адресов.
курсовая работа [557,1 K], добавлен 26.05.2010Методы реализации алгоритмов сортировки и алгоритмов поиска на языках программирования высокого уровня. Программирование алгоритмов сортировки и поиска в рамках создаваемого программного средства на языке Delphi. Создание руководства пользователя.
курсовая работа [1,7 M], добавлен 16.04.2012Составление программы сортировки по возрастанию массив из 20 шестнадцатеричных чисел, просматривающей все исходные числа во внешней памяти и выбирающей самое большое число. Блок-схема алгоритма работы программы. Таблица команд и число их выполнения.
курсовая работа [23,1 K], добавлен 24.05.2015