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

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

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

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

29.10.2009, 09:27. Просмотров 325. Ответов 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++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; void main() { char s; int kolvo=0;i=0,i2;...

В чём тут ошибка? - C++
Помогите пожалуйста найти ошибку: #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; using namespace...

[C++] В чём тут ошибка? (делаю конструктор-копировщик) - C++
Пытаюсь написать класс с конструктором-копировщиком.В чём тут ошибка? class Subroutine { public: Subroutine (){}; ...

В чём тут дело??? - C++
программы то зфцыкливаются, то вообще ни чего не выводят. Вводится последовательность из N вещественных чисел. Определить среднее...

В чём тут не так? - C++
Задача Игра в фишки Вот уже 10 лет дядя Семен работает сторожем на складе, где хранятся старые процессоры. Его работа чрезвычайно...

Где тут ошибка? - C++
Обьясните, что неправильно в этой программе. #include &lt;iostream&gt; using namespace std; void swap (int* a, int *b); int...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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 Посмотреть сообщение
Твое замечание здесь более чем неуместно
От твоего коментария пользы больше? Не флуди.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2009, 11:43     В чём тут ошибка?
Еще ссылки по теме:

Где тут ошибка то? - C++
#include &lt;iostream&gt; using namespace std; int main() { int b=1, c=0; while (1) { if (b==13); ...

Подскажите в чем тут ошибка - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; void main() {cout&lt;&lt; &quot;Hello, student&quot;&lt;&lt;endl; ...

Какая у меня тут ошибка? - C++
Даны целочисленный массивы C, D. Для каждого массива определить максимальный и минимальный элементы среди элементов, расположенных в четных...

[C++]В чём ошибка? - C++
Помогите в чём ошибка ??? Вроде и работает а вроде и нет. Например при значениях 4 6 10 работает а уже при значении 4 8 10 краш. или...


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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
4669 / 2495 / 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     В чём тут ошибка?
Ответ Создать тему
Опции темы

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