singlepost

помощь!!! << На главную или назад  

никак не могу справиться с задачкой!-(
Классы, статические поля, массивы объектов, дружественные функции.

Задача 0.
Определить класс "материальная точка в трехмерном пространстве"
Поля объектов: координаты точки, масса точки, порядковый номер точки.
Поля класса: количество точек в текущий момент (созданных и не
уничтоженных), центр масс всех точек (созданных и не уничтоженных)
в виде объекта класса "материальная точка в трехмерном пространстве".
Методы: конструкторы (подсчитывающие точки, уточняющие центр масс),
деструктор (уменьшающий количество точек и изменяющий центр масс),
функции печати сведений о точке и центре масс и числе точек.В основной программе определить массив объектов класса "точка
в трехмерном пространстве". Количество точек (размер массива) ввести с клавиатуры. Присвоить координатам точек случайные
значения (использовать библиотечную функцию random(), заголовок
<cstdlib>), введя их нижнее и верхнее предельные значения.
Вывести сведения об объектах и совокупности точек...

#include <iostream>
#include <cstdlib>
using namespace std;

class point3 {
double x,y,z;
int m;
int num;
int static counter;
int static kol;
point3 static cent;

public:

point3(double xx=0, double yy=0, double zz=0,point3 mas[]=0) :x (xx), y(yy), z(zz) { m=1;
kol++;
counter++;
num=counter;
double pr1_x=0,
pr1_y=0,
pr1_z=0,
pr2=0;

for(int i=0;i<kol;i++){pr1_x=mas[i].m*mas[i].x+pr1_x;
pr1_y=mas[i].m*mas[i].y+pr1_y;
pr1_z=mas[i].m*mas[i].z+pr1_z;
pr2=mas[i].m+pr2;
}
cent.x=pr1_x/pr2;
cent.y=pr1_y/pr2;
cent.z=pr1_z/pr2;
}

void print(){
cout<<"Number="<<num<<"\t x="<<x<<"\t y="<<y<<"\t z="<<z<<"\t kolichestvo: "<<kol<<endl;
cout<<"Centre mass: "<<endl;
cent.print();
}

~point3(){
kol--;

}

};
int point3::kol=0;
int point3::counter=0;
point3 point3::cent=0;
int main(){
int k;
double pr_min=0;
double pr_max=10;
double xi,yi,zi;
cout<<"Enter number of points: ";
cin>>k;
point3 Tochka[k];
for(int i=0;i<k;i++){
xi=double(rand()*(double)(pr_max-pr_min)/RAND_MAX+pr_min);
yi=double(rand()*(double)(pr_max-pr_min)/RAND_MAX+pr_min);
zi=double(rand()*(double)(pr_max-pr_min)/RAND_MAX+pr_min);
Tochka[i]=point3(xi,yi,zi,Tochka); Tochka[i].print();
} return 0;}

9 ответов в теме “помощь!!!”

  1. 1
    Жека Кирпичев ответил:

    Судя по тому, что программу ты написала, и по тому, что конкретного вопроса в посте не содержится, я заключаю, что на самом деле ты с задачкой справилась, никаких вопросов у тебя и нет, и тему можно удалить?

  2. 2
    Анна Орловская ответил:

    есть, она сделана не до конца и ошибок много просто у меня компилятора нет не могу проверить сама

  3. 3
    Анна Орловская ответил:

    e:\учеба\z0.cpp(68) : error C2057: expected constant expression
    e:\учеба\z0.cpp(68) : error C2466: cannot allocate an array of constant size 0
    e:\учеба\z0.cpp(68) : error C2133: 'Tochka' : unknown size

  4. 4
    Анна Орловская ответил:

    это из визуал студии там у меня получается в половине правильных программ ошибки

  5. 5
    Артём Шалхаков ответил:

    2 Анна Орловская
    компилятор как бы намекает тебе, что не может определить размер массива во время компиляции

    new/delete (ручное управление памятью) спасут мать русской демократии

  6. 6
    Жека Кирпичев ответил:

    1) Не надо пытаться сделать программу без компилятора. Ты так не научишься *ничему*. Ставь компилятор, бери книжку по С++ и делай сама.

    2) Визуал студия не показывает ошибки в правильных программах. Все 3 ошибки, которые ты показала, действительно являются ошибками.

    e:\учеба\z0.cpp(68) : error C2057: expected constant expression
    С++ позволяет объявлять массивы только заранее известного размера. k – не является "заранее известным" (constant expression).

    e:\учеба\z0.cpp(68) : error C2466: cannot allocate an array of constant size 0
    e:\учеба\z0.cpp(68) : error C2133: 'Tochka' : unknown size
    Это – последствия предыдущей ошибки.

    3) Господи боже мой, кто вас учит так писать?? Для начала скажи, собираешься ли ты быть программистом – если собираешься, то я объясню, что мне не нравится (а мне не нравится практически все) под залог того, что ты последуешь моим советам и будешь исправлять программу до тех пор, пока она не обретет приемлемую форму, если нет – то не буду тратить свое и твое время.

  7. 7
    Анна Орловская ответил:

    ну у меня специальность математик аналитик, видимо придеться научиться, так что советы мне очень как нужны=)

  8. 8
    Анна Орловская ответил:

    а компилятор не ставится на висту=(мне нужен djgpp

  9. 9
    Павел Потапов ответил:

    Тогда надо либо ставить его на другую систему, либо ставить другой компилятор. Я бы посоветовал Visual Studio 2008 Express Edition. Можно бесплатно скачать с Мискрософта.

Ответить

Пожалуйста, зарегистрируйтесь для комментирования.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.