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

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

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

Выдаёт непонятную ошибку - C++

24.11.2013, 20:42. Просмотров 252. Ответов 7
Метки нет (Все метки)

Кратко: Нужно реализовать класс, представляющий собой функцию, заданную в табличной форме.
Зашли в тупик на методе Delete, который должен удалять точку по введённой абсциссе. Программа запускается, но потом прерывается на том месте, где должна удалить из вектора точку. Помогите разобраться, заранее спасибо.
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
#include <iostream>
#include <vector>
 
 
using namespace std;
 
 
struct point //Тип "точка"
{
 double x;
 double y;
};
 
point CreatingAPoint ()
{
 double fX;
 double fY;
 cin>>fX>>fY;
 point fPoint;
 fPoint.x=fX;
 fPoint.y=fY;
 return fPoint;
}
 
 
class TabulatedFunction //Класс "табл. ф-ия"
{
public:
 
 vector <point> Arr;
 
 
TabulatedFunction()
{
}
 
TabulatedFunction(vector <point> fArr) //????
{
 
 for (int i=0; i<fArr.size(); i++)
 {
  Arr.push_back(fArr[i]);
 }
 
}
 
void add (point fP)
{
 Arr.push_back(fP);
}
 
void Delete (double fx)
{
 for(vector<point>::iterator it = Arr.begin();it!=Arr.end();it++)
  if (fx==(*it).x) 
   Arr.erase(it);
}
 
}
;
 
int main()
{
 
 ///////////////////ТЕСТ1
 cout<<"TEST1"<<endl;
 cout<<"Enter quantity of points"<<endl;
 int testQ;                  
 cin>>testQ;
 
 vector <point> testArr;
 cout<<"Enter your points"<<endl;
 
 
 for (int i =0; i<testQ; i++)
 {
  
  testArr.push_back(CreatingAPoint());
 }
 
 TabulatedFunction A(testArr);
 cout<<endl;
 
 cout<<'x'<<" "<<'y'<<endl;
 for (int i=0; i<A.Arr.size(); i++)
 cout<<A.Arr[i].x<<" "<<A.Arr[i].y<<endl;
 
 cout<<endl<<endl;
 
  ///////////////ТЕСТ2
 cout<<"Enter a point you want to add"<<endl;
 A.add(CreatingAPoint());
 
  cout<<'x'<<" "<<'y'<<endl;
 for (int i=0; i<A.Arr.size(); i++)
 cout<<A.Arr[i].x<<" "<<A.Arr[i].y<<endl;
 
 cout<<endl<<endl;
 
 //////////////////ТЕСТ3
 double fA;
 cout<<"Enter abscissa of points you want to delete"<<endl;
 cin>>fA;
 A.Delete(fA);
 
 cout<<'x'<<" "<<'y'<<endl;
 for (int i=0; i<A.Arr.size(); i++)
 cout<<A.Arr[i].x<<" "<<A.Arr[i].y<<endl;
 
 cout<<endl<<endl;
 
 
 system("pause");
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2013, 20:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выдаёт непонятную ошибку (C++):

Dev C++ выдает непонятную ошибку - C++
Вот код программы: #include &lt;iostream&gt; using namespace std; int main() { cout&lt;&lt;&quot;Hello world\n&quot;; return 0; } Вот ошибка: ...

Шаблон класса выдает непонятную ошибку - C++
template &lt;class one_of_the_strings&gt; class MarkovAlgorithm { private: int quantity; bool is_set_amount; bool...

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

выдаёт ошибку в составленной программе выдаёт ошибку - C++
Составить программу, которая находит максимальное значение среди элементов линейной таблицы Y, состоящий из N действительных чисел, имеющих...

При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; using namespace std; long Fact(short m)// функция вычисления факториала ...

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

7
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 21:08 #2
C++
1
2
3
4
5
6
7
8
9
void Delete (double fx)
{
  for(vector<point>::iterator it = Arr.begin(); it != Arr.end(); it++)
  if (fx == (*it).x)
  {
    it = Arr.erase(it);
    --it;
  }
}
1
greendaizer
0 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 70
24.11.2013, 21:13  [ТС] #3
alsav22, ошибка выскакивает на том же месте, но уже другая
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 21:14 #4
Какая другая? У меня нормально работает. Что вводите? Скрин до ошибки покажите.
1
Миниатюры
Выдаёт непонятную ошибку  
greendaizer
0 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 70
24.11.2013, 21:23  [ТС] #5
Спасибо, разобрались с этой проблемой: вводили несколько одинаковых иксов.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 22:07 #6
Цитата Сообщение от greendaizer Посмотреть сообщение
Спасибо, разобрались с этой проблемой: вводили несколько одинаковых иксов.
Значит мой вариант кривой. Нужно чтобы и при нескольких одинаковых значения корректно работало.

Добавлено через 17 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
void Delete (double fx)
{
  for(int i = 0; i < Arr.size(); )
  {
      if (fx == Arr[i].x)
      {
        Arr.erase(Arr.begin() + i);
        continue;
      }
      ++i;
  }
}
1
greendaizer
0 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 70
24.11.2013, 22:44  [ТС] #7
Спасибо :3
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.11.2013, 23:04 #8
Вот вариант с итераторами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void Delete (double fx)
{
  for(vector<point>::iterator it = Arr.begin(); it != Arr.end();)
  {
      if (fx == (*it).x)
      {
        it = Arr.erase(it);
        continue;
      }
      ++it;
  }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 23:04
Привет! Вот еще темы с ответами:

Выдаёт ошибку - C++
// 777.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; int _tmain(int argc, _TCHAR* argv) {...

Выдаёт ошибку... - C++
Строчка 32. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; using namespace std; bool prime(int...

Выдаёт ошибку - C++
Данный код работает - считывает кс-грамматику из файла, если файл input.txt содержит S aAB E A aA bB B ACb b C A bA cC Если же...

Выдаёт ошибку - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; const n=3; struct marsh { int begl,endl,nomer; } s Void main () { int...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
24.11.2013, 23:04
Ответ Создать тему
Опции темы

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