Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_07_Структуры-VC++7-2003.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
157 Кб
Скачать
☆

Содержание работы

  1. Создать проект консольного приложения Lab7.

  2. Вставить в проект новый текстовый файл исходных данных, выполнив команду меню Project | Add New Item... , где на вкладке Templates выделить строку Text File, в окне редактирования Name набрать имя вставляемого файла Lab7.inp. Подтвердить установки нажатием кнопки ОК.

  3. В новый файл Lab7.inp ввести с клавиатуры набор данных исходного массива структур:

Ivanov 1975 carpenter

Sidorov 1961 leader

Petrov 1974 fitter

Pavlov 1977 mason

Potapov 1966 mason

  1. В существующий файл 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;

}

  1. Выполнить построение проекта командой меню Build \ Build lab7.exe.

  2. З апустить на выполнение созданное консольное приложение командой меню Debug | Start Without Debugging.

  3. Проанализировать исходные данные на экране. Скопировать содержимое окна консоли в память (Alt+Print Screen) для переноса в отчет.

  4. Вернуться в среду редактирования нажатием любой клавиши.

  5. Добавить файл выходных результатов Lab7.out в проект выполнив команду Project \ Add Existing Item... (в окне «Тип файлов» надо установить фильтр «All Files», чтобы увидеть в списке файл Lab7.out). Открыть его в окне редактора, дважды щелкнув левой кнопкой мыши на его имени на вкладке FileView панели Workspace.

  6. Проанализировать результаты расчета, выведенные в файл 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

  1. Завершить работу интегрированной среды Microsoft Visual C++, выполнив команду меню File \ Exit.

  2. Оформить отчет о проделанной лабораторной работе.