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

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

22.11.2012, 13:48. Показов 976. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru