Аватар для Shok_One
2 / 2 / 0
Регистрация: 24.04.2012
Сообщений: 59

Разбор кода простой программы новичка

03.07.2012, 00:35. Показов 1902. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, я вот тут только начал учиться, помогите понять ошибки. Вот код:
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
#include <iostream.h>
 
class Rabota
{
public:
    int starye();
    int rabotka();
private:
    int cash = 50000;
    int people = 3;
    int budzhet;
    int x;
    int y;
}
 
Rabota::starye()
{
    cout << "Sotrudnikov v kompanii: \n" << people << " i ih zarplata: \n" << cash << " a budzhet obshy: \n" << budzhet << endl;
    budzhet = cash * people;
    return 0;
}
 
Rabota::rabotka()
{
    cout << "Vvedite colichestvo novyh: \n" << x  << " i ih zarplaty: \n" << y << endl;
    cin >> x;
    cin >> y;
    cout << "I budzet novyh sotrudnikov: \n";
    return x * y;
}
 
int main()
{
    Rabota Kompania;
    Kompania.rabotka();
    cout << "No v kompanii est i starye sotrudniki \n";
    Kompania.starye();
    return 0;
}
а вот ошибки компилятора:
(9) : error C2258: illegal pure syntax, must be '= 0'
(9) : error C2252: 'cash' : pure specifier can only be specified for functions
(10) : error C2258: illegal pure syntax, must be '= 0'
(10) : error C2252: 'people' : pure specifier can only be specified for functions
(17) : error C2556: 'class Rabota __thiscall Rabota::starye(void)' : overloaded function differs only by return type from 'int __thiscall Rabota::starye(void)'
(6) : see declaration of 'starye'
(17) : error C2371: 'starye' : redefinition; different basic types
(6) : see declaration of 'starye'
(18) : error C2065: 'people' : undeclared identifier
(18) : error C2065: 'cash' : undeclared identifier
(37) : error C2264: 'starye' : error in function definition or declaration; function not called
Error executing cl.exe.

first.exe - 9 error(s), 0 warning(s)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.07.2012, 00:35
Ответы с готовыми решениями:

Разбор кода программы
сделали контрольную и защитить не не могу. помогите разобрать что значит код, пожалуйста. реализация LZ метода сжатия кто может...

Разбор кода программы
Здравствуйте! Помогите пожалуйста написать программу (на Bison+Flex), которая будет сканировать текстовый документ и выводить информацию об...

Требуется доработка кода простой программы (наибольшее из чисел и НОД из них)
Требуется доработка кода простой программы на языке Visual C++ : Разработать программу ( проект) состоящую из двух модулей. Первый...

8
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
03.07.2012, 00:44
Цитата Сообщение от Shok_One Посмотреть сообщение
int cash = 50000;
* * int people = 3;
надо инициализировать в конструкторе
ах да,конструктора-то нет,а объект вы создаёте

Цитата Сообщение от Shok_One Посмотреть сообщение
Rabota::starye()
{
* * cout << "Sotrudnikov v kompanii: \n" << people << " i ih zarplata: \n" << cash << " a budzhet obshy: \n" << budzhet << endl;
* * budzhet = cash * people;
* * return 0;
}
можно вообще не возвращать 0,ведь он не используется дальше
2
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
03.07.2012, 00:58
Забыли точку с запятой после скобки объявления класса. И еще кое что.
Цитата Сообщение от Shok_One Посмотреть сообщение
private:
int cash = 50000;
int people = 3;
Shok_One, инициализация в классе (в объявлении, то есть в теле) допускается только для статических полей. Это поля общие для всех экземпляров и недоступные для функций членов класса. Но Вы же обращаетесь к ним из функций членов, то есть уберите инициализацию:
C++
1
2
3
private:
    int cash;// = 50000;
    int people;// = 3;
Для того что бы получить экземпляр с заданными значениями этих полей в открытой части объявите конструктора:
C++
1
2
3
4
5
public:
    int starye();
    int rabotka();
Rabota ();
Rabota (int a,int b);
а вне тела объявления напишите:
C++
1
2
Rabota::Rabota (){cash = 50000; people = 3;}
Rabota::Rabota (int a,int b){cash = a; people = b;}
попробуйте скомпилировать.
А вообще стоит Вам почитать.
0
 Аватар для Shok_One
2 / 2 / 0
Регистрация: 24.04.2012
Сообщений: 59
03.07.2012, 00:59  [ТС]
поправьте код пожалуйста, я конструктор инициализировал и теперь ошибок стало в два раза больше.

Добавлено через 10 секунд
о спасибо)
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2012, 01:02
Насчёт инициализации при объявлении класса уже написали. Инициализация предполагает выделение памяти под переменную. При объявлении класса память не выделяется, это только шаблон для компилятора, который используется при создании объектов класса. Память выделяется под объект класса при его создании, поэтому инициализация элементов класса происходит в конструкторе класса. Конструктор у вас не определён, поэтому будет использоваться конструктор по умолчанию. Ошибки: 1) После объявления класса ставится ; . 2) Методы starye() и rabotka() оъявлены как возвращающие значение, а в реализации этих методов это отсутствует. Надо так: int Rabota::starye() {...} , int Rabota::rabotka() {...} .
1
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
03.07.2012, 01:05
Цитата Сообщение от IGPIGP Посмотреть сообщение
инициализация в классе (в объявлении, то есть в теле) допускается только для статических полей
нет,статические элементы инициализируются вне тела класса
1
 Аватар для zvoronz
273 / 241 / 56
Регистрация: 29.05.2012
Сообщений: 889
03.07.2012, 01:06
Теперь компилится как и просил.

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
#include <iostream>
 
using namespace std;
 
class Rabota
{
public:
    int starye();
    int rabotka();
    Rabota()
    {
        cash = 50000;
        people = 3;
    }
private:
    int cash;
    int people;
    int budzhet;
    int x;
    int y;
};
 
int Rabota::starye()
{
    cout << "Sotrudnikov v kompanii: \n" << people << " i ih zarplata: \n" << cash << " a budzhet obshy: \n" << budzhet << endl;
    budzhet = cash * people;
    return 0;
}
 
int Rabota::rabotka()
{
    cout << "Vvedite colichestvo novyh: \n" << x  << " i ih zarplaty: \n" << y << endl;
    cin >> x;
    cin >> y;
    cout << "I budzet novyh sotrudnikov: \n";
    return x * y;
}
 
int main()
{
    Rabota Kompania;
    Kompania.rabotka();
    cout << "No v kompanii est i starye sotrudniki \n";
    Kompania.starye();
    return 0;
}
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2012, 01:24
А вот так, будет и работать:
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
#include <iostream>
using namespace std;
 
class Rabota
{
public:
    void starye();
    void rabotka();
    Rabota ();
    Rabota (int a,int b);
private:
    int cash;
    int people;
    int budzhet;
    int x;
    int y;
};
 
Rabota::Rabota (){cash = 50000; people = 3; budzhet = cash * people;}
 
Rabota::Rabota (int a,int b){cash = a; people = b;}
 
void Rabota::starye()
{   
    cout << "Sotrudnikov v kompanii: \n" << people << " i ih zarplata: \n" 
    << cash << ", a budzhet obshy: \n" << budzhet << endl;
}
 
void Rabota::rabotka()
{
    cout << "Vvedite colichestvo novyh: \n";  
    cin >> x;
    cin.clear();
    while (cin.get() != '\n');
    cout << "ih zarplata: \n";
    cin >> y;
    cin.clear();
    while (cin.get() != '\n');
    cout << "Budzet novyh sotrudnikov budet: \n";
    cout << x * y << endl;
}
 
int main()
{
    Rabota Kompania;
    Kompania.rabotka();
    cout << "No v kompanii est i starye sotrudniki \n";
    Kompania.starye();
    
    system("pause");
    return 0;
}
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
03.07.2012, 01:31
Цитата Сообщение от alexey31415 Посмотреть сообщение
статические элементы инициализируются вне тела класса
Да, имел ввиду статические константы, а написал кривовато.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.07.2012, 01:31
Помогаю со студенческими работами здесь

Разбор простой программы
Помогите разобраться с простой программой по подсчету букв &quot;А&quot; в строке.Нашел готовую программу в интернете а разобраться не...

Построчный разбор кода программы
Ребят помогите прокомментировать программу, а то завтра защита! Препод придирается ко всему! ...

Разбор кода программы в dotPeek
Доброго времени суток! Есть одна программа, достаточно сложная, основная часть моих обязанностей на работе это её администрирование,...

Разбор кода ассемблерной программы
Добрый день, у меня возникла такая проблема, я при помощи функции strtok() считываю слова из перенной buffer в переменную word. В buffer...

Разбор кода программы Клиент-Сервер
Добрый вечер уважаемые программисты. Будьте добры разобрать код этой программы. Программа представляет собой клиент-сервер и пересылает...


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

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

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru