Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Задача C++

Featured Replies

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

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

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

#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;
}

 

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

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    26%
    Дарени 256.00 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.