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

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

22.11.2012, 13:48. Показов 855. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru