close

Вход

Забыли?

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

?

1 ( )

код для вставкиСкачать
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОУ ВПО "НИЖНЕВАРТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ"
ЛАБОРАТОРНАЯ РАБОТА №1я
По курсу
"Структуры и алгоритмы обработки данных"
Факультет Информатики и Вычислительной Техники
3 семестр
вариант № 4
Выполнил:
студент гр. 22, дневное отделение
Королёв В.О.
Проверил:
___________________Т.Б. Казиахметов
Нижневартовск, 2013
Записи. Реализация стека, очереди на статических структурах
Задание№1:
1. Создать запись Работник следующей структуры: ФИО, Должность, Образование- строки, стаж работы - байтовое число. Написать программу, реализующую следующее меню: * добавить элемент в файл
* удалить элемент из файла
* принадлежность элемента файлу
* вывод всех записей на экран
Код программы:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
#include <windows.h>
struct rabotnik
{char fio[64];
char prof[64];
char educ[64];
int exp;
int num;
};
void enter(rabotnik *p){
int i=0;
while (p[i].num!=0) i++;
system ("cls");
printf("Фамилия работника:\n"); scanf("%s",&p[i].fio);
printf("Должность:\n"); scanf("%s",&p[i].prof);
printf("Образование:\n"); scanf("%s",&p[i].educ);
printf("Стаж:\n"); scanf("%d",&p[i].exp);
p[i].num=1;
}
void out(rabotnik *p){
system ("cls");
int i=0;
while (p[i].num!=0){
//for (i=0;i<=32;i++){
printf("\n#%d\tФамилия: %s\n\tДолжность: %s\n\tОбразование: %s\n\tСтаж: %d\n\n",
i+1, p[i].fio, p[i].prof, p[i].educ, p[i].exp);
i++;
}
}
void delet(rabotnik *p, int n){
int del;
system ("cls");
out(p);
printf("\nВведите номер удаляемого сотрудника\n"); scanf("%d",&del);
del--;
printf("\nСотрудник %s удален из базы",p[del].fio);
for (int i=del;i<n;i++)
p[i]=p[i+1];
getch();
}
int main (){
setlocale(0,"");
FILE *f;
f=fopen("1-1.dat","rb");
int n=64,q,i=0;
struct rabotnik p[n];
struct rabotnik p2[n];
for (int j=0;j<=n;j++) p[j].num=0;
int res=fread(p, sizeof(rabotnik),n,f);
while (q!=5){
system ("cls");
printf("1-Добавление элемента\n2-Удаление элемента\n3-Принадлежность к файлу\n4-Вывод всех записей на экран\n5-Выход\n");
scanf("%d",&q);
switch (q){
case 1:{
enter(p);
i++;}; break;
case 2:
{
delet(p,n);
}; break;
case 3:{
f=fopen("1-1.dat","rb");
res=fread(p2,sizeof(rabotnik),n,f);
out(p);
printf("\n\nВведите номер сотрудника\n");
int j,flag=0;
scanf("%d",&j);
j--;
for (i=0;i<=n;i++)
if ((p[i].num!=0)&&(stricmp(p[j].fio,p2[i].fio)==0)&&(stricmp(p[j].prof,p2[i].prof)==0)&&(p[j].exp==p2[i].exp)&&(stricmp(p[j].educ,p2[i].educ)==0))
{
printf("Сотрудник номер №%d (%s) сохранен в файл\n", j+1, p[j].fio);
printf("\n#%d\tДолжность: %s\n\tОбразование: %s\n\tСтаж: %d\n\n",
j+1, p[j].prof, p[j].educ, p[j].exp);
flag++;
break;
}
if (flag==0) printf("Сотрудник номер №%d (%s) не сохранен в файл", j+1, p[j].fio);
flag=0;
getch();
}; break;
case 4:{
out(p);
printf("\n\nНажмите любую клавишу");
getch();}; break;
}}
fclose(f);
f=fopen("1-1.dat","wb");
res=fwrite(p, sizeof(rabotnik),n,f);
fclose(f);
return 0; }
1) Добавление элемента:
2) Удаление элемента:
3) Принадлежность к файлу:
4) Вывод всех записей на экран
Задание№2:
Создать стек строк на основе статического массива. Реализовать методы : Добавить элемент, удалить элемент, вершина стека.
Код программы:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
#include <windows.h>
int main(){
struct stack{
char s[64];};
setlocale(0,"");
int i,n=64,mem=0,q;
stack m[n];
char s1[64];
while (q!=5){
system ("cls");
printf("1-Добавление элемента\n2-Удаление элемента\n3-Вывод стека\n4-Вершина стека\n5-Выход\n");
scanf("%d",&q);
switch(q)
{ case 1:
{
system ("cls");
printf("Заполнение стека. Break чтобы выйти\n");
for (i=mem;i<n;i++)
{
if (mem==n) {printf("Стек переполнен.\n"); getch(); break;}
printf("%d: ",i+1);
scanf("%s",s1);
if (stricmp(s1,"break")==0) {mem=i; break;}
else {strcpy(m[i].s,s1); mem=i+1;}
}
} break;
case 2:
{ if (mem==0) {printf("\t\nНельзя удалить: стек пуст"); getch(); break;}
for(i=mem-1;i<n;i++)
m[i]=m[i+1];
mem--;
printf("\n\tУдалено");
getch();
} break;
case 3:
{ if (mem==0) {printf("\t\nСтек пуст"); getch(); break;}
printf("Вывод стека:\n");
for(i=0;i<mem;i++)
printf("%d:\t%s\n",i+1,m[i].s);
getch();
} break;
case 4:
{ if (mem==0) {printf("\t\nСтек пуст"); getch(); break;}
printf("Вершина стека:\n%s\n",m[mem-1].s);
getch();
} break;
}
}
return 0;
}
1) Заполнение стека
2) Удаление элемента
3) Вершина стека
Задание№3:
Создать простую очередь вещественных чисел на основе статического массива. Реализовать методы : Добавить элемент, удалить элемент, длина очереди.
Код программы:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
#include <windows.h>
void enter(float *m, int &mem, int n)
{
float x1;
for (int i=mem;i<n;i++)
{
system ("cls");
printf("Заполнение очереди. 1234 чтобы выйти\n");
printf("%d: ",i+1);
scanf("%f",&x1);
if (x1==1234) {mem=i; break;}
m[i]=x1; mem=i+1;
}
}
void delet(float *m, int n)
{
for(int i=0;i<n;i++)
m[i]=m[i+1];
}
void enter2(float *m, int n)
{
float x1;
while(0==0){
system ("cls");
printf("Запись в конец очереди. 1234 чтобы выйти\n");
printf("%d: ",n);
scanf("%f",&x1);
if (x1==1234) break;
else{
delet(m,n);
m[n-1]=x1;}
}
}
int main(){
setlocale(0,"");
int i,n=10,mem=0,q;
float m[n];
while (q!=5){
system ("cls");
printf("1-Добавление элемента\n2-Удаление элемента\n3-Вывод очереди\n4-Длина очереди\n5-Выход\n");
scanf("%d",&q);
switch(q)
{ case 1:
{ if (mem<n)
enter(m,mem,n);
if (mem==n)
enter2(m,n);
} break;
case 2:
{
if (mem==0) {printf("\t\nОчередь пуста"); getch(); break;}
delet(m,n);
mem--;
printf("\n\tУдалено");
getch();
} break;
case 3:
{ if (mem==0) {printf("\t\nОчередь пуста"); getch(); break;}
printf("Вывод очереди:\n");
for(i=0;i<mem;i++)
printf("%d:\t%f\n",i+1,m[i]);
getch();
} break;
case 4:
{
printf("Длина очереди: %d",mem); getch();
} break;
}
}
return 0;
}
1) Заполнение очереди
2) Удаление элемента
3) Длина очереди
Документ
Категория
Рефераты
Просмотров
96
Размер файла
358 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа