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

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

Войти
Регистрация
Восстановить пароль
 
wismbel
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
#1

Ошибка при определении переменной в switch - C++

01.10.2015, 22:03. Просмотров 205. Ответов 9
Метки нет (Все метки)

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
case 2: // почасовые работники - фиксированная плата за 40ч, после 40ч полуторная ставка
    
        int workingNorm = 40;
        int hours;
        rate = 1.5; // ставка за сверхурочные часы
 
        cout << "Enter the salary for hour: ";
        cin >> salary;
 
        cout << "Enter the number of hours: ";
        cin >> hours;
 
        if (salary <= workingNorm)
            total = salary * hours;
        else
            total = salary * rate * (hours - workingNorm) + (salary * workingNorm);
 
        cout << "Salary: " << total << "$\n";
        break;
 
    case 3: // на комиссионных началах - 250$ плюс 5.7 % от суммы недельных продаж 
        int product;
        double cost;
        rate = 5.7; // %
 
        cout << "Enter how much of product were sold: ";
        cin >> product;
 
        cout << "Enter the cost of product: ";
        cin >> cost;
 
        salary = 250;
 
        total = salary + (product * (cost * rate / 100));
 
        cout << "Salary: " << total << "$\n";
        break;
Студия ругается. Говорит: error C2360: initialization of 'workingNorm' is skipped by 'case' label c:\users\dmitr_000\documents\visual studio 2013\projects\p5ex5p21\p5ex5p21\source.cpp 56 1 p5ex5p21

Загуглил. Если тело первого случая загнать в скобки - всё окей.
Но почему всё нормально во втором случае? ( скобок нет )

P.s. каких их называть? случаи или кейсы?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2015, 22:03     Ошибка при определении переменной в switch
Посмотрите здесь:

Ошибка при определении массива - C++
#pragma hdrstop #pragma argsused #ifdef _WIN32 #include &lt;tchar.h&gt; #else typedef char _TCHAR; #define _tmain main ...

Ошибка при определении макроса - C++
Здорова! Есть код: #include &lt;iostream&gt; using std::cout; using std::endl; #include &lt;string&gt; using std::string; #include...

Синтаксическая ошибка при определении массива - C++
Не определяется массив int choiceLevel (); int main () { string answer; int level= choiceLevel (); while (answer!=&quot;exit&quot;) {...

Синтаксическая ошибка при определении метода перегруженного оператора,за классом - C++
Есть два класса. Point1 и Pointer1 Синтаксическая Ошибка в Pointer1.cpp в перегрузке операторов. Point1.h #pragma once ...

Ошибка при определении класса: undefiner symbol t1,t2,t3,t4 t1 is not a mamber "figura" - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;graphics.h&gt; #include &lt;math.h&gt; #include &lt;iostream.h&gt; class figura { ...

Ошибка при использовании Switch - case - C++
вообщем в одном из case у меня читается из файла и записывается в массив структур, там же определяется и инициализируется несколько...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
01.10.2015, 22:06     Ошибка при определении переменной в switch #2
Цитата Сообщение от wismbel Посмотреть сообщение
Если тело первого случая загнать в скобки - всё окей.
имено по этому ты скинул жалкий огрызок кода? Начиная со второго пункта.!
wismbel
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
01.10.2015, 22:07  [ТС]     Ошибка при определении переменной в switch #3
Цитата Сообщение от _Valera_ Посмотреть сообщение
имено по этому ты скинул жалкий огрызок кода?
Думал, что этого хватит.
Кликните здесь для просмотра всего текста
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
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
#include <iomanip>
 
int main()
{
    int type;
    int week = 7;  // 7 days
    double total = 0;
    double salary = 0;
    double rate;
 
    do
    {
        cout << "Hello, clerk. Enter the code of employee: ";
        cin >> type;
 
    } while (type < 1 && type > 4);
 
    cout << std::setprecision(2) << std::fixed;
 
    switch (type)
    {
    case 1: // менеджеры - фиксированный недельный оклад
        cout << "Enter the day's salary: ";
        cin >> salary;
 
        total = salary * week;
 
        cout << "Salary: " << total << "$\n";
        break;
 
    case 2: // почасовые работники - фиксированная плата за 40ч, после 40ч полуторная ставка
    {
        int workingNorm = 40;
        int hours;
        rate = 1.5; // ставка за сверхурочные часы
 
        cout << "Enter the salary for hour: ";
        cin >> salary;
 
        cout << "Enter the number of hours: ";
        cin >> hours;
 
        if (salary <= workingNorm)
            total = salary * hours;
        else
            total = salary * rate * (hours - workingNorm) + (salary * workingNorm);
 
        cout << "Salary: " << total << "$\n";
        break;
    }
    case 3: // на комиссионных началах - 250$ плюс 5.7 % от суммы недельных продаж 
        int product;
        double cost;
        rate = 5.7; // %
 
        cout << "Enter how much of product were sold: ";
        cin >> product;
 
        cout << "Enter the cost of product: ";
        cin >> cost;
 
        salary = 250;
 
        total = salary + (product * (cost * rate / 100));
 
        cout << "Salary: " << total << "$\n";
        break;
 
    case 4: // сдельщики - фиксированная сумма с проданной продукции(только один продукт)
        cout << "Enter how much of product were sold: ";
        cin >> product;
 
        cout << "Enter the cost of product: ";
        cin >> cost;
 
        total = product * cost;
 
        cout << "Salary: " << total << "$\n";
        break;
    }
    system("pause");
    return 0;
}
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
01.10.2015, 22:10     Ошибка при определении переменной в switch #4
у меня все работает,
wismbel
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
01.10.2015, 22:11  [ТС]     Ошибка при определении переменной в switch #5
Цитата Сообщение от _Valera_ Посмотреть сообщение
...
Странно.
Kerry_Jr
Модератор
Эксперт PHP
2178 / 1974 / 689
Регистрация: 14.05.2014
Сообщений: 5,773
Записей в блоге: 1
Завершенные тесты: 5
01.10.2015, 22:15     Ошибка при определении переменной в switch #6
wismbel, для того, чтобы объявлять переменные внутри кейсов, тело кейсов нужно обрамлять фигурными скобками, именно поэтому у Вас все и заработало.
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
01.10.2015, 22:15     Ошибка при определении переменной в switch #7
...
wismbel
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
01.10.2015, 22:17  [ТС]     Ошибка при определении переменной в switch #8
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
для того, чтобы объявлять переменные внутри кейсов, тело кейсов нужно обрамлять фигурными скобками, именно поэтому у Вас все и заработало.
А почему во втором кейсе всё нормально?

Добавлено через 29 секунд
case 3
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
01.10.2015, 22:18     Ошибка при определении переменной в switch #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
wismbel, для того, чтобы объявлять переменные внутри кейсов, тело кейсов нужно обрамлять фигурными скобками, именно поэтому у Вас все и заработало.
то есть нельзя инициализировать ???
Потому что так работает
C++
1
2
3
4
5
 case 2: // почасовые работники - фиксированная плата за 40ч, после 40ч полуторная ставка
        int workingNorm;
        int hours;
        workingNorm = 40;
      ... тот же код...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2015, 22:19     Ошибка при определении переменной в switch
Еще ссылки по теме:

Ошибка при вызове в switch перегруженного оператора - C++
есть перегруженный оператор: std::istream&amp; operator&gt;&gt;(istream&amp; is, diagram&amp; dd) { string kod; std::cout&lt;&lt;&quot;Vvedite kod:&quot;&lt;&lt;endl; ...

Ошибка в определении структуры - C++
Здравствуйте. Я только начал изучать структуры и не могу понять в чем ошибка. struct event { char start_time; char stop_time; ...

Ошибка в определении структурного типа - C++
В строке 40 выдает ошибку &quot;error C2440: 'initializing' : cannot convert from 'int' to 'char *'. Помогите, пожалуйста, исправить ее ...

Ошибка в определении шаблонного метода - C++
Подскажите пожалуйста, что делаю не так в определении шаблонного метода. Вот код: // test.cpp #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
wismbel
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 103
01.10.2015, 22:19  [ТС]     Ошибка при определении переменной в switch #10
Цитата Сообщение от _Valera_ Посмотреть сообщение
то есть нельзя инициализировать ???
Да, наверное так.
Yandex
Объявления
01.10.2015, 22:19     Ошибка при определении переменной в switch
Ответ Создать тему
Опции темы

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