48696

Описать структуру с именем TRAIN

Курсовая

Информатика, кибернетика и программирование

Алгоритм функции print_str представлен на рисунке Алгоритм функции input_str представлен на рисунке Алгоритм функции print_str представлен на рисунке 2. Рисунок 2 Алгоритм функции input_str представлен на рисунке 3.

Русский

2013-12-13

746.5 KB

69 чел.

8

Министерство образования и науки Российской Федерации

Российский государственный гидрометеорологический университет

Кафедра Информационных технологий и систем безопасности

КУРСОВАЯ РАБОТА

по дисциплине: «Языки программирования»

Вариант №7

Выполнил: студент гр. ИБ-239

Минкин П.А.

Проверил: Доцент кафедры ИТ и СБ

Шишкин А. Д.

Санкт-Петербург

2012

СОДЕРЖАНИЕ

[1] СОДЕРЖАНИЕ

[2] Задание на курсовое проектирование по дисциплине «Языки программирования»

[3] Алгоритм главной функции main( ). Главная функция предназначена для вызова всех функций представлена на рисунке 1.

[4] Алгоритм функции print_str( ) представлен на рисунке 2. Функция выводит на экран элементы структуры.

[5] Алгоритм функции input_str( ) представлен на рисунке 3. Функция позволяет задать новые значения для переменных структуры.

[6] Алгоритм функции sortBydest_city( )  на рисунке 4. Функция сортирует названия городов по алфавиту и построена на принципе быстрой сортировки.

[7] Алгоритм функции sortBytime( ) на рисунке 5 Функция производит вывод на экран тех поездов, время которых позднее указанного.

[8] Название программы: «Структуры и операции с ними»

[9] Листинг Программы:

[10] Вывод результатов

[11] Список используемой литературы:

Задание на курсовое проектирование по дисциплине «Языки программирования»

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

  •  название пункта назначения ;
  •  номер поезда;
  •  время отправления;

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

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

Содержание проекта:

  1.  Постановка задачи и метод решения.
  2.  Алгоритм модулей и главной функции.
  3.  Листинг программы.
  4.  Результаты тестирования программы.
  5.  Использованная литература

Дата выдачи «____»    сентября 2012 г.

Дата сдачи «____»    декабря 2012г.

Задание выдал                                                                    доц. Шишкин А.Д.

Задание получил                                                               студент Минкин П.А.

Санкт-Петербург

2012

Алгоритм главной функции main( ). Главная функция предназначена для вызова всех функций представлена на рисунке 1. 

 

Рисунок 1.

Алгоритм функции print_str( ) представлен на рисунке 2. Функция выводит на экран элементы структуры.

Рисунок 2

Алгоритм функции input_str( ) представлен на рисунке 3. Функция позволяет задать новые значения для переменных структуры.

Рисунок 3

Алгоритм функции sortBydest_city( )  на рисунке 4. Функция сортирует названия городов по алфавиту и построена на принципе быстрой сортировки.

Рисунок 4

Алгоритм функции sortBytime( ) на рисунке 5 Функция производит вывод на экран тех поездов, время которых позднее указанного.

Рисунок 5

Название программы: «Структуры и операции с ними»

Автор: студент группы Иб-239 Минкин Павел

Листинг Программы:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

#define BUFFER 64

#define SEP "___________________________________________"

#define SIZE 8

typedef struct TRAIN

{ char dest_city[BUFFER];

char* tr_num;

int dep_time_h;

int dep_time_m;

} train_t str[SIZE];

void input_str(train_t *str, size_t size)

{int k;

clrscr();

size_t i;

printf("%s\nFilling a NEW train base\n%s\n",SEP,SEP);

 for ( i = 0; i < size; i++ )

 { k=0; k=i+1;

   printf("Train # [%d]\nDestination city      : ",k);

   scanf("%s", &str[i].dest_city);

   printf("Train number          : ");

   scanf("%s", &(char)str[i].tr_num);

   printf("Departure time HOUR   : ");

   scanf("%d", &str[i].dep_time_h);

   printf("Departure time MINUTES: ");

   scanf("%d", &str[i].dep_time_m);}

void sortBytime(int low_h, int low_m, const train_t *str, size_t size)

{ clrscr();

 size_t i;

 int j=0, sc=0;

 printf("%s\nDestanation city   Tr.num.  Departure time \n%s\n", SEP, SEP);

  for ( i = 0; i < size;i++)

{ if (str[i].dep_time_h < low_h || str[i].dep_time_h == low_h && str[i].dep_time_m < low_m || str[i].dep_time_m == low_m)

    sc=j++; }

if (sc>=7)

printf("ERROR!\nThere are no trains after entered time!\n\n\n\n\n\n\n");

if (sc<7)

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

  { if (str[i].dep_time_h > low_h)

   {if(str[i].dep_time_h >10 && str[i].dep_time_m >10)

    printf("%-20s%-8s %d:%d \n", str[i].dest_city, str[i].tr_num, str[i].dep_time_h, str[i].dep_time_m);

    if(str[i].dep_time_h >10 && str[i].dep_time_m <10)

    printf("%-20s%-8s %d:0%d \n", str[i].dest_city, str[i].tr_num, str[i].dep_time_h, str[i].dep_time_m);

    if(str[i].dep_time_h <10 && str[i].dep_time_m >10)

    printf("%-20s%-8s  %d:%d \n", str[i].dest_city, str[i].tr_num, str[i].dep_time_h, str[i].dep_time_m);

    if(str[i].dep_time_h <10 && str[i].dep_time_m <10)

    printf("%-20s%-8s  %d:0%d \n", str[i].dest_city, str[i].tr_num, str[i].dep_time_h, str[i].dep_time_m);

   }}}

int sortBydest_city(const void *a, const void *b)

{ int delta = stricmp((*(train_t*)a).dest_city,(*(train_t*)b).dest_city);

 if ( delta < 0.0 )     return -1;

 else if ( delta > 0.0 )     return 1;

 else   return 0;}

void print_str(const train_t *str, size_t size)

{ clrscr();

 size_t i;

 printf("%s\nDestanation city   Tr.num.  Departure time \n%s\n", SEP, SEP);

 for ( i = 0; i < size; i++ )

{  if(str[i].dep_time_h >10 && str[i].dep_time_m >10)

 printf("%-20s%-8s %d:%d \n", str[i].dest_city, str[i].tr_num, str[i].dep_time_h, str[i].dep_time_m);

 if(str[i].dep_time_h >10 && str[i].dep_time_m <10)

 printf("%-20s%-8s %d:0%d \n", str[i].dest_city, str[i].tr_num, str[i].dep_time_h, str[i].dep_time_m);

 if(str[i].dep_time_h <10 && str[i].dep_time_m >10)

 printf("%-20s%-8s  %d:%d \n", str[i].dest_city, str[i].tr_num, str[i].dep_time_h, str[i].dep_time_m);

 if(str[i].dep_time_h <10 && str[i].dep_time_m <10)

 printf("%-20s%-8s  %d:0%d \n", str[i].dest_city, str[i].tr_num, str[i].dep_time_h, str[i].dep_time_m);}

printf("%s\n", SEP);}

int menuMsg()

{ int ret;

 printf("%s\nMENU:\n[1] Print all\n[2] NEW base\n[3] Show all after entered dep. time\n[4] Sort by alphabet\n[5] INFO\n[0] EXIT\n%s \n > ", SEP,SEP);}

int main(void)

{ clrscr();

 train_t str[SIZE] =

{  {"Moscow", "55342", 12, 0},    {"S.-Petersburg", "33245",18, 5},    {"Novgorod", "78425", 17, 0},    {"Novgorod", "95662", 22, 0},    {"S.-Petersburg", "45978", 23, 20},    {"Novgorod", "45512", 14, 50},    {"S.-Petersburg", "94875", 17, 20},  {"London", "23145", 9, 7}, };

int menu, found, low_h, low_m;

char buf[BUFFER], *p;

  while ( 1 ) {  menu = menuMsg();

   switch ( menu )

 { case 1 :    print_str(str, SIZE);    break;

   case 2 :    input_str(str, SIZE);    print_str(str, SIZE);    break;

   case 3 :    printf("Show all from time\n");    printf("HOUR   :");    scanf("%d", &low_h);    printf("MINUTES:");    scanf("%d", &low_m);   sortBytime(low_h, low_m, str, SIZE);    break;

   case 4 :    qsort(str, SIZE, sizeof(train_t), sortBydest_city);    print_str(str, SIZE);    break;

   case 5 :    print_info();    break;

   case 0 :    exit(0);

   default :    clrscr();

   printf("%s\n ERROR!\n Menu index is not correct\n",SEP);} }}

Вывод результатов

Функция print_str() Функция вывода структуры на экран. (Рисунок 5)

 Рисунок 5

input_str() Функция ввода структуры (Рисунок 6)

Рисунок 6

sortBytime() Функция сортировки по времени(Рисунок 7)

Рисунок 7

sortBydest_city() Функция сортировки по алфавиту (Рисунок 8)

 Рисунок 8

Список используемой литературы:

1) Шишкин, А. Д. Программирование на языке СИ : Учебное пособие – Санкт-Петербург.: РГГМУ, 2003.

2) Введение в язык С++ Бьярн Страустрап, 1995 г.

3) Шишкин, А. Д. Программирование на языке СИ : Практикум  – Санкт-Петербург.: РГГМУ, 2003.


menuMsg( )

print_str( )

sortBytime( )

Конец

input_str( )

Начало

witch()

sortBydest_city()

print_info( )

exit( )

Функция передачи

управления

1

2

4

5

6

7

8

9

10

3

Начало

i=0; i<size

Вывод

str[i].dest_citystr[i].tr_num str[i].dep_time

Конец

Конец цикла

1

2

4

5

3

город назначения

номер поезда

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

Начало

i=0; i<size

Конец

Конец цикла

Ввод

str[i].dest_city

str[i].tr_num str[i].dep_time

1

4

3

5

2

город     назначения

номер поезда

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

 

 

1

Начало

Конец

delta=stricmp()

delta=?

qsort( )

0

-1

1

3

2

5

4

cравнение двух строк и присвоение результата переменной delta

 

 

Стандартное действие «быстрая сортировка»

 

 

Начало

i=0; i<size

Конец

Конец цикла

j++, sc=j

SC>=7?

Да

Нет

Сообщение об ошибке

Вывод элементов

i=0; i<size

Конец цикла

1

5

12

8

10

7

11

9

h>h1?

3

Да

Нет

введенное время > заданного в структуре?

 

 

6

sc=0, j=0

2

4


 

А также другие работы, которые могут Вас заинтересовать

50240. Г. Спенсер как основатель органической школы в социологии 15 KB
  Герберта Спенсера считают основателем органической школы в социологии. В фундаментальном труде Основы социологии (1877) Спенсер проводил аналогии между биологической и социальной эволюцией, между живым организмом и обществом
50241. Принципы построения бухгалтерского финансового учета 80.5 KB
  Информация, которая формируется в системе бухгалтерского учета хозяйствующих субъектов, должна отвечать требованиям всех заинтересованных пользователей. В зависимости от круга интересов различных групп пользователей информацией в системе бухгалтерского учета можно выделить взаимосвязанные подсистемы
50242. ЭЛЕКТРОИСКРОВОЕ ЛЕГИРОВАНИЕ МЕТАЛЛИЧЕСКИХ МАТЕРИАЛОВ 411 KB
  Этот способ имеет следующие специфические свойства: материал анода легирующий материал может образовывать на поверхности катода легируемая поверхность прочно сцепленный с ней слой покрытия. В этом случае между материалом основы и покрытием существует промежуточный слой в котором протекают диффузионные процессы элементов катода и анода; процесс легирования может происходить так что материал анода не образует покрытия на поверхности катода а диффузно обогащает ее своими составляющими элементами; легирование можно проводить...
50243. ОПРЕДЕЛЕНИЕ МОМЕНТОВ ИНЕРЦИИ ТЕЛ МЕТОДОМ КРУТИЛЬНЫХ КОЛЕБАНИЙ 183.5 KB
  Инертные свойства тела при вращении определяются не только массой тела, но и расположением отдельных частей тела по отношению к оси вращения. Для характеристики этих свойств вводится понятие момента инерции.
50245. Понятие отчета в СУБД Access и его основных элементов 117 KB
  Понятие отчета в СУБД ccess и его основных элементов Отчеты представляют собой наилучшее средство представления информации из базы данных в виде печатного документа. Основные сведения об отчетах Рис.1 Вид окна Новый отчет Для создания отчета в окне базы данных выбираем пункт Отчет в раскрывающемся списке кнопки Новый объект на панели инструментов или кнопку Создать на вкладке Отчеты . Мастер отчетов запускает основного мастера для создания отчетов позволяющего выбрать поля для отчета задать форматы условия группировки и итоговые...
50246. Пояснить создание и настройку отчета в режиме конструктора СУБД Access 22.5 KB
  Настройка отчетов Чтобы изменить размер выделенного элемента управления можно воспользоваться маркерами изменения размера находящимися на сторонах в нижних углах и в правом верхнем углу. Для перемещения невыделенного элемента управления используйте указатель мыши. Если элемент управления имеет присоединенную надпись она перемещается вместе с ним. перемещать элемент управления и присоединенную надпись можно независимо друг от друга с помощью маркеров перемещения расположенных в левых верхних углах элемента управления и надписи.
50247. Визначення енергії дисоціації молекул йоду 896.5 KB
  Лабораторна установка для вивчення спектрів поглинання розчинів йоду зібрана на базі монохроматора УМ–2 який використовується як спектроскоп. 3 виділені оптичні елементи що входять до складу монохроматора. 2 сфокусоване конденсорною лінзою 3 світло проходить через досліджуваний розчин 4 і потрапляє на вхідну щілину 6 монохроматора. Градуювання монохроматора Для цього потрібно див.
50248. СНЯТИЕ КРИВОЙ НАМАГНИЧИВАНИЯ И ПЕТЛИ ГИСТЕРЕЗИСА ФЕРРОМАГНИТНЫХ ВЕЩЕСТВ С ПОМОЩЬЮ ОСЦИЛЛОГРАФА 881.5 KB
  Классический расчет для круговой орбиты дает где eзаряд электрона;  его линейная скорость; rрадиус орбиты. Если для данного вещества экспериментально получить зависимость J=JH которая одинакова для образцов любой формы и размеров и рассчитать по формуле 2 H то на основании уравнения 1 можно найти индукцию магнитного поля в веществе. Экспериментально наиболее просто J=JH определяется для образца в виде тороида на который равномерно нанесены витки провода. 3...