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

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

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

Описать структуру с именем Worker C++
C++ Описать структуру с именем Order
Описать структуру с именем TRAIN C++
C++ Описать структуру с именем STUDENT...
C++ Описать структуру с именем ZNAK
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
31.01.2014, 21:54     Описать структуру с именем ITINERARY #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  [ТС]     Описать структуру с именем ITINERARY #3
Спасибо огромное, очень помогло.
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
01.02.2014, 00:28     Описать структуру с именем ITINERARY #4
Цитата Сообщение от FaBoy Посмотреть сообщение
Спасибо огромное, очень помогло.
Будут вопросы спрашивай. отвечу.
и в PrintNum вместо break напиши return;
FaBoy
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 11
01.02.2014, 00:34  [ТС]     Описать структуру с именем ITINERARY #5
Если не сложно, другу еще помочь...похожая задача...но другая сортировка
вот условие :
Описать структуру с именем WORKER, содержащий следующие поля:
NAME-фамилия и инициалы работника, POS-название должности,
YEAR - год принятия на работу, MONTH-месяц приема на
работу. Написать программу, отдельными функциями выполняет
следующие действия:
- Ввод с клавиатуры данных в массив TABL, состоящий из N
переменных типа WORKER;
- Упорядочение записей в алфавитном порядке;
- Вывод на экран фамилий работников, стаж работы которых
превышает значение, введенное с клавиатуры; если таких работ-ников нет, то вывести соответствующее сообщение.
Kill100
 Аватар для Kill100
359 / 248 / 33
Регистрация: 11.12.2010
Сообщений: 1,068
Завершенные тесты: 1
01.02.2014, 02:05     Описать структуру с именем ITINERARY #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;
}
Yandex
Объявления
01.02.2014, 02:05     Описать структуру с именем ITINERARY
Ответ Создать тему
Опции темы

Текущее время: 20:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru