2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 с++ ,Проверьте программу
Сообщение07.01.2014, 11:43 


17/11/13
17
Здравствуйте,Написал программу по этой задаче:
Разработать функцию rectPS(x1, y1, x2, y2, P, S), вычисляющую периметр P и площадь S прямоугольника со сторонами, параллельными осям координат, по координатам (x1, y1), (x2, y2) его противоположных вершин (x1, y1, x2, y2 — входные, P и S — выходные параметры). В качестве результирующего значения функция должна возвращать истину, если прямоугольник не является вырожденным (т.е. одна из его сторон имеет нулевую длину) и ложь – в противном случае. С помощью этой процедуры найти периметры и площади трех прямоугольников с данными противоположными вершинами.

Но сомневаюсь в её правильности,вот код:
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
#include <stdlib.h>
#include <math.h>
#include <Windows.h>
#include <iostream>
using namespace std;
bool rectPS(x1,y1,x2,y2,*P,*S)
{
    bool res=true;//переменная возвращающая истину или ложь
    int a=(sqrt((double)(x2-x1)+(double)(y2-y1)));//обозначим стороны как а и b
    int b=(sqrt((double)(x2-x1))+((double)(y1-y1)));
    if((a!=0) && (b!=0)){ //b и a не должны равняться нулю,иначе прямоугольник вырожденный
    *S=(sqrt((double)(x2-x1)+(double)(y2-y1)))*(sqrt((double)(x2-x1)+(double)(y2-y1)));   // площадь
    *P=((sqrt((double)(x2-x1)+(double)(y2-y1)))+(sqrt((double)(x2-x1)+(double)(y2-y1))))*2; //периметр
        return true; //возвращаем истину
    }
    else
        return false; //иначе ложь
}
 
void main()
{
    setlocale(LC_ALL,"Russian");
    int x1,x2,y1,y2;
    int P=0,  S=0;
    cout<<"Ввести координаты\nx1 и x2:\n";
    cin>>x1>>x2;
    cout<<"Ввести координаты\ny1 и y2:\n";
    cin>>y1>>y2;
    if(rectPS( x1,y1,x2,y2,&P,&S) == true)
    {
        cout<<"Площадь:\n"<<S<<"\n";
        cout<<"Периметр:\n"<<P<<"\n";
    }
    else    cout<<"Прямоугольник является вырожденным! \n";
    system("pause");
}

Проверьте !!...Заранее спасибо

 Профиль  
                  
 
 Re: с++ ,Проверьте программу
Сообщение07.01.2014, 16:14 


27/11/10
207
Во-первых у вас какое-то странное определение длин сторон: $a = \sqrt{(x_2-x_1) + (y_2-y_1)}$.
Далее, у вас не указаны типы переменных в определении функции.

Проверку
Используется синтаксис C++
if (f(a,b,c) == true) {...
делать не надо.

 Профиль  
                  
 
 Re: с++ ,Проверьте программу
Сообщение07.01.2014, 17:23 
Заслуженный участник


16/02/13
4195
Владивосток
1. А прогнать не судьба?
2. Вот ну интересна таки своей изощрённой непонятностию логика. Объявляем переменную res — и чо? На кой? Из x-ов с y-ми делаем double, извлекаем корень и приводим к int... Впрочем, какая разница, если при "вычислении" площади и периметра всё равно подставляются эти невообразимые формулы... Вы там что, монетку кидаете и в зависимости от результата выбираете следующий символ?

 Профиль  
                  
 
 Re: с++ ,Проверьте программу
Сообщение07.01.2014, 17:44 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Дичь какая-то. Стороны же параллельны осям, на кой чёрт квадратные корни. Да и прочее... :facepalm:

 Профиль  
                  
 
 Re: с++ ,Проверьте программу
Сообщение08.01.2014, 12:47 


17/11/13
17
Taus в сообщении #810728 писал(а):
Во-первых у вас какое-то странное определение длин сторон: $a = \sqrt{(x_2-x_1) + (y_2-y_1)}$.
Далее, у вас не указаны типы переменных в определении функции.

Проверку
Используется синтаксис C++
if (f(a,b,c) == true) {...
делать не надо.

Вообще-то надо,см.текст задачи

-- 08.01.2014, 12:48 --

Aritaborian в сообщении #810769 писал(а):
Дичь какая-то. Стороны же параллельны осям, на кой чёрт квадратные корни. Да и прочее... :facepalm:

А как правильно?

 Профиль  
                  
 
 Re: с++ ,Проверьте программу
Сообщение08.01.2014, 12:48 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
st.basic в сообщении #811271 писал(а):
Вообще-то надосм.текст задачи
Не беспокойтесь, все ответившие вам прочли текст задачи ;-)

 Профиль  
                  
 
 Re: с++ ,Проверьте программу
Сообщение08.01.2014, 18:00 
Заслуженный участник


27/04/09
28128
st.basic в сообщении #811271 писал(а):
А как правильно?
А сделайте рисунок.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group