Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
diantre
Сообщений: n/a
#1

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

05.06.2013, 13:03. Просмотров 244. Ответов 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");
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 13:03     прога неверно считает и выводит
Посмотрите здесь:

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

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

Какая здесь ошибка? Программа должна считать сумму в столбцах, но почему-то неверно считает - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; main() { int S=0, a, Sum; for (int i = 1; i &lt;=3; i++) for (int j = 1; j &lt;=5; j++) { ...

Неверно выводит вектор пар - C++
Здравствуйте. Цикл выводит нули вместо ожидаемых чисел. В чем же ошибка #include&lt;iostream&gt; #include&lt;vector&gt;

Код неверно выводит массивы - C++
всем привет. в общем у меня такая проблема: установил Visual Studio 2013, начал на нем познавать язык С++, и тут такая проблема, когда я...

Быстрая сортировка выводит неверно - C++
Всем привет. Вообщем вот мой код, он должен быть правильным, но почему-то я хватаю где-то мусор при выводе // chrome_test.cpp : Defines...

Метод ранга. Неверно выводит результат - C++
Добрый день, уважаемые форумчане! Столкнулся с такой проблемой. Есть задача, вот её условия: Группе экспертов необходимо определить...

Java, как переделать,неверно считает: Произвед.элементов в строках, которые не содержат отриц-х элементов? - C++
package lab_4; import java.util.Scanner; import java.math.*; public class Laba4 { public static void main(String arg) { ...

Испраить ошибку - не считает(не выводит ответ) - C++
привет вам программисты) написал прогу, все запускается но почемуто не считает(не выводит ответ), просьба помочь. врт прога: ...

Компилируется неверно - C++
Пользователь вводит температуру. Ему показывают сообщение о состоянии организма. Например 39– труп. Вот, что я написала. Но какую-то...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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