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

Поправьте код - C++

Восстановить пароль Регистрация
 
Pavel07
3 / 3 / 1
Регистрация: 28.10.2012
Сообщений: 310
Завершенные тесты: 1
13.04.2014, 20:37     Поправьте код #1
Снова где то портачу и не знаю где, поправьте кому не сложно
C++ (Qt)
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
#include "iostream"
#include <string.h>
 
using namespace std;
 
class Base     // bazovyy class soderzhit vse obschie
{              // polya i methody
protected:
          char Naimenovanie[50];
          char Areal_obitania[50];
          int Temperatura_sodergania;
          int Vlagnost;
          int Vrema_life;
          int Reproduktivniy_vozrast;
          
public:
       Base(void);                    // constructor
       virtual void Input(void) = 0;  // method vvoda
       virtual void Print(void) = 0;  // method vyvoda
 
       /* opisanie drugih methodov, naprimer: */
           virtual int Type(void) = 0;    // tip objecta (Cat=1, Dog=2)
           int GetVlagnost(void);            // uznat' Vlagnost
           int LessThan(Base * p);             // sravnit' nicki (menshe chem)
};
 
Base::Base(void)  : Temperatura_sodergania(0), Vlagnost(0), Vrema_life(0), Reproduktivniy_vozrast(0)
{
                   Naimenovanie[0] = 0;
                   Areal_obitania[0] = 0;
}
int Base::GetVlagnost(void)
{
    return Temperatura_sodergania, Vlagnost(0), Vrema_life, Reproduktivniy_vozrast;
}
 
int Base::LessThan(Base*p)
{
    return strcmp(Naimenovanie, p->Naimenovanie) < 0;
}
 
class Ratenia : public Base
{
      
private:
        char Sposob_razmnogenia[50];
        char Nalichie_plodov[5]; /*Г¤Г* èëè Г*ГҐГІ*/
public:
       Rastenia(void);
       void Input(void);
       void Print(void);
       int Type(void) {return 1; }
};
 
class Ribi : public Base
{
private:
        char Tip_vodi[20];
public:
       Ribi(void);
       void Input(void);
       void Print(void);
       int Type(void) { return 2; }
};
 
Rastenia::Rastenia(void);
{
       Sposob_razmnogenia[0] = 0;
       Nalichie_plodov[0] = 0;
}
 
void Rastenia::Input(void)
{
     cout << "Please, input Rastenie info\nRastenie\t| Naimenovanie: ";
     cin >> Naimenovanie;
     cout << "\t| Areal_obitania:  ";
     cin >> Areal_obitania;
     cout << "\t| Sposob_razmnogenia:  ";
     cin >> Sposob_razmnogenia;
     cout << "\t| Nalichie_plodov: ";
     cin >> Nalichie_plodov;
     cout << "\t| Tip_rastenia: ";
     cin >> Tip_rastenia;
     cout << "\t| Temperatura_sodergania:  ";
     cin >> Temperatura_sodergania;
     cout << "\t| Vlagnost:  ";
     cin >> Vlagnost;
     cout << "\t| Vrema_life:  ";
     cin >> Vrema_life;
     cout << "\t| Reproduktivniy_vozrast:  ";
     cin >> Reproduktivniy_vozrast;
}
 
void Rastenia::Print(void);
{
     cout << "\nRastenie\t| Naimenovanie:  " << Naimenovanie
     << "\n\t| Areal_obitania: " << Areal_obitania
     << "\n\t| Sposob_razmnogenia:  " << Sposob_razmnogenia
     << "\n\t| Nalichie_plodov: " << Nalichie_plodov
     << "\n\t| Tip_rastenia: " << Tip_rastenia
     << "\n\t| Temperatura_sodergania: " << Temperatura_sodergania
     << "\n\t| Vlagnost: " << Vlagnost
     << "\n\t| Vrema_life: " << Vrema_life
     << "\n\t| Reproduktivniy_vozrast: " << Reproduktivniy_vozrast
     <<"\n" ;
}
 
Ribi::Ribi(void) : 
{
                 Tip_vodi[0] = 0;
}
 
void Ribi::Input(void)
{
      cout << "Please, input Ribi info\nRibi\t| Naimenovanie: ";
     cin >> Naimenovanie;
     cout << "\t| Areal_obitania:  ";
     cin >> Areal_obitania;
     cout << "\t| Tip_vodi:  ";
     cin >> Tip_vodi;
     cout << "\t| Temperatura_sodergania:  ";
     cin >> Temperatura_sodergania;
     cout << "\t| Vlagnost:  ";
     cin >> Vlagnost;
     cout << "\t| Vrema_life:  ";
     cin >> Vrema_life;
     cout << "\t| Reproduktivniy_vozrast:  ";
     cin >> Reproduktivniy_vozrast;
}
 
void Ribi::Print(void)
{
      cout << "\nRastenie\t| Naimenovanie:  " << Naimenovanie
     << "\n\t| Areal_obitania: " << Areal_obitania
     << "\n\t| Tip_vodi:  " << Tip_vodi
     << "\n\t| Temperatura_sodergania: " << Temperatura_sodergania
     << "\n\t| Vlagnost: " << Vlagnost
     << "\n\t| Vrema_life: " << Vrema_life
     << "\n\t| Reproduktivniy_vozrast: " << Reproduktivniy_vozrast
     <<"\n";
}
 
void Sort (Base * A[], int N)
{
int i, j;
Base * p;
 
  for (i = N-1; i > 0; i--)
    for (j = 0; j < i; j++)
      if (A[i]->LessThan(A[j]))       // sravnenie objectov pri
      {                               // pomoschi metoda
        p = A[i];
        A[i] = A[j];
        A[j] = p;
      }
}
 
void Filter(Base * A[], int N)        // vyvod po priznaku
{
int i, j;
 
  cout << "Vvedite vlagnost: ";
  cin >> j;
    for (i = 0; i < N; i++)
      if (A[i]->GetVlagnost() == j)
      A[i]->Print();
}
 
void FilterType(Base * A[], int N, int tip) // vyvod po tipu
{
int i, j;
 
  for (i = 0; i < N; i++)
    if (A[i]->Type() == tip)          // proverka tipa
      A[i]->Print();
}
 
int main(void)
{
Base * A[20];
int N =0;
 
char key, key2;
Base * p;
int i, j;
 
   do
   {
       cout << "\n\n  1 dobavit'\n  2 udalit'\n  3 pechatat'\n"
            "  4 iskat'\n  5 sortirovat'\n  0 vyhod\n>>";
    cin >> key;
 
    switch (key)            // proverka nazhatoy klavishi
    {
      case '1':         // dobavlenie
        if (N >= 20)
        {
          cout << "net mesta!\n";
          break;
        }
        
        cout << "Dobavit':\n  1 Rastenie\n  2 Ribu\n>>";
        cin >> key2;
        if (key2 == '1')
          p = new Rastenie;      // sozdaem object Rastenie
        else
          if (key2 == '2')
            p = new Riba;    // sozdaem object Riba
          else
          {
            cout << "nepravilno nazhali!\n";
            break;          // i vyhodim
          }
 
           if (p)              // yesly object sozdalsa, to
        {
          p->Input();       // vyzyvaem vvod objecta s klaviatury
          A[N] = p;         // zanosim ego v massiv
          N++;              // uvelichivaem kolichestvo objectov
        }
        else
          cout << "pamyaty ne hvataet!\n";
        break;
        
        case '2':         // udalenie
        cout << "Udalit':\nvvedite nomer ot 0 do " << N-1 << ": ";
        cin >> i;
        if (i < 0 || i >= N)
          cout << "nepravilnyy nomer!\n";
        else
        {
          delete A[i];          // unichtozhaem element
          for (; i < N-1; i++)  // sdvigaem ostalnye chtob
            A[i] = A[i+1];      //   v massive nebylo "dyrki"
          N--;                  // umenshaem kolichestvo objectov
        }
        break;
        
        case '3':         // prosmotr
        if (!N)                   // yesli net objectov - soobschaem
          cout << "Prosmotr: net objectov!\n";
        else
          for (i = 0; i < N; i++) // dlya vseh objectov
            A[i]->Print();        // vyzyvaem method vyvoda
        break;
        
        case '4':         // poisk
        cout << "Poisk:\n  1 vse Rastenia\n  2 vse Ribi\n  3 po Naimenovanie\n>>";
        cin >> key2;
        if (key2 == '1')
          FilterType(A, N, 1);  // vyvod vseh Rastenii
        else
        if (key2 == '2')
          FilterType(A, N, 2);  // vyvod vseh Rib
        else
        if (key2 == '3')
          Filter(A, N);         // filtraciya po priznaku
        else
          cout << "nepravilno nazhali!\n";
        break;
        
        case '5':         // sortirovka
        Sort(A, N);
        break;
 
      case '0':         // vyhod
        break;
        
         default:
        cout << "nepravilno nazhali!\n";
        break;
    }
  }
  while (key != '0'); // rabotaem poka ne nazhat 0
 
  for (i = 0; i < N; i++)   // unichtozhaem vse objecty
    delete A[i];
 
  cout << "Poka!\n";
}
Журнал компиляции:
Êîìïèëÿòîð: Default compiler
Âûïîëíåíèå g++.exe...
g++.exe "C:\Users\Performance\Desktop\LS2.cpp" -o "C:\Users\Performance\Desktop\LS2.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
C:\Users\Performance\Desktop\LS2.cpp: In member function `int Base::GetVlagnost()':
C:\Users\Performance\Desktop\LS2.cpp:34: error: `((Base*)this)->Base::Vlagnost' cannot be used as a function

