Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Shok_One
2 / 2 / 0
Регистрация: 24.04.2012
Сообщений: 59

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

03.07.2012, 00:35. Показов 1905. Ответов 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
9007 / 4708 / 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
9007 / 4708 / 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
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru