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

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

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

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

22.11.2012, 13:48. Просмотров 485. Ответов 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;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2012, 13:48     Ошибка в массиве
Посмотрите здесь:

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
22.11.2012, 13:51     Ошибка в массиве #2
Наверное забыл выделить память под массив.
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 часа над кодом сижу в указателях уже запутался
MrGluck
Модератор
Эксперт CЭксперт С++
6967 / 4138 / 588
Регистрация: 29.11.2010
Сообщений: 10,977
22.11.2012, 16:32     Ошибка в массиве #4
Оно просто на этапе обращения к конструктору Action не понимает, что есть TStud, вот и ругается.
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 16:33  [ТС]     Ошибка в массиве #5
Каким образом ему надо дать понять?
MrGluck
Модератор
Эксперт CЭксперт С++
6967 / 4138 / 588
Регистрация: 29.11.2010
Сообщений: 10,977
22.11.2012, 16:34     Ошибка в массиве #6
Добавь #include "tstud.h" в action.h и еще инклуд гварды расставь.

Ну и отдели уж до конца объявление и реализацию. В .h должны быть только шаблоны
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 И острим тоже самое ругается
MrGluck
Модератор
Эксперт CЭксперт С++
6967 / 4138 / 588
Регистрация: 29.11.2010
Сообщений: 10,977
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;
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'
MrGluck
Модератор
Эксперт CЭксперт С++
6967 / 4138 / 588
Регистрация: 29.11.2010
Сообщений: 10,977
22.11.2012, 17:11     Ошибка в массиве #10
Цитата Сообщение от Vadim8063 Посмотреть сообщение
40 C:\Dev-Cpp\action.cpp `nocreate' is not a member of `std::ios'
Да, ios::nocreate выкинут из стандарта.
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 17:21  [ТС]     Ошибка в массиве #11
В каком смысле выкинуть?
MrGluck
Модератор
Эксперт CЭксперт С++
6967 / 4138 / 588
Регистрация: 29.11.2010
Сообщений: 10,977
22.11.2012, 17:22     Ошибка в массиве #12
Цитата Сообщение от Vadim8063 Посмотреть сообщение
В каком смысле выкинуть?
Я написал выкинут, хотя тебе следует поступить так же. Замени этот флаг на банальную проверку открытия файла. Если удалось открыть - то выход.
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
22.11.2012, 17:27  [ТС]     Ошибка в массиве #13
Да,,, Это мне как сделать типа условием if
MrGluck
Модератор
Эксперт CЭксперт С++
6967 / 4138 / 588
Регистрация: 29.11.2010
Сообщений: 10,977
22.11.2012, 17:28     Ошибка в массиве #14
Цитата Сообщение от Vadim8063 Посмотреть сообщение
Да,,, Это мне как сделать типа условием if
"типа" да
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2012, 17:42     Ошибка в массиве
Еще ссылки по теме:

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

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

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

поиск максимума в двумерном массиве, где ошибка - C++
// lab2_1.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; ...

В чем ошибка? В массиве обнулить побочную диагональ. - C++
в паскале все работает, а в с++ нет #include &lt;iostream.h&gt; int main() { system(&quot;chcp 1251&quot;); system(&quot;cls&quot;); int a; int...


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

Или воспользуйтесь поиском по форуму:
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);
  }
Так тоже не сильно спасло
Yandex
Объявления
22.11.2012, 17:42     Ошибка в массиве
Ответ Создать тему
Опции темы

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