Содержание работы
Создать проект консольного приложения Lab7.
Вставить в проект новый текстовый файл исходных данных, выполнив команду меню Project | Add New Item... , где на вкладке Templates выделить строку Text File, в окне редактирования Name набрать имя вставляемого файла Lab7.inp. Подтвердить установки нажатием кнопки ОК.
В новый файл Lab7.inp ввести с клавиатуры набор данных исходного массива структур:
Ivanov 1975 carpenter
Sidorov 1961 leader
Petrov 1974 fitter
Pavlov 1977 mason
Potapov 1966 mason
В существующий файл Lab7.cpp с заготовкой главной программы консольного приложения набрать необходимый текст:
// Lab7.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
const int N=5; // количество рабочих в бригаде
const int M=10; // максимальное количество символов в имени рабочего
const int K=10;
struct Worker // объявление структуры
{
char Name[M]; // фамилия рабочего
Int Year; // год его рождения
char Speciality[K];
};
int main(int argc, char* argv[])
{
Worker Brigade[N]; // массив N структур
Worker Oldest; // структура данных старейшего из рабочих
Worker* Man=new Worker; // временная динамическая структура для сортировки
int i; // счетчик для массива структур
FILE* fp; // файловая переменная
fp=fopen("lab7.inp","r"); // открыть файл с исходным списком данных
for(i=0; i<N; i++) // считывание соответствующих членов массива структур
fscanf(fp,"%s %d %s",&Brigade[i].Name,&Brigade[i].Year,&Brigade[i].Speciality);
fclose(fp); // закрыть файл
printf(" List of workers:\n\n"); // печать исходного списка рабочих на экран
for(i=0; i<N; i++)
printf(" %-10s %4d %-10s\n",Brigade[i].Name,Brigade[i].Year,Brigade[i].Speciality);
// Поиск старейшего рабочего и сохранение его данных в переменной Oldest
// За эталон в начале поиска берем нулевой элемент массива
strcpy(Oldest.Name, Brigade[0].Name);
Oldest.Year=Brigade[0].Year;
strcpy(Oldest.Speciality, Brigade[0].Speciality);
for(i=1; i<N; i++) // поиск в цикле старейшего рабочего
{
if(Brigade[i].Year > Oldest.Year)
{
strcpy(Oldest.Name, Brigade[i].Name);
Oldest.Year=Brigade[i].Year;
strcpy(Oldest.Speciality, Brigade[i].Speciality);
}
}
// Двойной цикл сортировки элементов массива Worker.
// При перестановке элементов массива используется
// динамическая структура Man.
for(int j=0; j<N-1; j++)
for(i=0; i<N-1; i++)
if(Brigade[i].Year > Brigade[i+1].Year)
{
strcpy(Man->Name, Brigade[i].Name);
Man->Year=Brigade[i].Year;
strcpy(Man->Speciality, Brigade[i].Speciality);
strcpy(Brigade[i].Name, Brigade[i+1].Name);
Brigade[i].Year=Brigade[i+1].Year;
strcpy(Brigade[i].Speciality, Brigade[i+1].Speciality);
strcpy(Brigade[i+1].Name, Man->Name);
Brigade[i+1].Year=Man->Year;
strcpy(Brigade[i+1].Speciality, Man->Speciality);
}
delete Man; // возвращаем динамическую память
// запись в файл данных старейшего рабочего бригады
fp=fopen("lab7.out","w");
fprintf(fp," Oldest man - %s\n", Oldest.Name);
fprintf(fp," His age is - %d\n", Oldest.Year);
fprintf(fp," His speciality is - %s\n", Oldest.Speciality);
// запись в файл отсортированного списка данных рабочих бригады
fprintf(fp," \nNew List of workers:\n\n");
for(i=0; i<N; i++)
fprintf(fp," %-10s \t%4d \t%-10s\n",Brigade[i].Name,Brigade[i].Year,
Brigade[i].Speciality);
fclose(fp);
return 0;
}
Выполнить построение проекта командой меню Build \ Build lab7.exe.
З
апустить
на выполнение созданное консольное
приложение командой меню Debug
| Start Without Debugging.Проанализировать исходные данные на экране. Скопировать содержимое окна консоли в память (Alt+Print Screen) для переноса в отчет.
Вернуться в среду редактирования нажатием любой клавиши.
Добавить файл выходных результатов Lab7.out в проект выполнив команду Project \ Add Existing Item... (в окне «Тип файлов» надо установить фильтр «All Files», чтобы увидеть в списке файл Lab7.out). Открыть его в окне редактора, дважды щелкнув левой кнопкой мыши на его имени на вкладке FileView панели Workspace.
Проанализировать результаты расчета, выведенные в файл Lab7.out:
Oldest man - Sidorov
His age is - 1961
His speciality is - leader
New List of workers:
Sidorov 1961 leader
Potapov 1966 mason
Petrov 1974 fitter
Ivanov 1975 carpenter
Pavlov 1977 mason
Завершить работу интегрированной среды Microsoft Visual C++, выполнив команду меню File \ Exit.
Оформить отчет о проделанной лабораторной работе.
