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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ . Используя табличные данные функции, полученные в соответствии со своим вариантом в лабораторной работе №5, разработать алгоритм и написать п http://www.cyberforum.ru/cpp-beginners/thread891820.html
Задача 1. Используя табличные данные функции, полученные в соответствии со своим вариантом в лабораторной работе №5, разработать алгоритм и написать по нему программу вычисления производной функции в некоторой точке. Производную считать слева и справа. Результат вывести на экран. 1 0.785398 10.9 1.47931 20.8 1.52276 30.7 1.53823 40.6 1.54617 50.5 1.551 60.4 1.55424 70.3 1.55657...
C++ Вычислить сумму элементов В массиве из 10 чисел есть хотя бы один нулевой элемент. Вычислить сумму элементов массива до первого нуля http://www.cyberforum.ru/cpp-beginners/thread891818.html
C++ Подсчет символов в строке
Помогите написать программу подсчета символов в строке. Спасибо.
C++ Переделать код на считывание из файла в файл (Описание внутри)
А вот соответственно сама задача: государстве N городов с номерами 1.2….N. Некоторые города связаны между собой дорогами и образуют штат. Сколько штатов в государстве. Формат входного файла Во входном файле записаны сначала два числа N и M, задающие соответственно количество городов и количество дорог (1≤N≤100, 0≤M≤1000), а затем перечисляются попарно связанные дорогами города. Каждая...
C++ как эту программу сделать через функции пользователя? http://www.cyberforum.ru/cpp-beginners/thread891799.html
как эту программу сделать через функции пользователя? #include <iostream> #include <string.h> using namespace std; int main() { const int maxlen = 100; char input_buffer; char word_buffer; int word_len = 0;
C++ В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему свойству: В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему свойству:8) сумма числовых значений цифр, входящих в текст, равна длине текста подробнее

Показать сообщение отдельно
diantre
Сообщений: n/a

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

05.06.2013, 13:03. Просмотров 238. Ответов 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");
}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru