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

Ошибки в коде( - C++

Восстановить пароль Регистрация
 
taeas1995
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
17.12.2012, 21:14     Ошибки в коде( #1
У меня есть программа. Я создал класс Маршрут (станциии номер) и ищу маршрут по заданом номере. Но у меня вконце 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 "stdafx.h"
#include<iostream>
#include<conio.h>
#include<string>
using namespace std;
class marsh
{ 
char nazvan[20],nazvak[20];
int nomer;
int j,k;
public:
 
     void input()
     {
          cout<<"vvedit nazvu nachalnogo marshrutu - ";
          for(int i=0;i<20;i++)
          {
               char z=_getch();
               cout<<z;
               if((int)z==13) {
                   j=i; 
                   break;};
                   nazvan[i]=z;
          }
          cout<<endl<<"Vvedit nazvu kincevogo marshrutu - ";
          for(int i=0;i<20;i++)
          {
               char z=_getch();
               cout<<z;
               if((int)z==13) {
                   k=i;break;};
                   nazvak[i]=z;
          }
          cout<<endl<<"vvedit nomer marshrutu - ";
          cin>>nomer;};
          marsh()
          {
              nazvan[0]=' ';
              nazvak[0]=' ';
              nomer=0;j=0;k=0;
          };
          void output()
          {
              cout<<"Nachalna nazva - ";
              for(int i=0;i<j;i++)
                   cout<<nazvan[i];
              cout<<",kinceva nazva - ";
              for(int i=0;i<k;i++)
                   cout<<nazvak[i];
              cout<<", nomer - "<<nomer<<endl;};
              int getnomer() {
                  return nomer;};
};
bool operator<(marsh m1,marsh m2)
{
    if(m1.getnomer()<m2.getnomer()) return true;
    else return false;
}
   int main()
   {
       const int n=3;
       marsh a[n];
       int i,g;
       for(i=0;i<n;i++)
           a[i].input();
       for(i=0;i<n;i++)
           for(g=0;g<n-1;g++)
                if(!(a[g]<a[g+1]))
                {
                     marsh x=a[g]; a[g]=a[g+1]; a[g+1]=x;
                }
                cout<<endl;
                 for(i=0;i<n;i++)
                     a[i].output();
                 bool found;int c;
                 cout<<"vvedit nomer marshrutu(vyvid info pro marshrut) -";
                 cin>>c;
                 cout<<endl;
                 found=false;
                 for(i=0;i<n;i++)
                 {
                     if(c==a[i].nomer)
                         a[i].output();
                 }
                  if(c!=a[i].nomer) 
                  {
                      cout<<"Ne znaydeno!"<<endl;
                  }
 
                 cout<<endl;
                      _getch();
                      return 0;
                  }
error C2248: marsh::nomer: невозможно обратиться к private член, объявленному в классе "marsh" 82 строка
error C2248: marsh::nomer: невозможно обратиться к private член, объявленному в классе "marsh" 85 строка
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2012, 21:14     Ошибки в коде(
Посмотрите здесь:

Ошибки в коде C++
ошибки в коде C++
C++ Ошибки в коде
Ошибки в коде C++
C++ Ошибки в коде
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
17.12.2012, 21:16     Ошибки в коде( #2
Цитата Сообщение от taeas1995 Посмотреть сообщение
class marsh
{
char nazvan[20],nazvak[20];
int nomer;
int j,k;
по умолчанию члены класса private
ставь public
taeas1995
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
17.12.2012, 21:28  [ТС]     Ошибки в коде( #3
но мне говорили что это уже не будет ООП ..(( мне что-то говорили что можна еще Булайн функцию сделать чтобы проверяло но я незнаю как( помогите пожалуста сделать без паблик..любым способом(
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
17.12.2012, 21:31     Ошибки в коде( #4
Цитата Сообщение от taeas1995 Посмотреть сообщение
но мне говорили что это уже не будет ООП ..
а что же это будет?
если уж хочешь оставить private
реализуй методы
GetNomer
SetNomer
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
17.12.2012, 21:33     Ошибки в коде( #5
Можно написать функции в public которые будут возвращать значение переменных из private
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
17.12.2012, 21:34     Ошибки в коде( #6
Цитата Сообщение от taeas1995 Посмотреть сообщение
дописать Паблик то мне говорят что суть ООП теряется
кто это такой умный?
что объекты куда то подевались?
никого не слушай а читай первоисточники
основатель языка Бьерн Страуструп
например это
http://lib.ru/CPPHB/cpptut.txt
taeas1995
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
17.12.2012, 21:37  [ТС]     Ошибки в коде( #7
Можно написать функции в public которые будут возвращать значение переменных из private

А можете исправить пожалуста на функции в public?...мне кажется это правильный метод будет... буду очень благодарен
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
17.12.2012, 21:40     Ошибки в коде( #8
Цитата Сообщение от taeas1995 Посмотреть сообщение
А можете исправить пожалуста на функции в public?.
сам то не можешь?
C++
1
2
3
4
int marsh::GetNamber()
{
return nomer;
 }
taeas1995
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
17.12.2012, 21:43  [ТС]     Ошибки в коде( #9
что-то я запутался совсем(( можете в код вставить и так кинуть?( я не очень умею программировать..а нужно завтра сдать уже(
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
17.12.2012, 21:51     Ошибки в коде( #10
Цитата Сообщение от taeas1995 Посмотреть сообщение
я не очень умею программировать
так учись
я тебе ссылку кинул
Цитата Сообщение от taeas1995 Посмотреть сообщение
а нужно завтра сдать уже(
значит не готов
или нам с v.a.l.i.d, пойти сдавать
taeas1995
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
17.12.2012, 21:55  [ТС]     Ошибки в коде( #11
помогите кто-знает( там просто пару ошибок вконце исправить( мне очень нужно(
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
17.12.2012, 22:04     Ошибки в коде( #12
В 12 строчку можно вот такую функцию вставить:
C++
1
int GetNomer()  { return nomer; }
А вместо вот этого
Цитата Сообщение от taeas1995 Посмотреть сообщение
if(c==a[i].nomer)
вот так:
C++
1
if (c == a[i].GetNomer())
то есть уже через функцию все делать
taeas1995
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
17.12.2012, 22:14  [ТС]     Ошибки в коде( #13
Вот я исправил и появляется ошибка: error C4716: marsh::GetNomer: должна возвращать значение на 34 строке

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 "stdafx.h"
#include<iostream>
#include<conio.h>
#include<string>
using namespace std;
class marsh
{ 
char nazvan[20],nazvak[20];
int nomer;
int j,k;
public:
 
     int GetNomer()  {
          cout<<"vvedit nazvu nachalnogo marshrutu - ";
          for(int i=0;i<20;i++)
          {
               char z=_getch();
               cout<<z;
               if((int)z==13) {
                   j=i; 
                   break;};
                   nazvan[i]=z;
          }
          cout<<endl<<"Vvedit nazvu kincevogo marshrutu - ";
          for(int i=0;i<20;i++)
          {
               char z=_getch();
               cout<<z;
               if((int)z==13) {
                   k=i;break;};
                   nazvak[i]=z;
          }
          cout<<endl<<"vvedit nomer marshrutu - ";
          cin>>nomer;};
          marsh()
          {
              nazvan[0]=' ';
              nazvak[0]=' ';
              nomer=0;j=0;k=0;
              
          };
          void output()
          {
              cout<<"Nachalna nazva - ";
              for(int i=0;i<j;i++)
                   cout<<nazvan[i];
              cout<<",kinceva nazva - ";
              for(int i=0;i<k;i++)
                   cout<<nazvak[i];
              cout<<", nomer - "<<nomer<<endl;};
              int getnomer() {
                  return nomer;};
};
bool operator<(marsh m1,marsh m2)
{
    if(m1.getnomer()<m2.getnomer()) return true;
    else return false;
}
   int main()
   {
       const int n=3;
       marsh a[n];
       int i,g;
       for(i=0;i<n;i++)
           a[i].GetNomer();
       for(i=0;i<n;i++)
           for(g=0;g<n-1;g++)
                if(!(a[g]<a[g+1]))
                {
                     marsh x=a[g]; a[g]=a[g+1]; a[g+1]=x;
                }
                cout<<endl;
                 for(i=0;i<n;i++)
                     a[i].output();
                 bool found;int c;
                 cout<<"vvedit nomer marshrutu(vyvid info pro marshrut) -";
                 cin>>c;
                 cout<<endl;
                 found=false;
                 for(i=0;i<n;i++)
                 {
                     if (c == a[i].GetNomer())
                         a[i].output();
                 }
                  if (c != a[i].GetNomer())
                  {
                      cout<<"Ne znaydeno!"<<endl;
                  }
 
                 cout<<endl;
                      _getch();
                      return 0;
                  }
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
17.12.2012, 22:23     Ошибки в коде( #14
Это вообще не правильно. Где раньше была программа то там нужно вставить еще одну функцию.
C++
1
2
3
4
5
6
7
8
9
10
11
class marsh
{ 
    char nazvan[20],nazvak[20];
    int nomer;
    int j,k;
public:
    int GetNomer()  { return nomer; } // вот это новая функция. а все остальное не менять
    
    void input()
    {...}
};
А все что раньше было, то не трогать. Пусть остается как было
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2012, 22:37     Ошибки в коде(
Еще ссылки по теме:

Ошибки в коде C++
C++ Ошибки в коде
Ошибки в коде C++

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

Или воспользуйтесь поиском по форуму:
taeas1995
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
17.12.2012, 22:37  [ТС]     Ошибки в коде( #15
Спасибо))все теперь работает))
Yandex
Объявления
17.12.2012, 22:37     Ошибки в коде(
Ответ Создать тему
Опции темы

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