Інтегровані структури даних, запису.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Інформаційні системи та мережі

Інформація про роботу

Рік:
2008
Тип роботи:
Лабораторна робота
Предмет:
Алгоритми і структури даних
Група:
КН

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет "Львівська політехніка" Кафедра "Інформаційні системи та мережі"    Лабораторна робота № 3 з предмету: Алгоритми і Структури Даних на тему: Інтегровані структури даних, запису.          ЛЬВІВ-2008  Тема: Інтегровані структури даних, запису. Мета роботи: Придбання і закріплення навиків в роботі із записами, в інтеграції даних, в модульному програмуванні. Постановка завдання Для заданої прикладної області розробити опис об'єктів цієї області. Розробити процедури, що реалізуюють базові операції над цими об'єктами, зокрема: текстове введення-виведення (консольний і файловий); присвоювання; задання константних значень; порівняння (не менше 2-х типів). Підготувати файл початкових даних, що містять не менше 10 значень конкретних об'єктів. Використовуючи процедури і описи модуля типу даних, розробити програму, що забезпечує введення початкових даних з першого файлу даних в пам'ять і зберігання їх в масиві, сортування масиву по алфавітному і по числовому параметру. Варіанти індивідуальних завдань Для кожної області перераховані параметри об'єкту. Серед параметрів обов'язково є ключове алфавітне поле (наприклад, прізвище), яке ідентифікує об'єкт, у кожного об'єкту є також одне або декілька числових полів, по яким вірогідні звернення до об'єкту. Набір характеристик може бути розширений і ускладнений по розсуду виконавця. Варіант індивідуального завданя: Прикладна область: Відділ кадрів, Атрибути інформації: прізвище співробітника, ім'я, по батькові, посада, стаж роботи, оклад Перевірити, чи всі нульові елементи розміщені в лівій частині матриці (варіант №1). Хід виконання роботи: Для заданої прикладної області я розробив опис об'єктів цієї області, процедури, що реалізуюють базові операції над цими об'єктами, зокрема: текстове введення-виведення (консольний і файловий); присвоювання; 2 типи порівняння. Підготував файл початкових даних, що містять н10 значень конкретних об'єктів. Використовуючи процедури і описи модуля типу даних, розробити програму, що забезпечує введення початкових даних з файлу даних в пам'ять і зберігання їх в масиві, сортування масиву по алфавітному і по параметру зарплати. Текст програми на мові С++: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> class Worker { public: char name[20]; char surname[20]; char status[10]; int celery; int stag; public: Worker(char *n=NULL, char *sn=NULL, char *s=NULL, int c=0, int st=0) { if(n) strcpy(name, n); else *name='\n'; if(sn)strcpy(surname, sn);else *surname='\n'; if(s) strcpy(status, s); else *status='\n'; celery=c; stag=st; } void operator()(char *n, char *sn, char s, int c, int st) { *name='\0'; *surname='\0'; *status='\0'; celery=c; stag=st; } int read(FILE *in=NULL) { if(!in)in=stdin; return fscanf(in, "%s%s%s%d%d\n", name, surname, status, &celery, &stag)==5?1:0; } int write(FILE *out=NULL) { if(!out)out=stdout; return fprintf(out, "%-20s%-20s%-10s%4d%2d\n", name, surname, status, celery, stag)==5?1:0; } int operator<(Worker w) { int c; c=strcmp(name, w.name); if(c) return c<0?1:0; c=strcmp(surname, w.surname); return c<0?1:0; } int operator>(Worker w) { int c; c=strcmp(name, w.name); if(c) return c>0?1:0; c=strcmp(surname, w.surname); return c>0?1:0; } int operator<<(Worker w) { return celery<w.celery?1:0; } int operator>>(Worker w) { return celery>w.celery?1:0; } }; int readall(Worker w[], int maxn, char *fname) { int i; if(fname) { FILE *f=fopen(fname, "r"); if(!f){ puts("ERROR 1"); exit(1); } for(i=0; i<maxn; i++) if(!w[i].read(f)) return i; if(*fname)fclose(f); return i+1; }else{ for(i=0; i<maxn; i++) if(!w[i].read(stdin)) return i; return i-1; } } writeall(Worker w[], int maxn, char *fname) { int i; if(fname) { FILE *f=fopen(fname, "w"); if(!f){ puts("ERROR 2"); exit(1); } for(i=0; i<maxn; i++) w[i].write(f); if(*fname)fclose(f); }else{ for(i=0; i<maxn; i++) w[i].write(stdout); } } void sortns(Worker w[], int wn) { for(int i=0; i<wn-1; i++) for(int j=i+1; j<wn; j++) if(w[i]>w[j]) { Worker t=w[i]; w[i]=w[j]; w[j]=t; } } void sorts(Worker w[], int wn) { for(int i=0; i<wn-1; i++) for(int j=i+1; j<wn; j++) if(w[i]>>w[j]) { Worker t=w[i]; w[i]=w[j]; w[j]=t; } } void main() { Worker w[20]; int wn=0; char fname[80]; clrscr(); puts("Enter data file name(blank line for console)\n"); gets(fname); wn=readall(w, 20, fname); printf("\nRecords read: %d\n", wn); writeall(w, wn, NULL); getch(); sortns(w, wn); puts("\nSorted by name and surname\n"); writeall(w, wn, NULL); getch(); sorts(w, wn); puts("\nSorted by selery\n"); writeall(w, wn, NULL); getch(); return; } Результати компютерної реалізації програми: Результати компютерної реалізації програми виправдали очікування і підтвардили правильність її складання. Нижче наведено скріншот, який демонструє це:  Висновки Під час виконання роботи я придбав і закріпив навики в роботі із записами, в інтергациі даних, в модульному програмуванні.
Антиботан аватар за замовчуванням

30.11.2012 00:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!