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

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

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

Ошибка в массиве - C++

22.11.2012, 13:48. Просмотров 498. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2012, 13:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в массиве (C++):

ошибка в массиве - C++
Пишу прогу которая будет создавать файлов сколько ты захочешь 8-) но вот она выдaет ошибку strcat :stop:was not declared что делать...

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

Ошибка в массиве - C++
Для х, который изменяется от a до b с шагом (b-a) / k, где (k = 10), вычислить значение функции f (x).Помогите найти ошибку. ...

Ошибка в двумерном массиве - C++
Делаю игру крестики нолики с использование двумерного массива, и возникла проблема. Программа считает a и a одним значением, и не только...

ошибка в массиве строк - C++
Здравствуйте! Попыталась написать код программы,которая сортирует строки в файле (оканчивающиеся символом перевода строки) с помощью...

Ошибка в динамическом массиве - C++
Проблема при добавлении сотрудника. Первый сотрудник добавляется просто прекрасно, а вот при записи второго сотрудника выдает ошибку и...

14
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
22.11.2012, 13:51 #2
Наверное забыл выделить память под массив.
0
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 16:26  [ТС] #3
Да нет 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
MrGluck
Модератор
Эксперт CЭксперт С++
7427 / 4542 / 676
Регистрация: 29.11.2010
Сообщений: 12,329
22.11.2012, 16:32 #4
Оно просто на этапе обращения к конструктору Action не понимает, что есть TStud, вот и ругается.
0
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 16:33  [ТС] #5
Каким образом ему надо дать понять?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7427 / 4542 / 676
Регистрация: 29.11.2010
Сообщений: 12,329
22.11.2012, 16:34 #6
Добавь #include "tstud.h" в action.h и еще инклуд гварды расставь.

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

Добавлено через 1 минуту
Теперь на 17 C:\Dev-Cpp\tstud.h ISO C++ forbids declaration of `istream' with no type И острим тоже самое ругается
0
MrGluck
Модератор
Эксперт CЭксперт С++
7427 / 4542 / 676
Регистрация: 29.11.2010
Сообщений: 12,329
22.11.2012, 16:41 #8
Цитата Сообщение от 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
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 16:49  [ТС] #9
Добавлена 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
MrGluck
Модератор
Эксперт CЭксперт С++
7427 / 4542 / 676
Регистрация: 29.11.2010
Сообщений: 12,329
22.11.2012, 17:11 #10
Цитата Сообщение от Vadim8063 Посмотреть сообщение
40 C:\Dev-Cpp\action.cpp `nocreate' is not a member of `std::ios'
Да, ios::nocreate выкинут из стандарта.
0
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 17:21  [ТС] #11
В каком смысле выкинуть?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7427 / 4542 / 676
Регистрация: 29.11.2010
Сообщений: 12,329
22.11.2012, 17:22 #12
Цитата Сообщение от Vadim8063 Посмотреть сообщение
В каком смысле выкинуть?
Я написал выкинут, хотя тебе следует поступить так же. Замени этот флаг на банальную проверку открытия файла. Если удалось открыть - то выход.
0
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 17:27  [ТС] #13
Да,,, Это мне как сделать типа условием if
0
MrGluck
Модератор
Эксперт CЭксперт С++
7427 / 4542 / 676
Регистрация: 29.11.2010
Сообщений: 12,329
22.11.2012, 17:28 #14
Цитата Сообщение от Vadim8063 Посмотреть сообщение
Да,,, Это мне как сделать типа условием if
"типа" да
0
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 17:42  [ТС] #15
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
22.11.2012, 17:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2012, 17:42
Привет! Вот еще темы с ответами:

Одна ошибка в двомерном массиве - C++
Здраствуйте помогите найти исправить ошибку. Сформировать квадратную матрицу действительных чисел. Количество строк и столбцов ввести с ...

Ошибка в одноиерном динамическом массиве - C++
Здравствуйте, программа не правильно выводит на экран обработанный массив. Пункт 1 выполняется, пункт 2 выполняется, пункт 3 выполняется,...

Ошибка замены символов в массиве - C++
Здраствуйте, хочу написать простую консольную игру крестики-нолики. Столкнулся с проблемой, выдает ошибку. Вызвано исключение по...

Ошибка присваивания в динамическом массиве структур - C++
Доброго времени суток! Я новичок в программировании, прошу не пинать сильно :) Изучаю С++ по книге С.Прата &quot;Язык программирования С++....


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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