48696

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

Курсовая

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

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

Русский

2013-12-13

746.5 KB

75 чел.

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


 

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

57827. Урок-суд «Сталин – кто он?» 137 KB
  ЦЕЛЬ: обобщить и закрепить знания учащихся по теме «СССР в 30-е годы ХХ века», рассмотреть основные направления внутренней и внешней политики в этот период развития СССР на примере деятельности исторической личности Иосифа Виссарионовича Сталина...
57828. Запліднення. Генетичне визначення статі. Вагітність 72.5 KB
  Основне поняття: сперматозоїд яйцеклітина овуляція запліднення вагітність зигота ембріон плід плацента хромосоми. Робота в парах Слайд 3 Обличчям до обличчя один у двох усі разом Девіз: Думати працювати у парі обмінюватися думками...
57829. Прийняття рішень в умовах невизначеності 527 KB
  Чим займається наука статистика Відповідь. Що таке математична статистика Відповідь. Що таке вибірка Навіщо використовують вибіркове спостереження Відповідь. Що таке ранжування Відповідь.
57830. Внутрішня будова стебла. Транспорт речовин по рослині 113 KB
  Мета уроку: Сформувати в учнів поняття про внутрішню будову стебла, зокрема кору, камбій, деревину, серцевину, їх будову і значення, про взаємозв’язок будови клітин і тканин стебла з їх фунціями...
57831. ВЛАСТИВОСТІ СТЕПЕНЯ ІЗ ЦІЛИМ ПОКАЗНИКОМ 2.17 MB
  Мета: працювати над засвоєнням учнями означення степеня з цілим показником та його властивостей; формувати вміння застосовувати означення і властивості степеня з цілим показником до обчислення значень виразів і перетворення виразів зі змінними...
57832. Перетворення виразів, що містять степінь з цілим показником 651 KB
  Число до якого ми підносимо основу степеня називається показником 3 Як називається число до якого ми підносимо основу степеня 3 Число яке ми підносимо до степеняназивається основою 4 Яке число ми отримуємо при піднесенні до...
57833. Степінь з цілим показником 79 KB
  Що називається степенем числа а з натуральним показником n 2. Парна степінь відємного числа завжди яке число 4. Непарна степінь відємного числа завжди яке число 5. Як називаються два дійсних числа сума яких дорівнює нулю 6.
57834. Штучні супутники Землі. Розвиток космонавтики 355.5 KB
  Розвивати творчу ініціативу і активність учнів, спостережливість, здатність логічно мислити, вміння робити висновки, узагальнення, розвивати пізнавальні здібності, навички працювати з науково-популярною літературою...
57835. Світ після Другої світової війни 756.5 KB
  При викладенні матеріалу застосовано дослідницькопошуковий метод і метод проектної роботи з історичним матеріалом розкрито творчий потенціал учнів. Продемонстровано різні методи...