Премини към съдържанието

    Препоръчан отговор


    Здравейте колеги,

    имам следната задача: Да се създаде клас, описващ правоъгълна област. Класът да съдържа метод за намиране на площта на областта. Да се създаде масив от правоъгълници. Да се сортира масива по отдалечеността на всяка една от областите спрямо координатното начало, като се използва метода на прякото вмъкване. Данните да се съхраняват във файлове. Като цяло съм зациклил и се нуждая от помощ.

    Имам следния код:

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    class Rectangle
    {
        double a,b;
    public:
        Rectangle();
        void Input();
        void Output();
        double Area();
    };
    
    Rectangle::Rectangle()
    {
        a=b=0;
    }
    void Rectangle::Input()
    {
        cout<<"Side a: "<<endl;
        cin>>a;
        cout<<"Side b: "<<endl;
        cin>>b;
    }
    
    void Rectangle::Output()
    {
        cout<<"Side a is: "<< endl;
        cout<<"Side b is: "<< endl;
    }
    
    double Rectangle::Area()
    {
        double r;
        r=a*b;
        cout<<"Area is: "<< r <<endl;
        return r;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int n;
        cin>>n;
        Rectangle *buffer=new Rectangle[n];
        if (buffer==NULL)
        {
            cout<<"Memory is full!";
        }
        double l;
        double max=0;
    
        for (int k=0;k<n;k++)
        {
            buffer[k].Input();
            buffer[k].Output();
            l=buffer[k].Area();
    
            if (l>max)
            {
                max=l;
            }
        }
    
    
        delete[]buffer;
        system("pause");
        return 0;
    }

    Ще съм благодарен на всяка помощ!

    Редактирано от capnemo
    код! (преглед на промените)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    class Rectagle {
    	const double width, height;
    public:
    	Rectangle(double w, double h) : width(w), height(h) {}
    	Rectangle(const Rectangle &o) : width(o.width), height(o.height) {}
    	double area() { return width * height; }
    	bool operator<(const Rectangle &o) { return area() < o.area(); }
    };
    
    // data file
    // 10.5 5.6
    // 5.5 7
    // ....
    
    int main(int argc, char *argv[]) {
    	if(argc < 2) {} // грешка
    	std::ifstream file(argv[1]);
    	if(!file) {} // грешка
    	std::string line;
    	std::set<Rectangle> rect_array;
    	while(getline(file, line)) {
    		char *end = NULL;
    		double w = strtod(line.c_str(), &end);
      		double h = strtod(end, NULL);
    		rect_array.insert(Rectangle(w, h));
    	}
    	for(size_t i=0; i<rect_array.size(); i++)
    		std::cout << rect_array[i].area();
    	return 1;
    }

     

    Редактирано от bvbfan (преглед на промените)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    1-во. Какво би трябвало да значи "отдалечеността на всяка една от областите спрямо координатното начало"? - разстоянието от началото до най-близката точка от правоъгълника или от началото до центъра на правоъгълника..

    2-ро. Правоъгълник в равнината не се определя само от дължина и ширина, ами и от координати на един от върховете и ъгъл на завъртане спрямо координатната система. Да кажем, че за да опростим изчисленията ъгъла на всички правоъгълници ще е 0 пак ни трябва отправна точка къде се намира в равнината правоъгълника.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове
    на 20.12.2015 г. at 15:10, ined написа:

    1-во. Какво би трябвало да значи "отдалечеността на всяка една от областите спрямо координатното начало"? - разстоянието от началото до най-близката точка от правоъгълника или от началото до центъра на правоъгълника..

    2-ро. Правоъгълник в равнината не се определя само от дължина и ширина, ами и от координати на един от върховете и ъгъл на завъртане спрямо координатната система. Да кажем, че за да опростим изчисленията ъгъла на всички правоъгълници ще е 0 пак ни трябва отправна точка къде се намира в равнината правоъгълника.

    Това е условието на задачата (нямам конкретни подробности), но най-вероятно от началото до най-близката точка.

    на 20.12.2015 г. at 9:22, bvbfan написа:
    
    class Rectagle {
    	const double width, height;
    public:
    	Rectangle(double w, double h) : width(w), height(h) {}
    	Rectangle(const Rectangle &o) : width(o.width), height(o.height) {}
    	double area() { return width * height; }
    	bool operator<(const Rectangle &o) { return area() < o.area(); }
    };
    
    // data file
    // 10.5 5.6
    // 5.5 7
    // ....
    
    int main(int argc, char *argv[]) {
    	if(argc < 2) {} // грешка
    	std::ifstream file(argv[1]);
    	if(!file) {} // грешка
    	std::string line;
    	std::set<Rectangle> rect_array;
    	while(getline(file, line)) {
    		char *end = NULL;
    		double w = strtod(line.c_str(), &end);
      		double h = strtod(end, NULL);
    		rect_array.insert(Rectangle(w, h));
    	}
    	for(size_t i=0; i<rect_array.size(); i++)
    		std::cout << rect_array[i].area();
    	return 1;
    }

     

    Аа може ли малко пояснение ??

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Регистрирайте се или влезете в профила си за да коментирате

    Трябва да имате регистрация за да може да коментирате това

    Регистрирайте се

    Създайте нова регистрация в нашия форум. Лесно е!

    Нова регистрация

    Вход

    Имате регистрация? Влезте от тук.

    Вход


    ×

    Информация

    Този сайт използва бисквитки (cookies), за най-доброто потребителско изживяване. С използването му, вие приемате нашите Условия за ползване.