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

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

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

Ошибка в рабочей программе (классы, обьекты, приватные члены) - C++

10.05.2009, 13:21. Просмотров 390. Ответов 0
Метки нет (Все метки)

Условие:
Создайте класс – vector. Класс должен содержать, по крайней мере, 3 члена private: количество координат точки, поинтер к типу long double и функцию доступа к координатам точки. количество координат должно быть статическим. Используйте методы: неявный , деструктор и функции: модификации координат, вычисление
длины вектора, вывод координат . Перегрузите операцию сложения для среднего арифмет значения среди двух максимальных элементов этих двух векторов.
Вычислите в функции main()длину двух векторов и среднее арифметическое двух максим элементов этих векторов до и после изменения какойлибо из их координат. В main() используйте обычную переменную типа vector и поинтер к типу vector. Перегруженная операция должна выдержать операцию присваивания!

Програма вроде работает... Надо чтобы у вектора 1 и 2 было разное кол-во, чтобы был вынужден менять этот n при переходе от одного вектора к другому.
если не трудно гляньте какие недочеты могут быть в программе??потому что мне за неё поставили 2)).

Решение:
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
137
138
139
140
141
142
143
144
145
#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
class vector
{ 
      
      static int n;
      long double* p;
      int acces();
      
      public:
         vector()
         {
           p = new long double[n];
         }
         vector(int s);
         ~vector() {
                   if(p) delete [] p;
                   p=0;
                   cout<<"\nObject Deleted ";
                  }
         long double operator +(vector &);
         int modifc();
         void fc(int d);
         long double dist();
         void read();
         void print(); 
                      
};
 
int vector::n=2;
 
void vector::fc(int d)
{ vector::n=d; }
 
vector::vector( int s )
{vector::n=s;
p = new long double[s];
for( int i=0; i < s; i++ )
p[i] = 0;
}   
 
void vector::read()
{  for( int i=1; i<=n; i++)
{cout << "Vvedite coordinatu " << i << ": ";
cin >> p[i-1];}}
 
int vector::acces()
{  int m; cout << "Kakuiu koordinatu hotite meneati? ";
cin >> m;
if( m<=0 || m>n )
{cout << "Net koordinati s poradkovim nomerom " << m << endl;
return 0;}
cout << "Koordinata " << m << " ravna " << p[m-1] << endl;
cout << "Vvedite novoe znacenie dlea etoi koordinati: ";
return m;}
 
int vector::modifc()
{  int m=acces(); if( m )
cin >> p[m-1];
return m; }
 
void vector::print()
{cout << endl << "Koordinati vectora:\n" << endl;
for( int i = 0; i < n; i++ )
{cout << "Coordinata[" << i+1 << "]=" << p[i] << endl;}}
 
long double vector::dist(){
long double s=0;
long double l=0;
for(int i=0;i<n;i++)
s+=(p[i]*p[i]);
l=sqrt(s);
cout<<"\nDlina vectora: "<<l<<endl;
return l;
}
 
long double vector::operator +(vector& L)
{  int i; long double av,max,max1;
max=p[0];max1=p[0];
for(int i=0;i<n;i++)
{
if(max<p[i]){ max=p[i];}
if(max1<L.p[i]){ max1=L.p[i];}
}
cout<<"\nmax V1="<<max<<" max V2="<<max1<<endl;
av=(max+max1)/2;
return av; }
 
 
int main()
 {
 
  int nr1,nr2;
 
 cout<<"\nVvedite koli4estvo koordinat I vector :";
 cin>>nr1;
 vector v1(nr1);
 v1.read();
 v1.print();
 long double ds1=v1.dist();
 
 
 
 cout<<"\nVvedite koli4estvo koordinat II vector :";
 cin>>nr2;
 vector* v2=new vector(nr2);
 v2->read();
 v2->print();
 long double ds2=v2->dist();
 
 if(nr2>nr1)v2->fc(nr2); 
 else  v1.fc(nr1);
 long double a;
 a=v1+*v2;
 cout<<"\nSredneea arfm. mejdu max. coordinatami dvuh vectorov "<<a<<endl<<endl; 
 
 cout<<"\n\nModificatia  1 vector\n";
 
 v1.fc(nr1);
 v1.print();
 v1.modifc();
 v1.print();
 ds1=v1.dist();
 
 
 cout<<"\nModificatia 2 vector\n";
 
 v2->fc(nr2);
 v2->print();
 v2->modifc();
 v2->print();
 ds2=v2->dist();
 
 if(nr2>nr1)v2->fc(nr2); 
 else  v1.fc(nr1);
  
  a=v1+*v2;
 cout<<"Sredneea arfm. posle modificatii mejdu max. coordinatami dvuh vectorov= "<<a<<endl<<endl; 
  
   
 getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2009, 13:21     Ошибка в рабочей программе (классы, обьекты, приватные члены)
Посмотрите здесь:
C++ глючит ли VS08?видны приватные члены
C++ Классы и обьекты в С++
C++ Классы и обьекты
Классы и обьекты C++
C++ Обьекты и классы
C++ Классы и обьекты
Непонятна тема (Классы содержащие другие классы, как данные члены ) C++
Классы и обьекты в С++. Выполнить исследование вызовов конструкторов и деструкторов C++
Плохо ли делать зависящие друга от друга классы, в которых присутствуют указатели на обьекты других классов? C++
Классы (статические члены и конструктор копирования) C++
приватные свойства C++
Объединять классы и внешние функции в одной программе плохой тон программирования? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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