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

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

Войти
Регистрация
Восстановить пароль
 
taeas1995
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
#1

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

17.12.2012, 21:14. Просмотров 446. Ответов 14
Метки нет (Все метки)

У меня есть программа. Я создал класс Маршрут (станциии номер) и ищу маршрут по заданом номере. Но у меня вконце 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++
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Найти ошибки в коде и исправить эти ошибки - C++ - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...

Найти ошибки в коде и исправить эти ошибки - C++
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

Ошибки в коде - C++
При компиляции компилятор выдает подобные ошибки: C:\Users\Дом\Desktop\12.c:2:23: interrupt.h: No such file or directory ...

Ошибки в коде - C++
Код: int Process( int ** x, size_t i, size_t j ) { int max=0; if ( x&lt;x &amp;&amp; x&lt;x &amp;&amp; x&lt;x &amp;&amp; x&lt;x * ) cout&lt;&lt;i&lt;&lt;' '&lt;&lt;j&lt;&lt;'...

Ошибки в коде - C++
Всем привет . В этом коде вылетают ошибки main.cpp|43|error: ISO C++ forbids comparison between pointer and integer | , main.cpp|51|error:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
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
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
17.12.2012, 21:31 #4
Цитата Сообщение от taeas1995 Посмотреть сообщение
но мне говорили что это уже не будет ООП ..
а что же это будет?
если уж хочешь оставить private
реализуй методы
GetNomer
SetNomer
v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
17.12.2012, 21:33 #5
Можно написать функции в public которые будут возвращать значение переменных из private
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
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
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
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
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
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
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
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()
    {...}
};
А все что раньше было, то не трогать. Пусть остается как было
taeas1995
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
17.12.2012, 22:37  [ТС] #15
Спасибо))все теперь работает))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2012, 22:37
Привет! Вот еще темы с ответами:

[!]Ошибки в коде. - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;assert.h&gt; using namespace std; struct element { int v;...

Ошибки в коде - C++
Привет народ) Когда запускаю программу она мне выдаёт ошибки и говорит что то про showMeAndSelect в Main.cpp. Помогите разобраться...

Ошибки в коде - C++
Код взял с форума, однако в нем 40+ ошибок, подскажите пожалуйста что не так. Условие задачи: Создать класс “Автомагазин”, состоящей...

Ошибки в коде - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; // strlen #include &lt;dos.h&gt; // delay #include &lt;winsock2.h&gt; //...


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

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

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