Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
FaBoy
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 11
#1

Описать структуру с именем ITINERARY - C++

31.01.2014, 19:14. Просмотров 516. Ответов 5
Метки нет (Все метки)

Описать структуру с именем ITINERARY, который вмещает в себе, следующие
поля: FIRST– название начального пункта маршрута, FINAL–
название конечного пункта маршрута, NUM– номер маршрута,
DISTANCE– расстояние в километрах. Написать программу, которая отдельными функциями выполняет следующие пункты:
– введение с клавиатуры, данных в массив ROUT, который состоит из N
переменные типа ITINERARY;
– Упорядочить записи по убыванию расстояния в километрах;
– вывести на экран информацию про маршрут, номер номер которого введен с клавиатуры; если таких маршрутов нет, то вывести соответствующее сообщение.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 19:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Описать структуру с именем ITINERARY (C++):

Описать структуру с именем TRAIN - C++
Всем привет, помогите пожалуйста сделать задание на С++ (Вся исходная информация дана в файле. Полученный результат должен быть записан в...

Описать структуру с именем TRAIN - C++
Вот условие: Описать структуру с именем TRAIN, содержащую следующие поля: -название пункта назначения; -номер поезда; -время...

Описать структуру с именем TRAIN - C++
Нужна срочная помощь в написании программы(( помогите пожалуйстаО_о 1. Описать структуру с именем TRAIN, содержащую следующие поля: ...

Описать структуру с именем NOTE - C++
2.вывод на экран записей, которые должны быть упорядочены по алфавиту; Не могу понять в чем смысл задания.

Описать структуру с именем NOTE - C++
Пожалуйста помогите написать код программы. Описать структуру с именем NOTE, содержащую поля: -фамилия и имя; -номер телефона; ...

Описать структуру с именем TOVAR - C++
Помогите пожалуста!! 1 . Описать структуру с именем TOVAR , которая содержит следующие поля: - Name - название товара ; - Cost_Z -...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kill100
404 / 270 / 37
Регистрация: 11.12.2010
Сообщений: 1,148
Завершенные тесты: 1
31.01.2014, 21:54 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Как то так
Но код не идеален
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;
/*
Описать структуру с именем ITINERARY, который вмещает в себе, следующие
поля : FIRST– название начального пункта маршрута, FINAL–
название конечного пункта маршрута, NUM– номер маршрута,
DISTANCE– расстояние в километрах.Написать программу, которая отдельными функциями выполняет следующие пункты :
– введение с клавиатуры, данных в массив ROUT, который состоит из N
переменные типа ITINERARY;
– Упорядочить записи по убыванию расстояния в километрах;
– вывести на экран информацию про маршрут, номер номер которого введен с клавиатуры; если таких маршрутов нет, то вывести соответствующее сообщение.*/
struct ITINERARY
{
    char FIRST[1024], FINAL[1024];
    int NUM, DISTANCE;
};
//Считываем массив с консоли
//n размер массива
ITINERARY* ReadITINERARYArray(int n)
{
    ITINERARY* _array = new ITINERARY[n];
    for (int i = 0; i < n; i++)
    {
        printf("Input FIRST and FINAL:\r\n");
        scanf_s("%s %s", &_array[i].FIRST, 1024, &_array[i].FINAL, 1024);
        printf("Input NUM and DISTANCE:\r\n");
        scanf_s("%i %i", &_array[i].NUM, &_array[i].DISTANCE);
    }
    return _array;
}
// Выводим массив на консоль
// _array - массив для вывода, 
// n -размер массива
void PrintITINERARYArray(ITINERARY* _array, int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("NUM = %i\t FIRST = %s\t FINAL = %s\t DISTANCE = %i\r\n", _array[i].NUM, _array[i].FIRST, _array[i].FINAL, _array[i].DISTANCE);
    }
}
// Сортируем по убыванию
void SortArray(ITINERARY* &_array, int n)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n - 1; j++)
        {
            if (_array[i].DISTANCE < _array[i + 1].DISTANCE)
            {
                ITINERARY temp = _array[i];
                _array[i] = _array[i + 1];
                _array[i + 1] = temp;
            }
        }
    }
}
 
