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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
dismay256
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
18.01.2014, 12:20     Описать структуру с именем ., содержащую следующие поля #1
Описать структуру с именем 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");             
}
Пишет странную ошибку
Миниатюры
Описать структуру с именем ., содержащую следующие поля  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2014, 12:20     Описать структуру с именем ., содержащую следующие поля
Посмотрите здесь:

Описать структуру с именем NOTE, содержащую следующие поля: C++
Описать структуру с именем NOTE, содержащую следующие поля C++
Описать структуру с именем WORKER, содержащую следующие поля C++
C++ Описать структуру с именем AEROFLOT, содержащую следующие поля:
C++ Описать структуру с именем TRAIN ,содержащую следующие поля:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
18.01.2014, 12:27     Описать структуру с именем ., содержащую следующие поля #2
dismay256, массивы в С++ начинаются с индекса 0. А вы работаете с диапазоном 1..5, поэтому вот 5 элемент уже идет не в массиве
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
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();
D_bl_M
18.01.2014, 12:32
  #4

Не по теме:

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

dismay256
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, значит по идее должен и пятый быть)
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
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);
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
18.01.2014, 12:57     Описать структуру с именем ., содержащую следующие поля #7
dismay256, у вас массив от 0 до 4 создан вот этой строкой

C++
1
marsh trafic[5];
а в условии у вас выход за пределы массива. Программа не будет ради вас увеличивать размер статического массива
dismay256
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);

А немножко облегчить можно код, а то очень много не понятно, адаптировать под пой))) или пару комментариев если не трудно...
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
18.01.2014, 13:23     Описать структуру с именем ., содержащую следующие поля #9
так Вы хоть напишите,что именно непонятно
dismay256
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
18.01.2014, 13:31  [ТС]     Описать структуру с именем ., содержащую следующие поля #10
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
так Вы хоть напишите,что именно непонятно

не понял я как через gets(); делать, можите пример стоки только из моего кода показать?
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
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;
}
dismay256
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, правильно же сделал?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2014, 00:40     Описать структуру с именем ., содержащую следующие поля
Еще ссылки по теме:

C++ Описать структуру с именем OBMEN, содержащую следующие поля:
C++ Описать структуру с именем Price, содержащую следующие поля
C++ Описать структуру с именем Note, содержащую следующие поля

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

Или воспользуйтесь поиском по форуму:
dismay256
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! что это может быть???
Yandex
Объявления
20.01.2014, 00:40     Описать структуру с именем ., содержащую следующие поля
Ответ Создать тему
Опции темы

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