Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2008, 15:30   #1
sds
 
Регистрация: 16.11.2007
Сообщений: 3
По умолчанию Уравнение с двумя неизвестными

Необходима помощь с программкой.
Нужно написать программу которае решает систему уравнений с двумя неизвестными:
AX + BY + C = 0
A1X + B1Y + C1 = 0
Где A,B,C,A1,B1,C1 - вводятся пользователем,
а X и Y - неизвестные.
Я так понял что нужно описать 16 случаев типа (a=0) and (b=0) and (a1<>0) and (b1=0) и таких разных вариантов будет как раз 16 (чтобы небыло исключительных ситуаций деления на 0 и т.д.)
Но может быть есть более простой способ, может кто-либо уже делал такое.
Заранее большое спасибо.
sds вне форума Ответить с цитированием
Старый 23.04.2008, 15:35   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от sds Посмотреть сообщение
Я так понял что нужно описать 16 случаев типа (a=0) and (b=0) and (a1<>0) and (b1=0) и таких разных вариантов будет как раз 16 (чтобы небыло исключительных ситуаций деления на 0 и т.д.)
Нет. Нужно либо банально, по-школьному, выразить одну переменную через другую, любо решать систему или методом Гаусса, или методом Крамера, как Вам удобнее. Сначала это делается на бумаге, а уже потом алгоритмируется. Таких задачек на форуме решалось много, пользуйтесь поиском.
B_N вне форума Ответить с цитированием
Старый 23.04.2008, 21:25   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Таких задачек на форуме решалось много, пользуйтесь поиском.
А Вы сами пробовали найти на форуме полный код программы решения СЛАУ методом Гаусса, Крамера или обратной матрицы? Лично я за период с октября прошлого года, что я на форуме, знаю одно место, где я выложил код решения СЛАУ методом Гаусса на Паскале. Все остальное только столь любимые среди крутяка Форума нравоучения и глубокомысленные рассуждения.
puporev вне форума Ответить с цитированием
Старый 23.04.2008, 22:53   #4
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
А Вы сами пробовали найти на форуме полный код программы решения СЛАУ методом Гаусса, Крамера или обратной матрицы? Лично я за период с октября прошлого года, что я на форуме, знаю одно место, где я выложил код решения СЛАУ методом Гаусса на Паскале. Все остальное только столь любимые среди крутяка Форума нравоучения и глубокомысленные рассуждения.
Я думаю речь шла именно о решение простых СУ.... а не именно Гаусса и Крамера и др. Я тоже неприпоминаю методов Гаууса и прочих.... но обсуждали раз пять....

Решать систему которая в первом посте я думаю проще "по школьному".
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 23.04.2008, 23:13   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
А Вы сами пробовали найти на форуме полный код программы решения СЛАУ методом Гаусса, Крамера или обратной матрицы? Лично я за период с октября прошлого года, что я на форуме, знаю одно место, где я выложил код решения СЛАУ методом Гаусса на Паскале. Все остальное только столь любимые среди крутяка Форума нравоучения и глубокомысленные рассуждения.
Нет, не пробовал. Но я и задачи перед собой такой не ставил, зато помню, что на днях уже решали систему, а чем там кончилось - не смотрел. Вы же сами понимаете, что никаких сил не хватит чтобы решить все задачки на форуме. Да и здесь, собственно, топикстартер ограничился одним вопросом и остаётся только догадываться, остался ли он им доволен. Раз говорите нету Крамера, пусть будет. Остаётся надеяться, что не придётся подтверждать профпригодность программкой для систем произвольной степени.

Код:
type
    floating_point  = extended;
    
    equset2         = array[1 .. 2, 1 .. 3] of floating_point;
    matrix2         = array[1 .. 2, 1 .. 2] of floating_point;
    result_set      = record X1, X2 : floating_point; end;

function Det2(mtx : matrix2) : floating_point;
begin
    result := mtx[1, 1] * mtx[2, 2] - mtx[1, 2] * mtx[2, 1];
end;

function Cramer2(e_set : equset2; var res : result_set) : boolean;
var
    det_set : floating_point;
    det_1   : floating_point;
    det_2   : floating_point;
    tmp_mtx : matrix2;
begin
    tmp_mtx[1,1] := e_set[1,1];
    tmp_mtx[1,2] := e_set[1,2];
    tmp_mtx[2,1] := e_set[2,1];
    tmp_mtx[2,2] := e_set[2,2];

    det_set := Det2(tmp_mtx);
    if (det_set <> 0) then begin
        tmp_mtx[1,1] := e_set[1,3];
        tmp_mtx[1,2] := e_set[1,2];
        tmp_mtx[2,1] := e_set[2,3];
        tmp_mtx[2,2] := e_set[2,2];
        det_1 := Det2(tmp_mtx);

        tmp_mtx[1,1] := e_set[1,1];
        tmp_mtx[1,2] := e_set[1,3];
        tmp_mtx[2,1] := e_set[2,1];
        tmp_mtx[2,2] := e_set[2,3];
        det_2 := Det2(tmp_mtx);

        res.X1 := det_1 / det_set;
        res.X2 := det_2 / det_set;

        result := true;
    end
    else begin
        result := false;
    end;
end;

var
    e_set   : equset2;
    res     : result_set;

begin
    write('A1='); readln(e_set[1,1]);
    write('B1='); readln(e_set[1,2]);
    write('C1='); readln(e_set[1,3]);
    write('A2='); readln(e_set[2,1]);
    write('B2='); readln(e_set[2,2]);
    write('C2='); readln(e_set[2,3]);

    writeln('Решение по правилу Крамера:');

    if Cramer2(e_set, res) then
        writeln('X1=', res.X1, ', X2=', res.X2)
    else
        writeln('Система несовместна.');

    readln;
end.
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Система линейных уравнений с тремя неизвестными, решение их матричным способом. svender Помощь студентам 8 30.05.2009 13:32
Помогите написать уравнение... Altera Свободное общение 8 11.04.2008 19:57
паскаль. уравнение. Jodu Помощь студентам 3 23.12.2007 11:29
Квадратное уравнение на Assembler PLETNEFF Помощь студентам 3 10.10.2007 09:06