void PrintNum(ITINERARY* _array, int n, int Number)
{
    for (int i = 0; i < n; i++)
    {
        if (_array[i].NUM == Number)
        {
            printf("NUM = %i\t FIRST = %s\t FINAL = %s\t DISTANCE = %i\r\n", _array[i].NUM, _array[i].FIRST, _array[i].FINAL, _array[i].DISTANCE);
            break;
        }
    }
    printf("Not found \r\n");
}
int main()
{
    srand(time(NULL));
    int n, num;
    printf("Input n :\r\n");
    scanf_s("%i", &n);
    ITINERARY *ROUT = ReadITINERARYArray(n);
    printf("ROUT = :\r\n");
    PrintITINERARYArray(ROUT, n);
    SortArray(ROUT, n);
    printf("Sorted ROUT = :\r\n");
    PrintITINERARYArray(ROUT, n);
    do
    {
        printf("Enter num = :\r\n");
        scanf_s("%i", &num);
        PrintNum(ROUT, n, num);
        printf("To exit, type E :\r\n");
    } while (_getch() != 'E');
    system("Pause");
    return 0;
}
Добавлено через 16 минут
Накосячил тут
Поправь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Сортируем по убыванию
void SortArray(ITINERARY* &_array, int n)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n - 1; j++)
        {
            if (_array[j].DISTANCE < _array[j + 1].DISTANCE)
            {
                ITINERARY temp = _array[j];
                _array[j] = _array[j + 1];
                _array[j + 1] = temp;
            }
        }
    }
}
FaBoy
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 11
01.02.2014, 00:27  [ТС] #3
Спасибо огромное, очень помогло.
Kill100
404 / 270 / 37
Регистрация: 11.12.2010
Сообщений: 1,148
Завершенные тесты: 1
01.02.2014, 00:28 #4
Цитата Сообщение от FaBoy Посмотреть сообщение
Спасибо огромное, очень помогло.
Будут вопросы спрашивай. отвечу.
и в PrintNum вместо break напиши return;
FaBoy
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 11
01.02.2014, 00:34  [ТС] #5
Если не сложно, другу еще помочь...похожая задача...но другая сортировка
вот условие :
Описать структуру с именем WORKER, содержащий следующие поля:
NAME-фамилия и инициалы работника, POS-название должности,
YEAR - год принятия на работу, MONTH-месяц приема на
работу. Написать программу, отдельными функциями выполняет
следующие действия:
- Ввод с клавиатуры данных в массив TABL, состоящий из N
переменных типа WORKER;
- Упорядочение записей в алфавитном порядке;
- Вывод на экран фамилий работников, стаж работы которых
превышает значение, введенное с клавиатуры; если таких работ-ников нет, то вывести соответствующее сообщение.
Kill100
404 / 270 / 37
Регистрация: 11.12.2010
Сообщений: 1,148
Завершенные тесты: 1
01.02.2014, 02:05 #6
Цитата Сообщение от FaBoy Посмотреть сообщение
Если не сложно, другу еще помочь...похожая задача...но другая сортировка
Одна тема один вопрос.
Код сей час напишу.
Но правило придумали что бы другим было потом по форуму легче искать.

Добавлено через 15 минут
Вот переписал предыдущую.
на корректность не проверял. но должно все быть ОК.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*Описать структуру с именем WORKER, содержащий следующие поля :
NAME - фамилия и инициалы работника, POS - название должности,
YEAR - год принятия на работу, MONTH - месяц приема на
работу.Написать программу, отдельными функциями выполняет
следующие действия :
-Ввод с клавиатуры данных в массив TABL, состоящий из N
переменных типа WORKER;
-Упорядочение записей в алфавитном порядке;
-Вывод на экран фамилий работников, стаж работы которых
превышает значение, введенное с клавиатуры; если таких работ - ников нет, то вывести соответствующее сообщение.*/
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <string.h>
using namespace std;
struct WORKER
{
    char NAME[1024], POS[1024];
    int YEAR, MONTH;
};
//Считываем массив с консоли
//n размер массива
WORKER* ReadWORKERArray(int n)
{
    WORKER* _array = new WORKER[n];
    for (int i = 0; i < n; i++)
    {
        printf("Input NAME and POS:\r\n");
        scanf_s("%s %s", &_array[i].NAME, 1024, &_array[i].POS, 1024);
        printf("Input YEAR and MONTH:\r\n");
        scanf_s("%i %i", &_array[i].YEAR, &_array[i].MONTH);
    }
    return _array;
}
// Выводим массив на консоль
// _array - массив для вывода, 
// n -размер массива
void PrintWORKERArray(WORKER* _array, int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("YEAR = %i\t NAME = %s\t POS = %s\t MONTH = %i\r\n", _array[i].YEAR, _array[i].NAME, _array[i].POS, _array[i].MONTH);
    }
}
// Сортируем по убыванию
void SortArray(WORKER* &_array, int n)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n - 1; j++)
        {
            if (strcmp(_array[j].NAME, _array[j + 1].NAME)>0)
            {
                WORKER temp = _array[j];
                _array[j] = _array[j + 1];
                _array[j + 1] = temp;
            }
        }
    }
}
//Выводим только тех у кого стаж работы больше указанного в месяцах.
// _array - массив работников, n - размер массива, experience - стаж в месяцах
void PrintExperience(WORKER* _array, int n, int experience)
{
    bool flag = 0;
    struct tm tim;
    __time64_t long_time;
    // Get time 64-bit. 
    _time64(&long_time);
    _localtime64_s(&tim, &long_time);
    //tim = localtime(&tt);// студия орёт _CRT_SECURE_NO_WARNINGS по этому localtime_s то же самое с scanf_s вместо scanf
    for (int i = 0; i < n; i++)
    {
        int _experienceInMonth = (((tim.tm_year + 1900) - _array[i].YEAR) * 12) + ((tim.tm_mon) + 1 - _array[i].MONTH);
        if (_experienceInMonth >= experience)
        {
            printf("YEAR = %i\t NAME = %s\t POS = %s\t MONTH = %i\r\n", _array[i].YEAR, _array[i].NAME, _array[i].POS, _array[i].MONTH);
            flag = 1;
        }
    }
    if (!flag)
        printf("Not found \r\n");
}
int main()
{
    srand(time(NULL));
    int n, num;
    printf("Input n :\r\n");
    scanf_s("%i", &n);
    WORKER *TABL = ReadWORKERArray(n);
    printf("TABL = :\r\n");
    PrintWORKERArray(TABL, n);
    SortArray(TABL, n);
    printf("Sorted TABL = :\r\n");
    PrintWORKERArray(TABL, n);
    do
    {
        printf("Enter experience in MONTH = :\r\n");
        scanf_s("%i", &num);
        PrintExperience(TABL, n, num);
        printf("To exit, type E :\r\n");
    } while (_getch() != 'E');
    system("Pause");
    delete[]TABL;
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2014, 02:05
Привет! Вот еще темы с ответами:

Описать структуру с именем ZNAK - C++
Дорогие программисты здравствуйте ,я в отчаянии , который день я ломаю голову как же построить код этой программы :( Описать структуру с...

Описать структуру с именем TRAIN - C++
Описать структуру с именем TRAIN, содержащую следующие поля: - название пункта назначения - номер поезда - время отправления ...

Описать структуру с именем TRAIN - C++
Описать структуру с именем TRAIN, содержащую следующие поля: - название пункта назначения - номер поезда - время отправления ...

Описать структуру с именем NOTE - C++
Описать структуру с именем NOTE, содержащую поля: -фамилия и имя; -номер телефона; -дата рождения (массив из трех чисел). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.02.2014, 02:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru