Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130

Ошибка в массиве

22.11.2012, 13:48. Показов 979. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
/*
 * No description
 */
class Action
{
    private:
  int n;
  TStud *mas;
 public:
  int GetN() {return n;}
  Action( int ); 
  ~Action();
  void Clear(){ n=0; };
  void Add(TStud);
  void ToFile();
  void FromFile(char*);
  void Obrab_Fac();
  void Obrab_Gr();
  void Sort_Spis();
  void ToScreen();
 
};
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
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
#include "action.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 // class's header file
using namespace std;
// class constructor
Action::Action(int nn)
{  n=0; mas=new TStud[nn]; }
//------------------------------------------------------------
Action::~Action()
{  delete [] mas; n=0; }
 
void Action::Add(TStud stud)
{  *(mas+n)= stud; n++; }
 //------------------------------------------------------------
void Action::ToFile()
{
  ofstream zap("Spisok.txt");
  if(!zap) 
  {
     cout<<"nevozmozno otkrit fale lkz zapisi.Nazmite lubyy klavishy...";
     getch();  exit(1);
  };
  zap<<n<<endl;
  for(int i=0; i<n; i++)  zap<<*(mas+i);
  zap.close();
  clrscr();
  cout<<"Ââîä äàííûõ çàêîí÷åí "<<
   "("<<GetN()<<" zap)"<<" Nazmite lubyy klavishy..."; getch();
}
//------------------------------------------------------------
void Action::FromFile(char *fname)
{
  int nn; TStud stud;
  ifstream chten(fname, ios::in|ios::nocreate);
  if(!chten)
    {
    cout<<endl<<"íåâîçìîæíî îòêðûòü ôàéë äëÿ ÷òåíèÿ.Íàæìèòå ëþáóþ êëàâèøó...";
    getch();  exit(1);
  }
  Clear();
  chten>>nn;
  for(int i=0; i<nn; i++)
  {
    chten>> stud;
    system("cls");
    cout<< stud; getch();
    Add(stud);
  };
  chten.close();
  clrscr();
  cout<<"Ñ÷åò çàâåðøåí. Íàæìèòå ëþáóþ êëàâèøó..";
}
//------------------------------------------------------------
void Action::Obrab_Fac()
{
  char sh_fac[3];
  int stud=0, propusk=0;
  float  stud_propusk=0;
  TStud *ptr;
  cout<<" ââåäèòå øèôð ôàêóëüòåòà:";
  cin>> sh_fac;
  for(int i=0; i<n; i++)
  {
    ptr=(mas+i);
    if(strcmp(ptr->Shifr_Fac, sh_fac)==0)
    {
      stud+=ptr->kol_stud;
      propusk+=ptr->prop;
      stud_propusk+=(ptr->prop - ptr->uv_prop);
    }
   }
  if (stud!=0)
  {
   stud_propusk=float (stud_propusk/stud);
    system("cls");
    cout<<"  Èíôîðìàöèÿ ïî ôàêóëüòåòó "<<sh_fac<<": "<<endl;
    cout<<"  îáùåå êîëè÷åñòâî ñòóäåíòîâ : "<< stud<<endl;
    cout<<"  Îáùåå êîëè÷åñòâî ïðîïóùåíûõ ÷àñîâ: "<< propusk<<endl;
    cout<<"  Ñðåäíåå êîëè÷åñòâî ïðîïóùåíûõ ÷àñîâ íà îäíîãî ñòóäåíòà:
     "<< stud_propusk<<endl;
  }
  else cout<<"Òàêîé ôàêóëüòåò íå íàéäåí"<<endl;
  getch();
}
//------------------------------------------------------------
void Action::Obrab_Gr()
{
  TStud *ptr; int max=0, imax=0;
  if(n>0)
  {
    for(int i=0; i<n; i++)
    {
      ptr=(mas+i);
      if (ptr->uv_prop>max)
      { imax=i; max=ptr->uv_prop; }
     }
   cout<<" Ñâåäåíèÿ î ãðóïïå, èìåþùåé ìàêñ. êîë-âî ïðîïóñêîâ ïî óâ. ïðè÷èíå:"   <<endl;
  cout<<*(mas+imax);
  getch();
 }
}
//------------------------------------------------------------
void Action::Sort_Spis()
{
  TStud tmp, *ptr1, *ptr2;
  if(n>0)
  {
     L1:
     for(int i=0; i<n-1; i++)
     {  ptr1=(mas+i); ptr2=(mas+i+1);
     if (ptr2->prop> ptr1->prop)
      { tmp=*ptr2; *ptr2=*ptr1; *ptr1=tmp; goto L1; }
      }
   }
}
//------------------------------------------------------------
void Action::ToScreen()
{
  int i=0; char ch;
  do
  {
   system("cls");
    cout<<"--- " <<i+1<<"-àÿ çàïèñü èç "<< GetN() <<" ----"<<endl;
    cout<<*(mas+i)<<endl;
    ch=getch();
    switch(ch)
    {
      case 0:   ch=getch();
      case 72: if (i==0) i=GetN()-1; else i--; break;  // íàæìèòå  Page Up
      case 80: if (i==GetN()-1) i=0; else i++;           //íàæìèòå Page Down
    }
  } while(ch!=27);      // âûõîä ïî íàæàòèþ Esc
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
class TStud
{
private:
    char Shifr_Fac[3], Name_Fac[4], Shifr_Gr[6];
    int kol_stud;
    int prop;
    int uv_prop;
  friend istream& operator >> (istream&, TStud&);
  friend ostream& operator << (ostream&, TStud&);
 public:
  friend class Action;
};
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
#include "tstud.h" // class's header file
 
// class constructor
istream& operator >> (istream& s, TStud & A)
{
 cout<<"ââåäèòå øèôð ôàêóëüòåòà: "; s>>A.Shifr_Fac;
 cout<<" ââåäèòå íàçâàíèå ôàêóëüòåòà: "; s>>A.Name_Fac;
 cout<<" ââåäèòå øèôð ãðóïïû: "; s>>A.Shifr_Gr;
 cout<<" ââåäèòå êîëè÷åñòâî ñòóäåíòîâ â ãðóïïå"; s>>A.kol_stud;
 cout<<" ââåäèòå îáùåå êîëè÷åñòâî ïðîïóñêîâ â ãðóïïå"; s>>A.prop;
 cout<<" ââåäèòå êîëè÷åñòâî ïðîïóñêîâ ïî óâàæèòåëüíîé ïðè÷èíå"; s>>A.uv_prop;
 return s;
}
//------------------------------------------------------------
ostream& operator << (ostream& s, TStud& A)
{
 cout<<" øèôð ôàêóëüòåòà: "; s<<setw(2)<<A.Shifr_Fac<<endl;
 cout<<" íàçâàíèå ôàêóëüòåòà: "; s<<setw(3)<<A.Name_Fac<<endl;
 cout<<" øèôð ãðóïïû: "; s<<setw(5)<<A.Shifr_Gr<<endl;
 cout<<" êîëè÷åñòâî ñòóäåíòîâ â ãðóïïå: "; s<<A.kol_stud<<endl;
 cout<<" îáùåå êîëè÷åñòâî ïðîïóñêîâ â ãðóïïå: "; s<<A.prop<<endl;
 cout<<" êîëè÷åñòâî ïðîïóñêîâ ïî óâàæèòåëüíîé ïðè÷èíå: "; s<<A.uv_prop<<endl;
 return s;
}
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
#include <windows.h>
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include "tstud.h"
#include "action.h"
using namespace std;
void gotoxy(int xpos, int ypos)
{
  COORD scrn;    
 
  HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
 
  scrn.X = xpos; scrn.Y = ypos;
 
  SetConsoleCursorPosition(hOuput,scrn);
}
void Gl_Menu()
{
  system("cls");
  gotoxy(33,11); cout<<"1 - ââîä íîâûõ äàííûõ";
  gotoxy(33,12); cout<<"2 - ïðîñìîòð";
  gotoxy(33,13); cout<<"3 - èíôîðìàöèÿ î ôàêóëüòåòå";
  gotoxy(33,14); cout<<"4 - èíôîðìàöèÿ î ãðóïïå";
  gotoxy(33,15); cout<<"Esc - âûõîä";
}
//------------------------------------------------------------
void Menu_1()
{
  system("cls");
  gotoxy(33,11); cout<<"1 - c êëàâèàòóðû";
  gotoxy(33,12); cout<<"2 - èç ôàéëà";
}
 
int main(int argc, char *argv[])
{
    char ch,ch1, *file_n;
  Action Act(20); 
  TStud stud;
  do
  {
   system("cls");
   Gl_Menu();
   ch=getch();
   switch(ch)
   {
     case '1':
      Menu_1();
      ch1=getch();
      switch(ch1)
             {
        case '1':
          system("cls");
          cin>> stud;
              Act.Add(stud);
          break;
        case '2':
           system("cls"); cout<<"ââåäèòå èìÿ ôàéëà ";
          cin>>file_n;
          Act.FromFile(file_n);
           break;
      };
        break;
     case '2':
       system("cls");
       if(Act.GetN()>0) Act .ToScreen();
       break;
     case '3':
       system("cls"); 
       Act.Obrab_Fac();
       break;
     case '4':
       system("cls"); 
       Act.Obrab_Gr();
       break;
    };
  }while(ch!=27);
 if (Act.GetN()>0) 
      { Act.Sort_Spis();  Act.ToFile(); }
    system("PAUSE");
    return EXIT_SUCCESS;
}
Ошибок много но все связаны с массивом в объявлении класса Action.h в строке TStud *mas;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2012, 13:48
Ответы с готовыми решениями:

Ошибка в массиве
Добрый день, уважаемые программисты. Прошу у вас помощи с программой. Она выдает ошибку. Задание: вывести произведение в тех строках,...

ошибка в массиве
An Error occurred while handling another error: yii\web\HeadersAlreadySentException: Headers already sent in...

Ошибка в массиве
Здравствуйте. Есть вот такой класс, созданный для хранения истории преобразований массива. Лист листов - это своеобразный трёхмерный...

14
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
22.11.2012, 13:51
Наверное забыл выделить память под массив.
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 16:26  [ТС]
Да нет mas=new TStud[nn];

Добавлено через 1 час 1 минуту
И в деструкторе тоже на mas ругается

Добавлено через 20 минут
13 C:\Dev-Cpp\action.h ISO C++ forbids declaration of `TStud' with no type

Добавлено через 1 час 6 минут
Блин помогите пожалуйста уже 3 часа над кодом сижу в указателях уже запутался
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.11.2012, 16:32
Оно просто на этапе обращения к конструктору Action не понимает, что есть TStud, вот и ругается.
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 16:33  [ТС]
Каким образом ему надо дать понять?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.11.2012, 16:34
Добавь #include "tstud.h" в action.h и еще инклуд гварды расставь.

Ну и отдели уж до конца объявление и реализацию. В .h должны быть только шаблоны
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 16:38  [ТС]
ТОесть мне обязательно void Clear(){ n=0; }; надо выносить в файл cpp. Не понимаю зачем...

Добавлено через 1 минуту
Теперь на 17 C:\Dev-Cpp\tstud.h ISO C++ forbids declaration of `istream' with no type И острим тоже самое ругается
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.11.2012, 16:41
Цитата Сообщение от Vadim8063 Посмотреть сообщение
ТОесть мне обязательно void Clear(){ n=0; }; надо выносить в файл cpp. Не понимаю зачем...

Добавлено через 1 минуту
Теперь на 17 C:\Dev-Cpp\tstud.h ISO C++ forbids declaration of `istream' with no type И острим тоже самое ругается
Т.е. для чего выносить все остальное вам понятно, а для некоторых избранных функций нет?

istream и ostream лежат в стандартной области видимости. Необходимо писать std::ifstream, или же добавить using namespace std;
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 16:49  [ТС]
Добавлена using namespace std;
ВЫдаёт ошибки
17 C:\Dev-Cpp\tstud.h `istream' is neither function nor member function; cannot be declared friend
17 C:\Dev-Cpp\tstud.h expected `;' before '&' token
18 C:\Dev-Cpp\tstud.h ISO C++ forbids declaration of `ostream' with no type
18 C:\Dev-Cpp\tstud.h `ostream' is neither function nor member function; cannot be declared friend
18 C:\Dev-Cpp\tstud.h expected `;' before '&' token
23 C:\Dev-Cpp\action.cpp variable `std::ofstream zap' has initializer but incomplete type

Добавлено через 4 минуты
Блин добавил include fstream вроде всё норм но осталась ошибка
40 C:\Dev-Cpp\action.cpp `nocreate' is not a member of `std::ios'
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.11.2012, 17:11
Цитата Сообщение от Vadim8063 Посмотреть сообщение
40 C:\Dev-Cpp\action.cpp `nocreate' is not a member of `std::ios'
Да, ios::nocreate выкинут из стандарта.
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 17:21  [ТС]
В каком смысле выкинуть?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.11.2012, 17:22
Цитата Сообщение от Vadim8063 Посмотреть сообщение
В каком смысле выкинуть?
Я написал выкинут, хотя тебе следует поступить так же. Замени этот флаг на банальную проверку открытия файла. Если удалось открыть - то выход.
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 17:27  [ТС]
Да,,, Это мне как сделать типа условием if
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.11.2012, 17:28
Цитата Сообщение от Vadim8063 Посмотреть сообщение
Да,,, Это мне как сделать типа условием if
"типа" да
0
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 17:42  [ТС]
C++
1
2
3
4
5
6
file = fopen( fname, "r" );
if( file != 0 )
{
fgets( load_string, 50 , file );
cout << "load_string = " << load_string << endl;
}
Чёт как то не сильно помогло

Добавлено через 5 минут
C++
1
2
3
4
5
if(!chten.is_open())
    {
    cout<<endl<<"íåâîçìîæíî îòêðûòü ôàéë äëÿ ÷òåíèÿ.Íàæìèòå ëþáóþ êëàâèøó...";
    getch();  exit(1);
  }
Так тоже не сильно спасло
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2012, 17:42
Помогаю со студенческими работами здесь

Ошибка в массиве
for i:=1 to length(s1) do if (s1 in per) then for j:=1 to c do bukv:=s1; Помогите исправить ошибку, проходим...

Ошибка в массиве (
Разделить каждый элемент строки матрицы W(3,4) на первый элемент данной строки. Скажите пожалуйста где ошибка? Option Explicit ...

Ошибка в массиве
Вроде работает, а вроде и нет ... странно как то, в среде делфи все работало, как созранил и заного открыл перестал работать. Посмотрите...

Ошибка в массиве
Здравствуйте, у меня возникает проблема в массиве. Вот часть программы: for (m=0; m&lt;=max2; m++) {if (b!=0) M]=b;} ...

Ошибка в массиве
Всем привет. Делаю змейку. Когда змейка есть яблочко она вырастает. Новый кубик змейки появляется снизу последнего. Пишет...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru