Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Министерство образования и науки Российской Федерации
Новосибирский Государственный Технический Университет
Кафедра прикладной математики
Лабораторная работа №4
По дисциплине: Структуры данных и алгоритмы
Факультет: ПМИ
Группа: ПМИ-71
Студент: Рябинкин С.А.
Преподаватель: Еланцева И.Л.
Новосибирск 2008 г
1.Условие задачи
В файле «Авто» дана информация об автомобилях: «номер а/м», «ФИО владельца», «марка а/м». Создать таблицу «Автовладельцы», с элементами такого же вида. Таблица должна быть
в) Упорядочена по возрастанию «номер а/м»
Информация о разбившихся машинах дана в файле «Аварии».Элементы файла «Аварии»:«номер а/м» Информация в файле «Аварии» упорядочена по возрастанию номеров машин.
а) Исключить из таблицы «Автовладельцы» информацию о разбившихся автомобилях.
2.Анализ задачи
Дано: «Авто» = «владелец» «Авто» |«владелец»
«владелец»= «номер а/м» «ФИО владельца» «марка а/м» \n
«номер а/м» - задано целым числом
«ФИО владельца» - символьный≤30
«марка а/м» - символьный≤10
«Аварии»= «номер а/м» «Аварии»| «номер а/м»
Результат: упорядоченная по возрастанию «номер а/м», исключая владельцев машины с номерами из файла «Аварии» таблица
Т={ «номер а/м» «ФИО владельца» «марка а/м»}
Метод решения:
Читаем таблицу из файла. Читаем первый элемент из файла.
ПОКА (!feof(f1))
Читаем элемент из файла nomer
ЕСЛИ
(nomer<T.S[i].HOMEP)
ТО
Сдвигаем таблицу вверх
ПОКА (!feof(f2))
Читаем элемент из файла nomav
ЕСЛИ
nomav==T.S[i].HOMEP
ТО
Сдвигаем таблицу вниз
Вывод таблицы
3.Структура основных входных и выходных данных.
Таблица будет упорядоченной, статической, вида:
struct avto{ int HOMEP; - Номер машины
char FIO[30]; - ФИО владельца машины
char MAPKA[10]; - марка машины
};
struct table1{struct avto S[N]; - элементы таблицы
int n; - количество элементов в таблице
} T;
struct avariya{int HOMEP; - Номер машины
};
struct table2{struct avariya Q[M]; - элементы таблицы
int m; - количество элементов в таблице
} P;
4. Алгоритм решения задачи
5.Текст программы
#include <stdio.h>
#include <string.h>
#define N 20
#define M 20
struct avto{ int HOMEP;
char FIO[30];
char MAPKA[10];
};
struct table1{struct avto S[N];
int n;} T;
struct avariya{int HOMEP;
};
struct table2{struct avariya Q[M];
int m; } P;
void main() {int nomer, nomav, f=0;
FILE *f1, *f2;
f1 = fopen("D:/Avto.txt", "r");
if (f1 == 0) {printf("No open!\n");}
f2 = fopen("D:/Avariya.txt", "r");
if (f2 == 0) {printf("No open!\n");}
fscanf(f1, "%i %s %s", &T.S[0].HOMEP, T.S[0].FIO, T.S[0].MAPKA);
T.n=1;
while (!feof(f1)) {
fscanf(f1, "%i", &nomer);
for(int i=0, f=0;i<T.n&&f!=1;i++) {
if(nomer<T.S[i].HOMEP) {
for(int j=T.n; j>=i;j--) {
T.S[j+1].HOMEP=T.S[j].HOMEP;
strcpy(T.S[j+1].FIO, T.S[j].FIO);
strcpy(T.S[j+1].MAPKA, T.S[j].MAPKA);
}
T.S[j+1].HOMEP=nomer;
fscanf(f1, "%s %s", T.S[j+1].FIO, T.S[j+1].MAPKA);
T.n=T.n+1;
f=1;
}
}
if(f!=1) {
T.S[i].HOMEP=nomer;
fscanf(f1, "%s %s", T.S[i].FIO, T.S[i].MAPKA);
T.n=T.n+1;
}
}
fclose(f1);
while (!feof(f2)) {
fscanf(f2, "%i", &nomav);
for(int f=0; f<T.n; f++) {
if(nomav==T.S[f].HOMEP) {
for(int k=f; k<T.n-1;k++) {
T.S[k].HOMEP=T.S[k+1].HOMEP;
strcpy(T.S[k].FIO, T.S[k+1].FIO);
strcpy(T.S[k].MAPKA, T.S[k+1].MAPKA);
}
T.n=T.n-1;
}
}
}
for(int c=0;c<T.n; c++) {
printf ("\n%i %s %s", T.S[c].HOMEP, T.S[c].FIO, T.S[c].MAPKA);
}
fclose(f2);}
6. Тесты.
№ |
Файл avto |
файл avariya |
Результат |
Примечание |
1 |
123 SidorovSidorSidorivich Lada 201 DemarchykKoctynIgorevich Hummerh3 303 PetrovIvanOlegovich Toyota |
123 |
201 DemarchykKoctynIgorevich Hummerh3 303 PetrovIvanOlegovich Toyota |
Файл avto упорядочен |
2 |
123 SidorovSidorSidorivich Lada 201 DemarchykKoctynIgorevich Hummerh3 303 PetrovIvanOlegovich Toyota |
123 SidorovSidorSidorivich Lada 201 DemarchykKoctynIgorevich Hummerh3 303 PetrovIvanOlegovich Toyota |
Файл avaruya пуст |
|
3 |
234 IvanovIvanIvanovich Honda 345 PetrovPetrPetrovich ZAZ 123 SidorovSidorSidorivich Lada 201 DemarchykKoctynIgorevich Hummerh3 303 PetrovIvanOlegovich Toyota 789 PlaksinKostyanOlegovich Volga |
123 789 |
201 DemarchykKoctynIgorevich Hummerh3 234 IvanovIvanIvanovich Honda 303 PetrovIvanOlegovich Toyota 345 PetrovPetrPetrovich ZAZ |
Файл avto неупорядочен и файл avariya содержит несколько элементов |
7. Результаты работы программы
Программа работает правильно, что подтверждается результатами тестов.
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.