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

Использование подпрограмм - C++

Восстановить пароль Регистрация
 
Inimitable WinD
Сообщений: n/a
23.12.2009, 15:31     Использование подпрограмм #1
Здравствуйте! Писал прогу и при тестировании наткнулся на то, что неправильно работает т.е я думаю, что неисправность в main, там идет вызов функций и мне надо заставить прогу, чтобы она сразу на все проверяла - совпадение, параллельность, пересечение в одной точке, и выводила в общем положении прямые или нет, а она проверяет только на пересечение в точке и то только 3 прямые, когда я ввожу 20, тоже 3 прямые! Реализация подпрограмм точно правильная, просто в main напутал что-то, а понять не могу. Надеюсь на Вашу помощь.

Программа "Положение прямых" (условие): прямая на плоскости может быть задана уравнением ax+by+c=0, где a и b одновременно не равны нулю. Пусть имеется n прямых (n=>3) - я ограничил до 30 прямых. Прямые заданы целыми коэффициентами a1, b1, c1, a2, b2, c2, a3, b3, c3, ... an, bn, cn. Определить находятся ли данные прямые в общем положении, т.е. никакие две из них не совпадают и не параллельны, и никакие три не пересекаются в одной точке. Решение реализовать с помощью подпрограмм определения взаимного расположения прямых.

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
#include <stdio.h>
#include <math.h>
 
int func (int a1, int b1, int c1, int a2, int b2, int c2) //sovpadenie prambIx
{
    if (a1*b2==b1*a2 && b1*c2==b2*c1) 
        return 1;
     else
    return 0;
}
 
int func2 (int a1, int b1, int a2, int b2) //parallelnost prambIx
{
    if (a1*b2==b1*a2)
        return 1;
    else
       return 0;
}
 
int func3 (int a1, int b1, int c1, int a2, int b2, int c2, int a3, int b3, int c3) //peresechenie prambIx v odnoi tochke
{
{ float x, y, x1, y1;
    x=(b1*c2-b2*c1)/(a1*b2-a2*b1);
    y=(c1*a2-c2*a1)/(a1*b2-a2*b1);
    x1=(b2*c3-b3*c2)/(a2*b3-a3*b2);
    y1=(c2*a3-c3*a2)/(a2*b3-a3*b2);
    if (x==x1 && y==y1)
    return 1;
    else
    return 0;
    }
void main ()
{ int a, b, c, i, j, g, f, k, m2[29][2];
 
printf("\n Vvedite kolichestvo pramih: ");
scanf("%d", &k);
printf("\n Vvedite koefficienti pramih: ");
for (i=0; i<=k - 1; i++)
scanf("%d %d %d", &m2[i][0], &m2[i][1], &m2[i][2]);
 
 
  for (j=0; j <= k - 1; j++)
  {
 
      for (g=0; g <= k - 1; g++)
      {
      if (g != j)
      {
        for (f=0; f <= k - 1; f++)
        {
        if (f != g)
                {
 
            if ((func(m2[j][0], m2[j][1], m2[j][2], m2[g][0], m2[g][1], m2[g][2]) == 0) &&
            (func2(m2[j][0], m2[j][1], m2[g][0], m2[g][1]) == 0) &&
            (func3(m2[j][0], m2[j][1], m2[j][2], m2[g][0], m2[g][1], m2[g][2], m2[f][0], m2[f][1], m2[f][2]) == 0))
 
 
        printf("\n Pramie %d and %d naxodatsa v obchem polozhenii. Tretya pramaia %d", j+1, g+1, f+1);
        else
        printf("\n Pramie %d and %d ne naxodatsa v obchem polozhenii. Tretya pramaia %d", j+1, g+1,
f+1);
                }
            }
     }
  }
 }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2009, 15:31     Использование подпрограмм
Посмотрите здесь:

C++ Использование функций(подпрограмм)
Задача с массивами.Использование подпрограмм C++
C++ Оформить программу в виде подпрограмм
C++ Аналог меню. Вызов подпрограмм
C++ Обработка массивов с использованием подпрограмм
C++ Подпрограммы. Вычисления с использованием подпрограмм
C++ Запуск подпрограмм
Программа на С++ с использованием подпрограмм C++

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

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

Текущее время: 20:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru