Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
diantre
1

прога неверно считает и выводит

05.06.2013, 13:03. Показов 458. Ответов 0
Метки нет (Все метки)

Собственно сабж, с меня сотни нефти. багрепорт молчит, ошибка в логике. Программа неправильно считает, не могу понять в чем ошибка


Формулировка условия задачи.

Из множества прямых М, заданных коэффициентами уравнения A*x + B*y + C, сформировать множество прямых P принадлежащих множеству M, расстояние от которых до точки А(Xа,Ya) принадлежит заданному интервалу, и упорядочить прямые в порядке возрастания расстояний.

Пример решения задачи.

Пусть заданы уравнения прямых М:
3X+6y+15=0(I)
5x+9y+25=0(II)
x+4y+1=0(III)
Пусть задана точка A(3,4)
Пусть величина L=6
K=sqrt(A^2+B^2)
Тогда расстояние R от прямых I , II и III до точки D будет вычисляться по формуле:
R=|A*Xa+B*Ya+C|/K
(1)
K=6.7
R=48/6.7=7.16
(II)
K=10.2
R=76/10.2=7.4
(III)
K=4.12
R=20/4.12=4.8
Таким образом, расстояние от прямой I, II и III до точки A больше заданной величины L, а от прямой III – меньше.

Способ получения результатов по исходным данным.

Для решения задачи необходимо из множества заданных прямых Ax+By+C=0
выделить те, расстояние от которых до точки D (Xa,Ya) больше заданной величины.
Для этого по формуле R=|A*Xa+B*Ya+C|/K, где K= sqrt(A^2+B^2) вычисляем расстояния от точки до каждой прямой. Выделяем прямые, удовлетворяющие задаче, путем проверки условия R(i)>L.
Для упорядочивания прямых в порядке убывания расстояния используется следующий метод:
Из двух расстояний R(i) и R(i+1) проверкой условия R(i)<R(i+1) находится наибольшее. Если наибольшее расстояние стоит на месте i+1 ,то с помощью дополнительной переменной меняются местами значения переменных R(i) и R(i+1).Эти действия повторяются n раз.

Исходные данные и форма их представления.

Множество коэффициентов A,B,C представляются как 3 одномерных массива вещественного типа размера n,где n равно количеству исходных прямых.




3 6 3
5 9 8
1 4 1
3 6 7
2 10 9




C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#pragma hdrstop
#include <vcl.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <cmath>
#include <iostream>
using namespace std;
 
FILE *kof, *res;
float a[30],b[30],c[30], R[30];
float l, x0, y0, x1, y1;
int kp,k;
void vvod(int s);
void main()
{
int o;
clrscr();
printf ("Vzyat dannie iz faila?\n");
printf ("Da=1, Net=2\n");
scanf("%d",&o);
vvod(o);
fclose(kof);
res = fopen("RESULT.txt","w");
fprintf(res, "\Ishodnie pryamie\n A B C\n");
 
 
 
 
if (kof==0)
{ for (int i=0;i<kp;i++)
printf("%.3f %.3f %.3f\n", a[i],b[i],c[i]);
 
for (int i=0; i<kp; i++)
{     for (int i=0; i<kp; i++)
{for (int j=kp-1; j>i; j--)
{
if (fabs((a[j]*x0+b[j]*y0+c[j])/(pow(a[j]*a[j]+b[j]*b[j],0.5))<fabs((a[j-1]*x0+b[j-1]*y0+c[j-1])/(pow(a[j-1]*a[j-1]+b[j-1]*b[j-1],0.5)))))
{     swap (a[j], a[j-1]);
swap (b[j], b[j-1]);
swap (c[j], c[j-1]);
}
}
}
printf ("\n * * * * * * * * * * *\n");
R[i] = fabs((a[i]*x0+b[i]*y0+c[i])/(pow(a[i]*a[i]+b[i]*b[i],0.5)));
if (R[i]<l)
{
printf("%.3f %.3f %.3f\n",a[i],b[i],c[i]);
printf("Rasstoyanie do to4ki A %.3f\n", R[i]); }
 
 
 
 
 
 
}
}
else
 
{
 
printf ("\n BBedite koordinati to4ki A\n");
scanf("%f%f",&x0,&y0);
printf ("BBedite L\n");
scanf ("%f",&l);
for (int i=0;i>kp;i++)
 
fprintf(res, "%.3f %.3f %.3f\n", a[i],b[i],c[i]);
fprintf (res, "*******Analysis: \n");
for (int i=0; i<kp; i++)
 
{      for (int i=0; i<kp; i++)
{for (int j=kp-1; j>i; j--)
{   R[i] = fabs((a[i]*x0+b[i]*y0+c[i])/(pow(a[i]*a[i]+b[i]*b[i],0.5)));
if (R[j]>R[j-1])
{     swap (a[j], a[j-1]);
swap (b[j], b[j-1]);
swap (c[j], c[j-1]);
}
}
}
 
if (R[i]<l)
{
fprintf(res,  "%.3f %.3f %.3f\n",a[i],b[i],c[i]);
fprintf(res, "Rasstoyanie do to4ki %.3f\n", R[i]);
}
}
 
fprintf(res, "Ostalnie pryamie ne udovletvoryut usloviu!!\n");
 
printf("ISHODNIKI.txt had been read \n");
printf("Results saved \n");
}
printf ("\n*  *  *  *  *  *  *  *  *\n");
printf ("*  *  *  *  *  *  *  *  *\n");
 
printf("Program has been finished \n");
printf("Enter any key to exit \n");
getch();
}
void vvod (int s)
{
if (s==1)
{ kof = fopen("ISHODNIKI.txt","r");
if(kof==0)
{ printf ("\n FILE NE NAIDEN!");
}
else  {
int i=0;
while(!feof(kof))
{
fscanf(kof, "%f %f %f", &a[i], &b[i], &c[i]);
i++;
}
kp=i;
 
 
}     }
else { if
(s==2)
{printf ("\n BBedite koordinati to4ki D\n");
scanf("%f%f",&x0,&y0);
printf("BBedite koli4estvo pryamix\n");
scanf ("%d",&kp);
printf ("BBedite L\n");
scanf ("%f",&l);
for (int i=0; i<kp; i++)
{
printf("BBedite Parametru A,B,C");
printf ("\n************************\n");
scanf("%f%f%f",&a[i],&b[i],&c[i]);
}
}
else printf ("ERROR\n");
}
}

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2013, 13:03
Ответы с готовыми решениями:

Неверно считает
множество всех чисел вида (2^(k)+3^(k)). вот код: #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...

Разложение в ряд Тейлора (неверно считает)
Задача: Вычислить и вывести на экран в виде таблицы значения функции F(x) на интервале с шагом dx...

Неверно считает числовую последовательность, не вычисляет сумму
Задание: Числовая последовательность задана рекуррентной формулой. Задать с консоли два первых...

Неверно считает программа
Неверно считает программа в MathCAD метод Гаусса, помогите выяснить в чем причина, пожалуйста

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2013, 13:03

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Anylogic неверно считает CDF?
Здравствуйте! Прошу помощи вот по какому вопросу. У меня Anylogic 7, модель прилагаю. Задача...

Программа компилируется, но считает неверно
Программа компилируется ,но считает не верно. unit Unit1; interface uses Windows,...

Программа неверно считает результат
Здравствуйте! В общем, нужно было составить тест на любую тему. Я всё сделал, но программа...

Подсчет суммы в таблице (неверно считает)
Всем привет, наткнулся на не понятную проблему. У меня есть таблица (файл dbf), по определенному...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.