Здравствуйте! Написала программу по этому заданию: Треугольник задан координатами своих вершин. Найти периметр треугольников.
Сам код:
#include
#include
#include
int main()
{
setlocale(LC_ALL, "Russian");
setlocale(LC_ALL, "rus");
printf("|--------------------------------------------|\n");
printf("|Вас приветсвует программа для нахождения |\n");
printf("|периметра треугольника с помощью координат |\n");
printf("|--------------------------------------------|\n\n");
float pirimetr = 0.0;
float x1 = 0.0;
float y1 = 0.0;
float x2 = 0.0;
float y2 = 0.0;
float x3 = 0.0;
float y3 = 0.0;
float storona1 = 0.0;
float storona2 = 0.0;
float storona3 = 0.0;
printf("Введите значение координат первой вершины треугольника: \n");
scanf_s("%f", &x1);
scanf_s("%f", &y1);
printf("Введите значение координат второй вершины треугольника: \n");
scanf_s("%f", &x2);
scanf_s("%f", &y2);
printf("Введите значение координат третьей вершины треугольника: \n");
scanf_s("%f", &x3);
scanf_s("%f", &y3);
storona1 = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
storona2 = sqrt((x2 - x3)*(x2 - x3) + (y2 - y3)*(y2 - y3));
storona1 = sqrt((x3 - x1)*(x3 - x1) + (y3 - y1)*(y3 - y1));
while (((storona1 + storona2) <= storona3) || ((storona2 + storona3) <= storona1) || ((storona1 + storona3) <= storona2)) //Проверяем существует ли треугольник с данными координатами
{
printf("Треугольника с такими координатами не существует, попробуйте снова. \n");
printf("Введите значение координат первой вершины треугольника: \n");
scanf_s("%f", &x1);
scanf_s("%f", &y1);
printf("Введите значение координат второй вершины треугольника: \n");
scanf_s("%f", &x2);
scanf_s("%f", &y2);
printf("Введите значение координат третьей вершины треугольника: \n");
scanf_s("%f", &x3);
scanf_s("%f", &y3);
storona1 = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
storona2 = sqrt((x2 - x3)*(x2 - x3) + (y2 - y3)*(y2 - y3));
storona1 = sqrt((x3 - x1)*(x3 - x1) + (y3 - y1)*(y3 - y1));
}
//Вычисляем пириметр треугольника
pirimetr = storona1 + storona2 + storona3;
printf("Значение пириметра равно %.2f", pirimetr);
getchar();
getchar();
return 0;
}
Треугольник с координатами например: (0;0) (0;6) (7;0) по идее существует, но программа пишет что нет (
P.S.
Да.. программа может быть простая и ошибка скорее всего глупая, если она вообще одна, но на этом я зыке я пишу что-то первый раз.. просто помогите
Другие языки программирования и технологии
Программа на С выдаёт неправильный ответ
Вот здесь ошибка:
storona1 = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
storona2 = sqrt((x2 - x3)*(x2 - x3) + (y2 - y3)*(y2 - y3));
storona1 = sqrt((x3 - x1)*(x3 - x1) + (y3 - y1)*(y3 - y1)); // 2 раза считаешь одну сторону
storona1 = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
storona2 = sqrt((x2 - x3)*(x2 - x3) + (y2 - y3)*(y2 - y3));
storona1 = sqrt((x3 - x1)*(x3 - x1) + (y3 - y1)*(y3 - y1)); // 2 раза считаешь одну сторону
Александр Коршун
Ой)) спасибо большое))
А нафига вообще для треугольника, заданного 3-мя точками, проверять, существует ли он, если он существует всегда? Убери эти проверки и все будет хорошо.
Александр Коршун
Это обязательное условие преподавателя. В программе должно быть какое-то условие, чтобы использовать цикл. Я не знаю как выглядит треугольник со сторонами 1, 2, 56. Пусть условием будет то, что стороны в нём нормальной длины.
Если ты задал три точки, значит треугольник (пусть даже вырожденный) УЖЕ существует. Потому проверять существование треугольника не имеет никакого смысла.
P.S. Кстати, проверять существование треугольника можно проще:
p = perimetr / 2.0;
if (storona1 > p || storona2 > p || storona3 > p) { // не существует }
P.P.S. И поправь грамматику: пЕриметр.
P.S. Кстати, проверять существование треугольника можно проще:
p = perimetr / 2.0;
if (storona1 > p || storona2 > p || storona3 > p) { // не существует }
P.P.S. И поправь грамматику: пЕриметр.
...бактияр... Bahaduruli
(0;0) (0;6) (7;0) - это прямоугольный
Саша Кириленко
(0;0) (0;6) (7;0) - никак не вырожденный. Почти прямоугольный.
Сарвар Норматов
нет, тут не на одной прямой, одна в начале координат, другая на оси оу, третья на оси ох
Вкратце:
#include "iostream"
#include "cmath"
using namespace std;
float f(float x1,float y1,float x2,float y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}
int main(){
float a,b,c,x1,y1,x2,y2,x3,y3;
cout<< "x1 y1 x2 y2 x3 y3: "; cin>>x1>>y1>>x2>>y2>>x3>>y3;
a=f(x1,y1,x2,y2); b=f(x2,y2,x3,y3); c=f(x3,y3,x1,y1);
cout<< "p="<< a+b+c<<endl; cin.get(); cin.get();}
P.S. Извиняюсь, не заметил, надо не на C++, а на С. Тогда
#include "stdio.h"
#include "math.h"
float f(float x1,float y1,float x2,float y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}
int main(){
float a,b,c,x1,y1,x2,y2,x3,y3;
printf("x1 y1 x2 y2 x3 y3: ");
scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3);
a=f(x1,y1,x2,y2); b=f(x2,y2,x3,y3); c=f(x3,y3,x1,y1);
printf("p=%g\n",a+b+c); getchar(); getchar();}
#include "iostream"
#include "cmath"
using namespace std;
float f(float x1,float y1,float x2,float y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}
int main(){
float a,b,c,x1,y1,x2,y2,x3,y3;
cout<< "x1 y1 x2 y2 x3 y3: "; cin>>x1>>y1>>x2>>y2>>x3>>y3;
a=f(x1,y1,x2,y2); b=f(x2,y2,x3,y3); c=f(x3,y3,x1,y1);
cout<< "p="<< a+b+c<<endl; cin.get(); cin.get();}
P.S. Извиняюсь, не заметил, надо не на C++, а на С. Тогда
#include "stdio.h"
#include "math.h"
float f(float x1,float y1,float x2,float y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}
int main(){
float a,b,c,x1,y1,x2,y2,x3,y3;
printf("x1 y1 x2 y2 x3 y3: ");
scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3);
a=f(x1,y1,x2,y2); b=f(x2,y2,x3,y3); c=f(x3,y3,x1,y1);
printf("p=%g\n",a+b+c); getchar(); getchar();}
Выведи длины сторон на экран и посмотри где собака порылась.
Если не верны длины сторон, то проверяй формулы расчета их
Если стороны верны, то смотри условие
Если не верны длины сторон, то проверяй формулы расчета их
Если стороны верны, то смотри условие
Похожие вопросы
- Написала программу, а он выдает неверный результат, c++
- 1 3 5, 2 4? Какое чило нужно вставить? "6" неправильный ответ
- Не то чтобы я сильно надеюсь на ответ, но вдруг.. . Подскажите программу для печати книг, чтобы она могла спускать полосы
- пишу на с++ программу-тест, выбор правильно ответа цифрой, но если я нажимаю символ, то программа сразу вылетает
- с++, Программа выдает ошибку! ! Помогите знающие люди!!
- Вопрос о работе программы на языке СИ. Каким будет ответ?
- простейшая программа которая будет выводить ответ функций умножения в C#
- Программа в паскале (ЛУЧШИЙ ОТВЕТ)!
- как удалить шпионскую ( вредную) программу с пк?? Если при удалении он выдаёт, что это не возможно...((((
- Препад проверяет курсовые программой плагиат ...(прога ищет в и-е похож. текст и выдает сколько% скоп.)как обмануть???