0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
1

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

18.01.2014, 12:20. Показов 4269. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описать структуру с именем marsh, содержащую следующие поля:
-номер маршрута;
-нач точка;
-конечная точка;
1.Программа вводит с клавиатуры данные в массив.
2.Выводит на экран структуру marsh, поиск осуществляется по номеру маршрута(ввел номер маршрута-выдал номер, нач. точку, конечную точку.
3.Сообщение если таких нет.
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
struct marsh
 {
  char *start;
  char *finish;
  int numer;
};
marsh trafic[5];
 
void main()
{
    setlocale(LC_ALL,"Rus");
 
    for(int i = 1; i <= 5 ; i++)
    {
        cout << "Номер маршрута: " << i <<"\n";
        trafic[i].numer = i;
        cout<< "Название начального пункта маршрута: ";
        cin >> trafic[i].start;
        cout << "Название конечного пункта маршрута: ";
        cin >> trafic[i].finish;
        system ("cls");
     }
        
            system ("cls");
            int numbermarsh;
            for (int i = 1; i <= 5 ; i++)
            {
            cout << "Введите номер маршрута: ";
            cin >> numbermarsh;
                if ( trafic[i].numer == numbermarsh )
                {
                        cout << "Данные по маршруту: " << endl;             
                        cout << "Номер маршрута: " << trafic[i].numer << endl;
                        cout << "Название начального пункта маршрута: " << trafic[i].start << endl;
                        cout << "Название конечного пункта маршрута: "   << trafic[i].finish << endl;
                }
                else
                {
                cout << "Ничего не найдено! ";
                }
            }
    
            delete[]trafic;
            system ("pause");             
}
Пишет странную ошибку
Миниатюры
Описать структуру с именем ., содержащую следующие поля  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2014, 12:20
Ответы с готовыми решениями:

Описать структуру с именем ZNAK, содержащую следующие поля
Описать структуру с именем ZNAK, содержащую следующие поля: TIME – время рождения (массив из двух...

Описать структуру с именем Note, содержащую следующие поля
Описать структуру с именем NOTE, содержащую следующие поля: NAME – фамилия, имя; TELE – номер...

Описать структуру с именем STUDENT, содержащую следующие поля
1. Описать структуру с именем STUDENT, содержащую следующие поля: • NAME - фамилия и инициалы; •...

Описать структуру с именем AEROFLOT, содержащую следующие поля
Помогите написать программу. Описать запись необходимой структуры. Описать массив этих записей....

12
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
18.01.2014, 12:27 2
dismay256, массивы в С++ начинаются с индекса 0. А вы работаете с диапазоном 1..5, поэтому вот 5 элемент уже идет не в массиве
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
18.01.2014, 12:30 3
Цитата Сообщение от dismay256 Посмотреть сообщение
cin >> trafic[i].start;
Цитата Сообщение от dismay256 Посмотреть сообщение
char *start;
так делать нельзя.
используйте в таком случае не char *, а std::string
ну если столь удобно работать с char'ом, то сразу задайте массивам размер:
C++
1
2
char start[50];
char finish[50];
и вводите их через функцию gets();
0
D_bl_M
18.01.2014, 12:32
  #4

Не по теме:

немного я поспешил

0
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
18.01.2014, 12:41  [ТС] 5
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
так делать нельзя.
используйте в таком случае не char *, а std::string
ну если столь удобно работать с char'ом, то сразу задайте массивам размер:
C++
1
2
char start[50];
char finish[50];
и вводите их через функцию gets();
Я переделал чуть чуть
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
struct marsh
 {
  char start[80];
  char finish[80];
  int numer;
};
marsh trafic[5];
 
void main()
{
    setlocale(LC_ALL,"Rus");
 
    for(int i = 1; i <= 5 ; i++)
    {
        cout << "Номер маршрута: " << i <<"\n";
        trafic[i].numer = i;
        cout<< "Название начального пункта маршрута: ";
        cin >> trafic[i].start;
        cout << "Название конечного пункта маршрута: ";
        cin >> trafic[i].finish;
        system ("cls");
     }
        
            system ("cls");
            int numbermarsh;
            for (int i = 1; i <= 5 ; i++)
            {
            cout << "Введите номер маршрута: ";
            cin >> numbermarsh;
                if ( trafic[i].numer == numbermarsh )
                {
                        cout << "Данные по маршруту: " << endl;             
                        cout << "Номер маршрута: " << trafic[i].numer << endl;
                        cout << "Название начального пункта маршрута: " << trafic[i].start << endl;
                        cout << "Название конечного пункта маршрута: "   << trafic[i].finish << endl;
                }
                else
                {
                cout << "Ничего не найдено! " << endl;
                }
            }
            delete[]trafic;
            system ("pause");             
}
Но все равно не работает((((

Добавлено через 1 минуту
Цитата Сообщение от Folko Посмотреть сообщение
dismay256, массивы в С++ начинаются с индекса 0. А вы работаете с диапазоном 1..5, поэтому вот 5 элемент уже идет не в массиве

в условии больше либо равно 5, значит по идее должен и пятый быть)
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
18.01.2014, 12:53 6
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
#include <iostream>
#include <string>
 
const size_t routesCounter(5);
 
struct marsh
{
    size_t routeNumber;
    std::string routeStart;
    std::string routeFinish;
} routeArray[routesCounter];
 
int main()
{
    std::cout << "Input data about " << routesCounter << " routes: " << std::endl;
    for (size_t i = 0; i < routesCounter; i++) {
        std::cout << "Route #" << (i + 1) << ": " << std::endl;
        std::cout << "Number: ";
        std::cin >> routeArray[i].routeNumber;
        std::cin.sync();
        std::cout << "Start position: ";
        std::getline(std::cin, routeArray[i].routeStart);
        std::cout << "Finish position: ";
        std::getline(std::cin, routeArray[i].routeFinish);
        std::system("cls");
    }
 
    for (size_t i = 0; i < routesCounter; i++) {
        std::cout << routeArray[i].routeNumber << ". " << routeArray[i].routeStart << " - " << routeArray[i].routeFinish << std::endl;
    }
 
    size_t routeUserNumber;
    std::cout << "Input the number of route: ";
    std::cin >> routeUserNumber;
 
    bool isFind(false);
    std::cout << "Result: " << std::endl;
    for (size_t i = 0; i < routesCounter; i++) {
        if (routeArray[i].routeNumber == routeUserNumber) {
            std::cout << routeArray[i].routeNumber << ". " << routeArray[i].routeStart << " - " << routeArray[i].routeFinish << std::endl;
            isFind = true;
            break;
        }
    }
    if (!isFind) {
        std::cout << "null" << std::endl;
    }
 
    std::system("pause");
    return 0;
}
Добавлено через 55 секунд
Цитата Сообщение от dismay256 Посмотреть сообщение
cin >> trafic[i].start;
я же сказал, вводить через gets();
C++
1
gets(trafic[i].start);
1
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
18.01.2014, 12:57 7
dismay256, у вас массив от 0 до 4 создан вот этой строкой

C++
1
marsh trafic[5];
а в условии у вас выход за пределы массива. Программа не будет ради вас увеличивать размер статического массива
1
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
18.01.2014, 13:20  [ТС] 8
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
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
#include <iostream>
#include <string>
 
const size_t routesCounter(5);
 
struct marsh
{
    size_t routeNumber;
    std::string routeStart;
    std::string routeFinish;
} routeArray[routesCounter];
 
int main()
{
    std::cout << "Input data about " << routesCounter << " routes: " << std::endl;
    for (size_t i = 0; i < routesCounter; i++) {
        std::cout << "Route #" << (i + 1) << ": " << std::endl;
        std::cout << "Number: ";
        std::cin >> routeArray[i].routeNumber;
        std::cin.sync();
        std::cout << "Start position: ";
        std::getline(std::cin, routeArray[i].routeStart);
        std::cout << "Finish position: ";
        std::getline(std::cin, routeArray[i].routeFinish);
        std::system("cls");
    }
 
    for (size_t i = 0; i < routesCounter; i++) {
        std::cout << routeArray[i].routeNumber << ". " << routeArray[i].routeStart << " - " << routeArray[i].routeFinish << std::endl;
    }
 
    size_t routeUserNumber;
    std::cout << "Input the number of route: ";
    std::cin >> routeUserNumber;
 
    bool isFind(false);
    std::cout << "Result: " << std::endl;
    for (size_t i = 0; i < routesCounter; i++) {
        if (routeArray[i].routeNumber == routeUserNumber) {
            std::cout << routeArray[i].routeNumber << ". " << routeArray[i].routeStart << " - " << routeArray[i].routeFinish << std::endl;
            isFind = true;
            break;
        }
    }
    if (!isFind) {
        std::cout << "null" << std::endl;
    }
 
    std::system("pause");
    return 0;
}
Добавлено через 55 секунд

я же сказал, вводить через gets();
C++
1
gets(trafic[i].start);

А немножко облегчить можно код, а то очень много не понятно, адаптировать под пой))) или пару комментариев если не трудно...
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
18.01.2014, 13:23 9
так Вы хоть напишите,что именно непонятно
0
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
18.01.2014, 13:31  [ТС] 10
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
так Вы хоть напишите,что именно непонятно

не понял я как через gets(); делать, можите пример стоки только из моего кода показать?
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
18.01.2014, 13:44 11
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
#include <iostream>
#include <cstring>
using namespace std;
 
struct marsh
{
    char start[80];
    char finish[80];
    int numer;
} trafic[3];
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    for (int i = 0; i < 3; i++)
    {
        cout << "Номер маршрута: " << (i + 1) << "\n";
        trafic[i].numer = (i + 1);
        cout << "Название начального пункта маршрута: ";
        gets_s(trafic[i].start);
        cout << "Название конечного пункта маршрута: ";
        gets_s(trafic[i].finish);
        system("cls");
    }
    system("cls");
 
    int numbermarsh, cnt(0);
    cout << "Введите номер маршрута: ";
    cin >> numbermarsh;
    for (int i = 0; i < 3; i++)
    {
        if (trafic[i].numer == numbermarsh)
        {
            cout << "Данные по маршруту: " << endl;
            cout << "Номер маршрута: " << trafic[i].numer << endl;
            cout << "Название начального пункта маршрута: " << trafic[i].start << endl;
            cout << "Название конечного пункта маршрута: " << trafic[i].finish << endl;
            cnt++;
        }
    }
    if (!cnt)
    {
        cout << "Ничего не найдено!" << endl;
    }
 
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
18.01.2014, 14:14  [ТС] 12
вот так ?
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
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
struct marsh
 {
  string start;
  string finish;
  int number;
};
marsh trafic[5];
 
void main()
{
    setlocale(LC_ALL,"Rus");
 
    for(int i = 0; i < 5 ; i++)
    {
        cout << "Номер маршрута: " << i <<"\n";
        trafic[i].number = i;
        cout<< "Название начального пункта маршрута: ";
        getline (cin,trafic[i].start); 
        cout << "Название конечного пункта маршрута: ";
        getline (cin,trafic[i].finish);
        system ("cls");
     }
        
            system ("cls");
            int numbermarsh;
            for (int i = 1; i <= 5 ; i++)
            {
            cout << "Введите номер маршрута: ";
            cin >> numbermarsh;
                if ( trafic[i].number == numbermarsh )
                {
                        cout << "Данные по маршруту: " << endl;             
                        cout << "Номер маршрута: " << trafic[i].number << endl;
                        cout << "Название начального пункта маршрута: " << trafic[i].start << endl;
                        cout << "Название конечного пункта маршрута: "   << trafic[i].finish << endl;
                }
                else
                {
                cout << "Ничего не найдено! " << endl;
                }
            }
            delete[]trafic;
            system ("pause");             
}
Добавлено через 12 минут
я ввожу данные, но он мне их не выводит по запросу(((( что делать
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
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
struct marsh
 {
  string start;
  string finish;
  int number;
};
marsh trafic[5];
 
int main()
{
    setlocale(LC_ALL,"Rus");
 
    for(int i = 0; i < 5 ; i++)
    {
        cout << "Номер маршрута: " << i <<"\n";
        trafic[i].number = i;
        cout<< "Название начального пункта маршрута: ";
        getline (cin,trafic[i].start); 
        cout << "Название конечного пункта маршрута: ";
        getline (cin,trafic[i].finish);
        system ("cls");
     }
        
            system ("cls");
            bool isFind(false);
            int numbermarsh;
            for (int i = 1; i <= 5 ; i++)
            {
            cout << "Введите номер маршрута: ";
            cin >> numbermarsh;
                if ( trafic[i].number == numbermarsh )
                {
                        cout << "Данные по маршруту: " << endl;             
                        cout << "Номер маршрута: " << trafic[i].number << endl;
                        cout << "Название начального пункта маршрута: " << trafic[i].start << endl;
                        cout << "Название конечного пункта маршрута: "   << trafic[i].finish << endl;
                        isFind = true;
                        break;
                }
            }               
            if (!isFind)
            {
            cout << "Нет таких маршрутов! ";
            }
                
            delete[]trafic;
            system ("pause");             
            return 0;   
}
Добавлено через 8 минут
Ev[G]eN, правильно же сделал?
0
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
20.01.2014, 00:40  [ТС] 13
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
using namespace std;
 
struct marsh
 {
  char start[100];
  char finish[100];
  int number;
};
 
marsh trafic[8];
 
int _tmain(int argc, _TCHAR* argv[])
{
    ifstream inFile("Данные.txt", ios::in);
    if(!inFile)
    {
        cout<<"Error, not file!" << endl;
        system("pause");
        return 1;
    }
    for (int i = 1; i < 9; i++)
    {
    inFile >> trafic[i].number;
    inFile >> trafic[i].start;
    inFile >> trafic[i].finish;
    }
    inFile.close();
 
            int numbermarsh, n;
            cout << " \n How many trips you want to know? ";
            cin >> n;
            for (int i = 1; i <= n; i++)
            {
            cout << endl;
            cout << " \n \n \n Input number route # ";
            cin >> numbermarsh;
            if ( trafic[i].number == numbermarsh )
                {
                        cout << " \n \n Route Data: " << endl;              
                        cout << "\n Number route # " << trafic[i].number << endl;
                        cout << "\n Start: " << trafic[i].start << endl;
                        cout << "\n Finish: "   << trafic[i].finish << endl;
            
                }
                else
                {
                    cout << "Error! Error! Error!" << endl;
                    break;
                }       
                
            }
            system ("pause");             
            return 0;   
}
о работает но я его переписал с чтением с файла, по порядку ты можешь найти маршруты а если в разброс то пишет Error! Error! Error! что это может быть???
0
20.01.2014, 00:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2014, 00:40
Помогаю со студенческими работами здесь

Описать структуру с именем Price, содержащую следующие поля
Если у вас есть время, то можно еще построчно :-#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

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

Описать структуру с именем ZNAK, содержащую следующие поля
Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя; знак Зодиака; день...

Описать структуру с именем NOTE, содержащую следующие поля:
1. Описать структуру с именем NOTE, содержащую следующие поля: ■ фамилия, имя; ■ ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru