Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 71

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.11.2024

Симакович А.А. Лабораторная работа №7.Структуры. Вариант 8.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ БЕЛАРУСЬ

БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Факультет информационных технологий и робототехники (ФИТР)

Кафедра программного обеспечения вычислительной техники

и автоматизированных систем

Отчет по лабораторной работе № 7

по дисциплине: ”Основы алгоритмизации и программирования”

на тему: ”Структуры ”

Вариант 8

Выполнил: ст. гр.107322 А.А.Симакович

                

Приняла: ст.пр. С.И.Пармон

Минск 2012

Лабораторная работа № 6. Структуры.

Цель работы: научиться работать со структурами и массивами структур.

Задание 1

Описать структуру с именем TRAIN, содержащую следующие поля:

название пункта назначения;

номер поезда;

время отправления.

Написать программу, выполняющую следующие действия:

ввод с клавиатуры данных в массив, состоящий из десяти структур типа TRAIN; записи должны быть упорядочены по времени отправления поезда;

вывод на дисплей информации о поездах, направляющихся в определенный пункт назначения (ввести с клавиатуры);

если таких поездов нет, вывести соответствующее сообщение.

Код программы:

#include <stdio.h>

#include <math.h>

#include <windows.h>

char buf[256];

char *rus(char *s) {CharToOem(s,buf); return buf;}

const unsigned int col = 10;

struct TRAIN{

char punktn[20];

unsigned int nomer;

unsigned int hour;

unsigned int min;

}trains[col];

void main()

{

for (unsigned int i=0;i<col;i++){ //ввод данных о поезде

printf(rus("Введите номер, пункт назначения, час и минуты отправления %u-го поезда.\n"),(i+1));

scanf("%u %s %u %u",&trains[i].nomer,&trains[i].punktn,&trains[i].hour,&trains[i].min);

}

unsigned int j;

TRAIN temp;

for (i=0;i<col;i++){ //сортировка по времени

for (j=i+1;j<col;j++){

if (trains[i].hour>trains[j].hour){

temp=trains[i];

trains[i]=trains[j];

trains[j]=temp;

}else if (trains[i].hour==trains[j].hour&&trains[i].min>trains[j].min){

temp=trains[i];

trains[i]=trains[j];

trains[j]=temp;

}

}

}     //окончание сортировки

char punkt[20];

bool ravn = false;

unsigned rez = 0;

printf(rus("Введите пункт назначения.\n"));

scanf("%s",punkt);

printf(rus("Поезда, следующие в этот пункт:\n"));

for (i=0;i<col;i++){

//printf(rus("%s,%s"),trains[i].punktn,punkt);

ravn=true;

for (j=0;j<20;j++){ //проверяем, есть ли такие поезда

if(isalpha(punkt[j])==false&&isalpha(trains[i].punktn[j])==false){break;}

if(trains[i].punktn[j]!=punkt[j]){ravn=false;break;}

}

if (ravn){

printf(rus("%3u - %10s - %2u:%2u.\n"),trains[i].nomer,trains[i].punktn,trains[i].hour,trains[i].min);

//выводим эти поезда

rez++;

//увеличивает количество результатов

}

}

if (rez==0){printf(rus("Поездов до указанного пункта не обнаружено.\n"));}

//соотв. сообщение в случае, если счетчик результатов равен нулю

}

Скриншоты результатов

Задание 2.

Описать структуру для хранения следующей информации (при необходимости используйте перечисления):

данные о недвижимости:

комната (площадь, к-во соседей, свободна(да/нет));

квартира (район (4 варианта), к-во комнат, площадь, этаж);

дом (район (4 варианта), площадь застройки, жилая площадь, процент готовности).

Создать массив из 5 таких структур.

Написать программу, выполняющую следующие действия:

добавление записи в массив; если в массиве нет места - вывести соответствующее сообщение;

удаление записи из массива; если такой записи нет - вывести соответствующее сообщение;

вывод всех записей массива.

Код программы

#include <stdio.h>

#include <math.h>

#include <windows.h>

char buf[256];

char *rus(char *s) {CharToOem(s,buf); return buf;}

struct Tkomnata{

float pl;

unsigned int sosedi;

bool svobodna;

};

struct Tkvartira{

unsigned int rayon;

unsigned int komnat;

float pl;

unsigned int etazh;

};

struct Tdom{

unsigned int rayon;

float plz;

float pl;

float procent;

};

struct Tnedv{

Tkomnata komnata;

Tkvartira kvartira;

Tdom dom;

bool clear;

}nedv[5];

void show(){

for (unsigned int j=0;j<5;j++){

 if (nedv[j].clear==false){

 printf(rus("Содержимое %u-ой ячейки массива.\n"),j);

 printf(rus("Площадь комнаты - %3.1f,к-во соседей - %u,комната свободна - "),nedv[j].komnata.pl,nedv[j].komnata.sosedi);

  if (nedv[j].komnata.svobodna)printf(rus("да.\n"));else printf(rus("нет.\n"));

 printf(rus("Площадь квартиры - %3.1f,к-во комнат - %u,этажей - %u,район - "),nedv[j].kvartira.pl,nedv[j].kvartira.komnat,nedv[j].kvartira.etazh);

 switch(nedv[j].kvartira.rayon){

 case 0:{printf(rus("Октябрьский.\n"));continue;}

 case 1:{printf(rus("Центральный.\n"));continue;}

 case 2:{printf(rus("Первомайский.\n"));continue;}

 case 3:{printf(rus("Советский.\n"));continue;}

 }

 printf(rus("Площадь дома - %3.1f,пл-дь застройки - %3.1f,проц.готовности - %3.1f,район - "),nedv[j].dom.pl,nedv[j].dom.plz,nedv[j].dom.procent);

 switch(nedv[j].kvartira.rayon){

 case 0:{printf(rus("Октябрьский.\n"));continue;}

 case 1:{printf(rus("Центральный.\n"));continue;}

 case 2:{printf(rus("Первомайский.\n"));continue;}

 case 3:{printf(rus("Советский.\n"));continue;}

 }

 }else printf(rus("Элемент массива под номером %u пуст.\n"),j);

 }

}

void add(){

unsigned int j;

for (unsigned int k=0;k<5;k++){

 if (nedv[k].clear){j=k;break;}

 }

 if (j>=5){printf(rus("В массиве нет места.\n"));return;}

 printf(rus("Введите площадь комнаты,к-во соседей,свободна ли комната(1-да,0-нет).\n"));

 scanf("%f %u %u",&nedv[j].komnata.pl,&nedv[j].komnata.sosedi,&nedv[j].komnata.svobodna);

 printf(rus("Введите площадь кваритры,к-во комнат,этаж,район (0 для Октябрьского,1 для Центрального,2 для Первомайского,3 для Советского).\n"));

 scanf("%f %u %u %u",&nedv[j].kvartira.pl,&nedv[j].kvartira.komnat,&nedv[j].kvartira.etazh,&nedv[j].kvartira.rayon);

 printf(rus("Введите площадь дома,пл.застройки,проц.готовности,район (0 для Октябрьского,1 для Центрального,2 для Первомайского,3 для Советского).\n"));

 scanf("%f %u %u %u",&nedv[j].dom.pl,&nedv[j].dom.plz,&nedv[j].dom.procent,&nedv[j].dom.rayon);

 nedv[k].clear=false;

}

void remove(){

unsigned int j;

 printf(rus("Введитен номер элемента для удаления.\n"));

 scanf("%u",&j);

 if (j<0||j>4||nedv[j].clear==true){printf(rus("Элемент отсутствует.\n"));return;}

 nedv[j].clear=true;

};

void main()

{

void show();

void add();

void remove();

unsigned int n;

for (unsigned int i=0;i<5;i++){nedv[i].clear=true;}

while(1){

 n=0;

 printf(rus("Введите действие. 1 - для вывода массива, 2 - для добавления элемента, 3 - для удаления элемента.\n"));

 scanf("%u",&n);

switch(n){

case 1:{show();continue;}

case 2:{add();continue;}

case 3:{remove();continue;}

}

}

}

Скриншоты результатов

Работа программы при попытке удалить несуществующий элемент или записать более, чем 5 элементов:

Работа программы для выведения данных, записи и удаления:

Вывод: Я научился работать со структурами и массивами структур.

7




1. записка Програму зовнішнього незалежного оцінювання з української мови далі ~ програма ЗНО розроблено з у
2. Расчеты с поставщиками и подрядчиками
3. явян есть понятие родовое выражающее общие черты присущие человеческому роду
4. Астагфируллах Прошу прощения у Аллаха Аллахумма антассаляму ва минкассалям Табаракта йа заль
5. Теплоотдача при свободном движении жидкости вдоль вертикальной пластины
6. Поярков Василий Данилович
7. Планирование и исследование деятельности автотранспортного предприятия
8. Понятия формы и признаки множественности преступлений
9. Регулярное выражение несет регулярный язык; для всякого регулярного языка имеется несущее его регулярное в
10. Уже был сдан багаж уже на руках был посадочный талон а она плакала.html
11. Воля и разум- нужны ли России такие борцы за народное счастье Ильин А
12. Взаимодействие между процессами
13. Old nd new wedding customs nd trditions in Gret Britin nd the US
14. В сетевом планировании критический путь представляет собой- самый длинный В системе управления н
15. Тема 1- Экосистемы многообразие живых организмов основа организации и устойчивости живых систем1
16. Формирование психологии как самостоятельной науки
17. Курсовая работа- Роль та значення рухливих ігор у розвитку фізичних здібностей дошкільника з інтелектуальними порушеннями
18. Тема- Строительные материалы 1
19. Тема 1- Этапы создания рекламного текста Задания- Ознакомьтесь с мнением известного российского спе
20. для оцінки запасів та визначення фінансового результату; 2 для прийняття управлінських рішень; 3 для ко