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

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

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

Структуры... - C++

27.11.2011, 17:53. Просмотров 440. Ответов 7
Метки нет (Все метки)

Описать структуру с именем ITINERARY, которая содержит следующие поля:
  • BEG - назва начального пункта маршрута;
  • END - назва конечного пункта маршрута;
  • NUM - номер маршрута;
  • DISTANCE - расстояние в километрах;
Написать програму, которая отдельными функциями выполняет следующие действия:
  • введение с клавиатуры данных в масив ROUT, который состоит с N переменных типа ITINERARY;
  • упорядочение записей за номерамы маршрутов;
  • вывод на экран информации о маршрутах, которые начинаются или заканчиваются в пункте, название которого введено с клавиатуры; если таких маршрутов нет - вывести соответствующее сообщение.
Вот часть того, что у меня получилось:
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
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<string.h>
using namespace std;
const int n = 2;  //4islo elementiv masuvy
struct ITINERARY { //Struktura
 char BEG [21]; //po4.marshrut
 char NUM [4]; //Nomer marshrutu
 char END [21]; //Kincevuy marshrut, Poshuk poizdu
 char DISTANCE [6]; //Vidstan' yaku prohodut'o marshrut
};
 
bool IsEqual(char arr[], char arr2[], int count)
{
     bool result = true;
     for (int i=0; i<count; i++)
     {
         if (arr2[i] != arr[i])
         {
            result = false;
            break;           
         }    
     }
     return result;     
}
int main(void)
{
 ITINERARY a[n];
 int i = 0;
 for (i=0; i<n; i++) { //Vvid danuh
  cout << "Vvedite po4atkovui punkt: ";
  cin >> a[i].BEG;
  cout << "Vvedite nomer marshrutu: ";
  cin >> a[i].NUM;
  cout << "Vvedite vidstan': ";
  cin >> a[i].DISTANCE;
  cout << "Vvedite punkt zavershennya: ";
  cin >> a[i].END; 
 }
 char destination[100];
 gets(destination);
 for (int i=0; i<n; i++)
{
    if (IsEqual(a[i].BEG, destination, 21) || IsEqual(a[i].END, destination, 21))
    {
       cout<<a[i].NUM<<'\n';                      
    }
}  
 getch();
 return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 17:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структуры... (C++):

Помещение структуры в вектор, удаление структуры, изменение элементов структуры - C++
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...

Функция внутри структуры использует указатель, как поле этой структуры - C++
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл GlobalItems.h, где хранятся глобальные...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё. - C++
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры) - C++
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом создаю экземпляр, Subject G; ...

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

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла? - C++
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen (&quot;file.txt&quot;, &quot;w&quot;); в переменной f содержится...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68
03.12.2011, 13:31  [ТС] #2
Помогите дописать лабу...
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
03.12.2011, 15:42 #3
переменные пиши маленькими буквами
символьные массивы сравнивай через strncmp() из <cstring>
можно вообще использовать string, тогда можно сравнивать через ==
не используй gets(), вместо неё используй fgets() с stdin и стиранием перевода строки
со строками string можно использовать getline()

Цитата Сообщение от WriterMix Посмотреть сообщение
упорядочение записей за номерамы маршрутов;
можешь пузырьковую сортировку применить или типа того - это цикл со вложенным циклом
1
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68
03.12.2011, 19:02  [ТС] #4
Сегодня решил по-новому написать прогу, но всеравно ничего не получаеться. В чем ошибка? Может кто-нибудь скинуть решение?
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
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<string.h>
using namespace std;
//const int N = 2;  //4islo elementiv masuvy
struct ITINERARY { //Struktura
 char BEG [21]; //po4.marshrut
 char NUM [4]; //Nomer marshrutu
 char END [21]; //Kincevuy marshrut, Poshuk poizdu
 char DISTANCE [6]; //Vidstan' yaku prohodut'o marshrut
} ROUT[5];
int in(ITINERARY);
int sort(ITINERARY, char);
int out(ITINERARY, char);
 
int in(ITINERARY ROUT[5])
{
    for(int i=0;i<5;i++)
    {
            cout<<"Vvedit po4atkovuy marshrut:"<<'\n';
            gets(ROUT[i].BEG);
            cout<<"Vvedit nomer marshrutu:"<<'\n';
            gets(ROUT[i].NUM);
            cout<<"Vvedit kincevuy marshrut:"<<'\n';
            gets(ROUT[i].END);
            cout<<"Vvedit vidstan (v km.):"<<'\n';
            gets(ROUT[i].DISTANCE);
    }
    return 0;
}
int sort(ITINERARY ROUT[5], char sortNUM[5])
{
    char d;
    int is;
    ITINERARY a;
    for (int i=0;i<5;i++)
    {
        sortNUM[i]=(char)ROUT[i].NUM; //zdes' DEV C++ vudaet oshubku, hot'a Borland 3.1 molchit...
    }
    do
    {
     is=0;
          for (int i=1;i<5;i++)
          if(sortNUM[i-1]>sortNUM[i])
          {
                d=sortNUM[i];
                sortNUM[i]=sortNUM[i-1];
                sortNUM[i-1]=d;
                
                a=ROUT[i];
                ROUT[i]=ROUT[i-1];
                ROUT[i-1]=a;
            is=1;
          }          
     }
     while(is);
     
     cout<<"\n\nVidsortovanuy spusok:";
     for(i=0;i<5;i++)
         cout << ROUT[i].BEG << " " << ROUT[i].END << " " << ROUT[i].DISTANCE <<'\n';
               return 0;
}
char destination[100];
 gets(destination);
 for (int i=0; i<n; i++)
{
    if ((a[i].BEG, destination, 21) || IsEqual(a[i].END, destination, 21))
    {
       cout<<a[i].NUM<<'\n';                      
    }
}  
 getch();
 return 0;
}
int main();
{
float sortNUM;
in(ROUT);
sort(ROUT, sortNUM);
out(ROUT; sortNUM);
return 0;
}
Спасибо.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.12.2011, 01:09 #5
сортировка должна в зависимости от сравниваемых номеров менять/не менять местами структуры
функция сортировки принимает массив структур и количество структур
0
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68
05.12.2011, 00:29  [ТС] #6
Напишите пожалуйста код виполнения последнего пункта:
вывод на экран информации о маршрутах, которые начинаются или заканчиваются в пункте, название которого введено с клавиатуры; если таких маршрутов нет - вывести соответствующее сообщение.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
05.12.2011, 03:13 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
    bool was_found;
    
    was_found = false;
    for (int i = 0; i < n; i++)
        if (strcmp(a[i].BEG, destination) == 0
         || strcmp(a[i].END, destination) == 0) {
            if (!was_found)
                was_found = true;
            cout << a[i].NUM << endl;
        }
    if (!was_found)
        cout << "was not found" << endl;
1
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68
05.12.2011, 14:34  [ТС] #8
accept, спасибо большое!!! Наконец-то лаба готова!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2011, 14:34
Привет! Вот еще темы с ответами:

Оператор if и структуры. Возвращение структуры из функции - C++
Здравствуйте, имеется такая вот функция. void InputStructEmployee (int StructSize) { StructEmployee UsrStruct; string...

Структуры. Работа с файлами, содержащими структуры - C++
2) Дана совокупность сведений, каждое из которых состоит из следующих рекви-зитов: фамилия и инициалы автора – 25 знаков; название книги –...

Структуры. Вызов данных структуры по указателю. с++ - C++
Условие задачи: Помогите, пожалуйста, с как реализовать печать вообще не представляю.

Понятие структуры данных. Элементарные структуры данных. Простые структуры данных - C++
Понятие структуры данных. Элементарные структуры данных. Простые структуры данных: методы реализации, особенности в различных языках...


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

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

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