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

Почему компилятор ругается? - C++

Восстановить пароль Регистрация
 
KuckaMAXHATKA
1 / 1 / 0
Регистрация: 20.02.2011
Сообщений: 27
16.03.2011, 20:20     Почему компилятор ругается? #1
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
 
FILE*fp;
 
struct Computer 
{
    char type[50];
    int  year;
    char payment[10];
};
 
void enter(Computer *);
void view(Computer *,int );
void cut(Computer *,int ,int);
 
Computer*struc;
 
int main()
{
    cout<<"Menu:\n 1.Add data\n 2.View data\n 3.Delete data\n 4.Exit\n";
    int menu;
    cin>> menu;
    if((menu<1)||(menu>4))
    {
        cout<<"Invalid option"<<endl;
    }
 
    else switch(menu){
 
    case 1://Add
        cout<<"How many computers you want to add in data base?\n";
        int n;
        cin>>n;
        cout<<"\n";
        struc=new Computer[n];
        for(int i=0;i<n;i++)
        {
            enter(&struc[i]);
        }
        fp=fopen("Computer.dat","wb");
        fwrite(struc,sizeof(Computer),n,fp);
        fclose(fp);
    break;
 
    case 2://View
        fp = fopen("Computer.dat","rb");
        int fsize;
        fseek(fp, 0, SEEK_END);
        fsize=ftell(fp);
        n = fsize/sizeof(Computer);
        Computer*struc = new Computer[n];
        cout << "Count of computers: " << n << endl;
        fseek(fp, 0, SEEK_SET);
        rewind(fp);
        fread(struc, sizeof(Computer), n, fp); 
        view(struc, n); 
        fclose(fp);
    break;
    
    case 3://Delete
        cout<<"Computer of with year you want to delete?"<<endl;
        int x;
        cin>>x;
        cut(struc,n,x);
    break;
 
    case 4://Exit
        return 0;
    break;
    }
    return 0;
}
 
void enter(Computer*c)
{
    cout<<"Enter type: ";
    cin>> c->type;
    cout<<"Enter year: ";
    cin>> c->year;
    cout<<"Enter payment: ";
    cin>> c->payment;
    cout<<"\n"<<endl;
}
 
void view(Computer*c,int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<"Computer type: "<<c[i].type<<"\n Computer year: "<<c[i].year<<"\n Computer payment: "<<c[i].payment<<endl;
    }
}
 
void cut(Computer*c,int n,int x)
{
    for(int i=0;i<n;i++)
    {
        int k=i;
        if(c[i].year==x) 
        {
            for(k=i;k<n-1; k++)
                c[k]=c[k+1];
            n--;
            i=-1;
        }
    }
}
Люди добрые и по совместительству умные! Подскажите в чём ошибка и как её исправить?
error C2360:initialization of 'struc' is skipped by 'case' label
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2011, 20:20     Почему компилятор ругается?
Посмотрите здесь:

компилятор ругается на структуру C++
Ругается компилятор C++
C++ почему компилятор не ругается?
ругается компилятор: C++
Ругается компилятор C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AnDrew_LP
160 / 162 / 9
Регистрация: 29.05.2010
Сообщений: 435
16.03.2011, 20:26     Почему компилятор ругается? #2
напишите хотя б,какая ошибка
KuckaMAXHATKA
1 / 1 / 0
Регистрация: 20.02.2011
Сообщений: 27
16.03.2011, 20:27  [ТС]     Почему компилятор ругается? #3
Цитата Сообщение от AnDrew_LP Посмотреть сообщение
напишите хотя б,какая ошибка
error C2360:initialization of 'struc' is skipped by 'case' label
ZiGSuN
 Аватар для ZiGSuN
27 / 27 / 2
Регистрация: 02.12.2009
Сообщений: 66
16.03.2011, 20:33     Почему компилятор ругается? #4
На какую строку указывает ошибка?
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
16.03.2011, 20:34     Почему компилятор ругается? #5
В какой строке хоть?
KuckaMAXHATKA
1 / 1 / 0
Регистрация: 20.02.2011
Сообщений: 27
16.03.2011, 20:37  [ТС]     Почему компилятор ругается? #6
Цитата Сообщение от ZiGSuN Посмотреть сообщение
На какую строку указывает ошибка?
Строки 63 и 70. Одинакавая ошибка.

Добавлено через 29 секунд
Цитата Сообщение от KuckaMAXHATKA Посмотреть сообщение
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
 
FILE*fp;
 
struct Computer 
{
    char type[50];
    int  year;
    char payment[10];
};
 
void enter(Computer *);
void view(Computer *,int );
void cut(Computer *,int ,int);
 
Computer*struc;
 
int main()
{
    cout<<"Menu:\n 1.Add data\n 2.View data\n 3.Delete data\n 4.Exit\n";
    int menu;
    cin>> menu;
    if((menu<1)||(menu>4))
    {
        cout<<"Invalid option"<<endl;
    }
 
    else switch(menu){
 
    case 1://Add
        cout<<"How many computers you want to add in data base?\n";
        int n;
        cin>>n;
        cout<<"\n";
        struc=new Computer[n];
        for(int i=0;i<n;i++)
        {
            enter(&struc[i]);
        }
        fp=fopen("Computer.dat","wb");
        fwrite(struc,sizeof(Computer),n,fp);
        fclose(fp);
    break;
 
    case 2://View
        fp = fopen("Computer.dat","rb");
        int fsize;
        fseek(fp, 0, SEEK_END);
        fsize=ftell(fp);
        n = fsize/sizeof(Computer);
        Computer*struc = new Computer[n];
        cout << "Count of computers: " << n << endl;
        fseek(fp, 0, SEEK_SET);
        rewind(fp);
        fread(struc, sizeof(Computer), n, fp); 
        view(struc, n); 
        fclose(fp);
    break;
    
    case 3://Delete
        cout<<"Computer of with year you want to delete?"<<endl;
        int x;
        cin>>x;
        cut(struc,n,x);
    break;
 
    case 4://Exit
        return 0;
    break;
    }
    return 0;
}
 
void enter(Computer*c)
{
    cout<<"Enter type: ";
    cin>> c->type;
    cout<<"Enter year: ";
    cin>> c->year;
    cout<<"Enter payment: ";
    cin>> c->payment;
    cout<<"\n"<<endl;
}
 
void view(Computer*c,int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<"Computer type: "<<c[i].type<<"\n Computer year: "<<c[i].year<<"\n Computer payment: "<<c[i].payment<<endl;
    }
}
 
void cut(Computer*c,int n,int x)
{
    for(int i=0;i<n;i++)
    {
        int k=i;
        if(c[i].year==x) 
        {
            for(k=i;k<n-1; k++)
                c[k]=c[k+1];
            n--;
            i=-1;
        }
    }
}
Люди добрые и по совместительству умные! Подскажите в чём ошибка и как её исправить?
error C2360:initialization of 'struc' is skipped by 'case' label
Строки 63 и 70. Одинакавая ошибка.
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
16.03.2011, 20:42     Почему компилятор ругается? #7
Вроде бы там всё ОК.

Добавлено через 2 минуты
Да, действительно:

Код
[BCC32 Error] File21.cpp(64): E2126 Case bypasses initialization of a local variable
  Full parser context
    File21.cpp(23): parsing: int main()
Попробую разобраться.

Добавлено через 2 минуты
Код
В С++ недопустимо любым способом обходить инициализацию ло- 
кальной переменной. В данном случае в конструкторе case имеется 
ветвь, по которой управление передается за точку инициализации 
локальной переменной.
Вот и всё.
Твоя Computer*struc; нигде не инициализирована.
KuckaMAXHATKA
1 / 1 / 0
Регистрация: 20.02.2011
Сообщений: 27
16.03.2011, 20:46  [ТС]     Почему компилятор ругается? #8
Код
В С++ недопустимо любым способом обходить инициализацию ло- 
кальной переменной. В данном случае в конструкторе case имеется 
ветвь, по которой управление передается за точку инициализации 
локальной переменной.
Вот и всё.
Твоя Computer*struc; нигде не инициализирована.

Окай. А как это исправить?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2011, 09:53     Почему компилятор ругается?
Еще ссылки по теме:

C++ Компилятор не ругается
C++ Почему ругается компилятор
Компилятор ругается C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.03.2011, 09:53     Почему компилятор ругается? #9
C++
1
Computer*struc = new Computer[n];
C++
1
struc = new Computer[n];
либо она глобальная, либо локальная, а так и так - перекрытие, ведущее к запутыванию
Yandex
Объявления
17.03.2011, 09:53     Почему компилятор ругается?
Ответ Создать тему
Опции темы

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