Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2012, 20:02   #1
KirillKirill
 
Регистрация: 13.05.2012
Сообщений: 4
По умолчанию Классы обьектов.Трапеции.Периметр (C++)

Задание:На вход подается некоторое количество трапеций (координаты вершин).
Отсортировать и вывести их по возрастанию периметров.

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

Первый код:

// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

const int n = 5;

typedef struct{
float x, y;
} POINT;

typedef struct{
POINT p[4];
} POINTARRAY;

int _tmain(int argc)
{


srand(time(0));
POINTARRAY arr[n];

for(int i = 0; i<n;i++)
{
for(int j = 0; j<4; j++)
{
arr[i].p[j].x = rand();
arr[i].p[j].y = rand();
}

}


float per[n] = {0};

for(int i = 0; i<n;i++)
{
int otr[4] = {0};
otr[0] = sqrt(pow((arr[i].p[0].x-arr[i].p[1].x),2)+pow((arr[i].p[0].y-arr[i].p[1].y),2));
otr[1] = sqrt(pow((arr[i].p[1].x-arr[i].p[2].x),2)+pow((arr[i].p[1].y-arr[i].p[2].y),2));
otr[2] = sqrt(pow((arr[i].p[2].x-arr[i].p[3].x),2)+pow((arr[i].p[2].y-arr[i].p[3].y),2));
otr[3] = sqrt(pow((arr[i].p[3].x-arr[i].p[0].x),2)+pow((arr[i].p[3].y-arr[i].p[0].y),2));
for(int j =0; j<=3;j++)
{
per[i]+=otr[j];
}

}

for(int i = 0; i<n;i++)
{
for(int j =0; j<4; j++)
{
printf("%f %f \n\t", arr[i].p[j].x, arr[i].p[j].y);
}
printf("perimetr %f \n\n\t", per[i]);
}

for (int i = 0; i < n; i++)
for (int j = i+1; j < n; j++)
if (per[i] < per[j])
{
int buf = per[i];
per[i] = per[j];
per[j] = buf;

POINTARRAY bufPoint= arr[i];
arr[i] = arr[j];
arr[j] = bufPoint;

}

printf("\n sorting \n");

for(int i = 0; i<n;i++)
{
for(int j =0; j<4; j++)
{
printf("%f %f \n\t", arr[i].p[j].x, arr[i].p[j].y);
}
printf("perimetr %f \n\n\t", per[i]);
}

getchar();
return 0;
}




Второй код по классы :

//На вход подается некоторое количество трапеций (координаты вершин).
//Отсортировать и вывести их по возрастанию периметров.

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;
const int n = 2;

class tochka
{
public:
void vvod()
{
int x,y;
cout << "Vvedite kkoardinati x=";
cin >>x;
cout << "Vvedite kkoardinati y=";
cin >>y;
}
};
class Perimetr
{
public:
void perimetr()
{
int x,y;
cout << "Vvedite kkoardinati x=";
cin >>x;
cout << "Vvedite kkoardinati y=";
cin >>y;
}
};
typedef struct{
int x,y;
}
POINT;
typedef struct{
POINT p[4];
}
POINTARRAY;

int main(int argc)
{
srand (time(0));
POINTARRAY arr[n];
for(int i=0;i<n;i++)
{
for(int j=0;i<4;i++)
{
tochka x;
x.vvod();
tochka y;
y.vvod();
}
}
float per[n] = {0};

for(int i = 0; i<n;i++)
{
int otr[4] = {0};
otr[0] = sqrt(pow((arr[i].p[0].x-arr[i].p[1].x),2)+pow((arr[i].p[0].y-arr[i].p[1].y),2));
otr[1] = sqrt(pow((arr[i].p[1].x-arr[i].p[2].x),2)+pow((arr[i].p[1].y-arr[i].p[2].y),2));
otr[2] = sqrt(pow((arr[i].p[2].x-arr[i].p[3].x),2)+pow((arr[i].p[2].y-arr[i].p[3].y),2));
otr[3] = sqrt(pow((arr[i].p[3].x-arr[i].p[0].x),2)+pow((arr[i].p[3].y-arr[i].p[0].y),2));
for(int j =0; j<=3;j++)
{
per[i]+=otr[j];
}

}

//for(int i = 0; i<n;i++)
//{
//for(int j =0; j<4; j++)
//{
//printf("%f %f \n\t", arr[i].p[j].x, arr[i].p[j].y);
//}
//printf("perimetr %f \n\n\t", per[i]);
//}

for (int i = 0; i < n; i++)
for (int j = i+1; j < n; j++)
if (per[i] < per[j])
{
int buf = per[i];
per[i] = per[j];
per[j] = buf;

POINTARRAY bufPoint= arr[i];
arr[i] = arr[j];
arr[j] = bufPoint;

}

printf("\n sorting \n");

for(int i = 0; i<n;i++)
{
for(int j =0; j<4; j++)
{
printf("%f %f \n\t", arr[i].p[j].x, arr[i].p[j].y);
}
printf("perimetr %f \n\n\t", per[i]);
}

getchar();
return 0;
}
KirillKirill вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить периметр Лика505 Помощь студентам 6 05.04.2012 20:19
Преобразование трапеции asoll05 Помощь студентам 0 09.02.2011 21:44
Периметр n-угольника Raphael Помощь студентам 4 17.10.2010 16:21
периметр shelest Помощь студентам 1 28.11.2009 23:47