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

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

Войти
Регистрация
Восстановить пароль
 
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
#1

В чём тут ошибка? - C++

29.10.2009, 09:27. Просмотров 317. Ответов 4
Метки нет (Все метки)

Когда запускаю программу, он её выполняет, но после ввода первого имени он зависает о выдаёт ошибку:
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
#include <conio.h>
#include <string.h>
#include <iostream>
using namespace std;
 
class Worker {
 char Name[255];
 char Inicials[255];
 char Doljnost[255];
 int Year;
 int Zarplata;
  public:
  Worker(char n[255], char I[255], char D[255], int Y, int Z)
  {
  strcpy(Name,n);
  strcpy(Inicials,I);
  strcpy(Doljnost, D);
  Year=Y;
  Zarplata=Z;  
  }
  Worker()
  {
   
  }
  int sr_Year(int Y)
  {
  if(Year>Y)
  return 1;
  else
  return 0;
  }
  int sr_Zarpl(int Z)
  {
  if(Zarplata>Z)
  return 1;
  else
  return 0;
  }
  int sr_Dolj(char D[255])
  {
  if(strcmp(Doljnost,D)==0)
  return 1;
  else
  return 0;
  }
  void set()
  {
  cout << "Name: ";
  cin >> Name;
  cout << "Inicials: ";
  cin >> Inicials;
  cout << "Doljnost: ";
  cin >> Doljnost;
  cout << "Year: ";
  cin >> Year;
  cout << "Zarplata: ";
  cin >> Zarplata;
  }
  void show()
  {
  cout << "Name: ";
  cout << Name;
  cout << "Inicials: ";
  cout << Inicials;
  cout << "Doljnost: ";
  cout << Doljnost;
  cout << "Year: ";
  cout << Year;
  cout << "Zarplata: ";
  cout << Zarplata; 
  }
 
 
  
 
};
void main()
{
 int n;
 int q;
 int Zarplata, Year;
 char Dolj[255];
 cin >> n;
 int **arr = new int*[n];
  Worker **W = new Worker*[n];
 for(int i=0;i<n;i++)
 {
  W[i]->set();
 }
 cout << "Po kakomu parametru iskat?\n 1 - Zarplata \n 2 - Year \n 3 - Doljnost\n";
 cin >> q;
  if(q==1)
 {
  cout << "Zarplata: ";
  cin >> Zarplata;
  for(int i=0;i<n;i++)
  {
 
  }
 }
 
 
  system("PAUSE");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2009, 09:27     В чём тут ошибка?
Посмотрите здесь:

C++ В чём тут ошибка?
C++ [C++] В чём тут ошибка? (делаю конструктор-копировщик)
Где тут ошибка? C++
В чём тут дело??? C++
C++ в чём ошибка?
C++ Какая у меня тут ошибка?
в чём тут ошибка? C++
В чём ошибка? C++
Подскажите в чем тут ошибка C++
C++ Где тут ошибка то?
В чём ошибка? C++
C++ В чём тут не так?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.10.2009, 09:34     В чём тут ошибка? #2
Это для чего? И почему не контейнер?!
Цитата Сообщение от DEM90 Посмотреть сообщение
int **arr = new int*[n];
Так же, почему не контейнер?!
Цитата Сообщение от DEM90 Посмотреть сообщение
Worker **W = new Worker*[n];
Почему не std::string ?
Цитата Сообщение от DEM90 Посмотреть сообщение
char Name[255];
char Inicials[255];
char Doljnost[255];
Добавлено через 50 секунд
Да кстати. Почему двумерный массив?
Цитата Сообщение от DEM90 Посмотреть сообщение
Worker **W = new Worker*[n];
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
29.10.2009, 10:18     В чём тут ошибка? #3
Цитата Сообщение от niXman Посмотреть сообщение
Так же, почему не контейнер?!
Почему не std::string ?
Встречный вопрос: а почему если написано с ООП, то не использовать полноценные ОО языки? Например тот же C# или Java? Вот по той же причине и нельзя, по которой нельзя использовать контейнеры и стринг. Твое замечание здесь более чем неуместно
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.10.2009, 10:22     В чём тут ошибка? #4
Цитата Сообщение от M128K145 Посмотреть сообщение
по той же причине и нельзя, по которой нельзя использовать контейнеры и стринг.
Что-то ты мэн напутал. Код написан на с++. Сравнение...как х** и палец.

Цитата Сообщение от M128K145 Посмотреть сообщение
Твое замечание здесь более чем неуместно
От твоего коментария пользы больше? Не флуди.
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.10.2009, 11:43     В чём тут ошибка? #5
DEM90,

Цитата Сообщение от DEM90 Посмотреть сообщение
Worker **W = new Worker*[n];
for(int i=0;i<n;i++)
{
W[i]->set();
}
В этом эпизоде кода у Вас создается переменная W (указатель на массив указателей элементов типа Worker - соданного Вами класса). Этой переменной выделяется динамически память по указатели, но для самих элементов типа Worker память не выделяется.
Затем Вы вызывается поочередно для всех указателей функцию set(). Но самих элементов нет!
Замените этот элемент кода на:
C++
1
2
3
4
5
6
7
8
9
 Worker **W = new Worker*[n];
  for(int i=0; i<n; i++)
  {
      W[y]=new Worker;
  }
 for(int i=0;i<n;i++)
 {
  W[i]->set();
 }
дальше не проверял.
Yandex
Объявления
29.10.2009, 11:43     В чём тут ошибка?
Ответ Создать тему
Опции темы

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