C:\Users\Performance\Desktop\LS2.cpp: At global scope:
C:\Users\Performance\Desktop\LS2.cpp:49: error: ISO C++ forbids declaration of `Rastenia' with no type

C:\Users\Performance\Desktop\LS2.cpp:66: error: `Rastenia' has not been declared
C:\Users\Performance\Desktop\LS2.cpp:66: error: expected constructor, destructor, or type conversion before ';' token
C:\Users\Performance\Desktop\LS2.cpp:67: error: expected unqualified-id before '{' token
C:\Users\Performance\Desktop\LS2.cpp:67: error: expected `,' or `;' before '{' token
C:\Users\Performance\Desktop\LS2.cpp:72: error: `Rastenia' has not been declared
C:\Users\Performance\Desktop\LS2.cpp: In function `void Input()':
C:\Users\Performance\Desktop\LS2.cpp:75: error: `Naimenovanie' undeclared (first use this function)
C:\Users\Performance\Desktop\LS2.cpp:75: error: (Each undeclared identifier is reported only once for each function it appears in.)
C:\Users\Performance\Desktop\LS2.cpp:77: error: `Areal_obitania' undeclared (first use this function)
C:\Users\Performance\Desktop\LS2.cpp:79: error: `Sposob_razmnogenia' undeclared (first use this function)
C:\Users\Performance\Desktop\LS2.cpp:81: error: `Nalichie_plodov' undeclared (first use this function)
C:\Users\Performance\Desktop\LS2.cpp:83: error: `Tip_rastenia' undeclared (first use this function)
C:\Users\Performance\Desktop\LS2.cpp:85: error: `Temperatura_sodergania' undeclared (first use this function)

C:\Users\Performance\Desktop\LS2.cpp:87: error: `Vlagnost' undeclared (first use this function)
C:\Users\Performance\Desktop\LS2.cpp:89: error: `Vrema_life' undeclared (first use this function)
C:\Users\Performance\Desktop\LS2.cpp:91: error: `Reproduktivniy_vozrast' undeclared (first use this function)
C:\Users\Performance\Desktop\LS2.cpp: At global scope:
C:\Users\Performance\Desktop\LS2.cpp:94: error: `Rastenia' has not been declared
C:\Users\Performance\Desktop\LS2.cpp:95: error: expected unqualified-id before '{' token
C:\Users\Performance\Desktop\LS2.cpp:95: error: expected `,' or `;' before '{' token
C:\Users\Performance\Desktop\LS2.cpp: In constructor `Ribi::Ribi()':
C:\Users\Performance\Desktop\LS2.cpp:109: error: expected identifier before '{' token
C:\Users\Performance\Desktop\LS2.cpp:109: error: expected `(' before '{' token

C:\Users\Performance\Desktop\LS2.cpp: In function `int main()':
C:\Users\Performance\Desktop\LS2.cpp:205: error: `Rastenie' has not been declared

C:\Users\Performance\Desktop\LS2.cpp:208: error: `Riba' has not been declared
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 20:37     Поправьте код
Посмотрите здесь:

Поправьте пожалуйста код ... C++
Поправьте пожалуйста код C++
Поправьте код!!! C++
Поправьте код... C++
Поправьте пожалуйста код. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ярослав Никитин
 Аватар для Ярослав Никитин
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 70
13.04.2014, 20:55     Поправьте код #2
Хотя бы условие напиши, я может и не решу, но для других. Ведь никто не захочет разбираться в том, что ты пытался.
Pavel07
3 / 3 / 1
Регистрация: 28.10.2012
Сообщений: 310
Завершенные тесты: 1
13.04.2014, 21:03  [ТС]     Поправьте код #3
Это задание
База данных станции юных натуралистов должна содержать информацию о растениях,рыбах, птицах и животных.Для всех указывается наименование, ареал обитания, температура содержания и влажность, время жизни и репродуктивный возраст. Для растений также указывается тип, способ размножения и наличие плодов; для рыб - тип воды; для птиц - среднее количество яиц в кладке, умение летать, плавать на поверхности воды и под водой; для животных тип корма.

Нужно выполнить обобщение классов предметной области и создать иерархию классов, имеющих общий базовый класс.
Организовать список объектов разных типов и реализовать операции и удаления элементов печати на экране всех элементов списка.
Реализовать операции поиска и сортировки.
Ярослав Никитин
 Аватар для Ярослав Никитин
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 70
13.04.2014, 21:09     Поправьте код #4
49 : Отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
49 : Rastenia: отсутствие возвращаемого типа; предполагается функция-член, возвращающая "int"
34 : Результатом вычисления фрагмента не является функция, принимающая 1 аргументов. Вот эта строка:
C++
1
return Temperatura_sodergania, Vlagnost(0), Vrema_life, Reproduktivniy_vozrast;
66 : Rastenia: не является именем класса или пространства имен
66 : отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
66 : {: отсутствует заголовок функции (возможно, используется формальный список старого типа). Вот она:
C++
1
2
Rastenia::Rastenia(void);
{
72 : Rastenia: не является именем класса или пространства имен
75 : Naimenovanie: необъявленный идентификатор
77 : Areal_obitania: необъявленный идентификатор
79 : Sposob_razmnogenia: необъявленный идентификатор. (Объяви)
81 : Nalichie_plodov: необъявленный идентификатор. (аналогично объяви)
83 : Tip_rastenia: необъявленный идентификатор. (аналогично объяви)
85 : Temperatura_sodergania: необъявленный идентификатор. (аналогично объяви)
87 : Vlagnost: необъявленный идентификатор. (аналогично объяви)
89 : Vrema_life: необъявленный идентификатор
91 : Reproduktivniy_vozrast: необъявленный идентификатор
94 : Rastenia: не является именем класса или пространства имен
95 : {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
109: синтаксическая ошибка: { Вот строка:
C++
1
2
Ribi::Ribi(void) : 
{
205 : синтаксическая ошибка: идентификатор "Rastenie"
208 : синтаксическая ошибка: идентификатор "Riba"
Может я и ошибаюсь. Кстати, пользуйся русской раскладкой, лучше же:
C++
1
setlocale(LC_ALL, "Russian");
Pavel07
3 / 3 / 1
Регистрация: 28.10.2012
Сообщений: 310
Завершенные тесты: 1
13.04.2014, 21:16  [ТС]     Поправьте код #5
спасибо)
Ярослав Никитин
 Аватар для Ярослав Никитин
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 70
13.04.2014, 21:18     Поправьте код #6
Цитата Сообщение от Pavel07 Посмотреть сообщение
спасибо
Исправить смог?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2014, 21:21     Поправьте код
Еще ссылки по теме:

C++ Поправьте код.
Поправьте код C++
Поправьте Код C++

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

Или воспользуйтесь поиском по форуму:
Pavel07
3 / 3 / 1
Регистрация: 28.10.2012
Сообщений: 310
Завершенные тесты: 1
13.04.2014, 21:21  [ТС]     Поправьте код #7
в процессе исправления, не все получается исправить пока попробую сам если не будет получаться отпишусь
Yandex
Объявления
13.04.2014, 21:21     Поправьте код
Ответ Создать тему
Опции темы

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