初音ミクこんばんは Posted September 16, 2016 Report Share Posted September 16, 2016 Написал на компьютере программу для решения биквадратного уравнения. Прошу придумать тесты для проверки работы этой программы. Биквадратное уравнение – это частный случай уравнения четвёртой степени вида:ax4 + bx2 + c = 0.Условия такие. Коэффициенты a, b, c должны быть целыми числами. Решения xi могут быть как целыми, так и иррациональными числами. В программе возможны следующие варианты решений:решение – любое числорешений нетодин кореньдва корнятри корнячетыре корня Короче, я перебрал все варианты. Нужны тройки чисел a, b, c для тестирования программы. Решения xi можно не приводить (хотя можно и с ними).А я, пока вы пишете, поиграю в Disgaea. Quote Link to comment Share on other sites More sharing options...
Jabberwocker Posted September 16, 2016 Report Share Posted September 16, 2016 а тебе что мешает написать другую программу, которая возьмет случайные корни и вычислит коэффициенты исходного уравнения? Quote Link to comment Share on other sites More sharing options...
初音ミクこんばんは Posted September 16, 2016 Author Report Share Posted September 16, 2016 ленья думал, может ваши мозги наконец-то поработают Quote Link to comment Share on other sites More sharing options...
Jabberwocker Posted September 16, 2016 Report Share Posted September 16, 2016 господи, открой эксель.две колонки под корни, через RAND(), остальные колонки -- вбить формулу для коэффициентов. Quote Link to comment Share on other sites More sharing options...
初音ミクこんばんは Posted September 16, 2016 Author Report Share Posted September 16, 2016 Так просто не получится. Корней может быть от 0 до 4. Тут фантазия нужна. Тестирование – творческий процесс, нужно человеческое воображение. Quote Link to comment Share on other sites More sharing options...
初音ミクこんばんは Posted September 16, 2016 Author Report Share Posted September 16, 2016 (edited) Цитирую Юркин задачник:"Набор тестов называется полным, если он позволяет активизировать все ветви алгоритма. Набор тестов назовём не избыточным, если удаление из него любого теста лишает его полноты.Таким образом, искусство тестирования сводится к разработке полного и не избыточного набора тестов, а технология – к испытанию программы на всём наборе после внесения в неё каждого исправления. Удачно подобранные тесты позволяют не только констатировать факт наличия ошибок, но и локализовать их, то есть найти место в программе, виновное в получении неверных результатов." Ну и там ещё куча текста.Это, конечно, формальный подход, и придерживаться его необязательно. Любое тестирование, основанное на "методе тыка", наверняка будет избыточным. Edited September 16, 2016 by 初音ミクこんばんは (see edit history) Quote Link to comment Share on other sites More sharing options...
初音ミクこんばんは Posted September 22, 2016 Author Report Share Posted September 22, 2016 2. Решить квадратное уравнение.6. Решить биквадратное уравнение. /* p11 Язык Turbo C Основы программирования Теория. Задачи */ /* p11 (15k), p13 (22k), p16, p18, p19 (23k) p21 (24k), p53 (25k), p54, p55 */ #include <conio.h> #include <math.h> #include <stdio.h> j (); /* Решение - любое число. */ k (); /* Решений нет. */ l (float); /* Один корень. */ m (float, float); /* Два корня. */ n (int, int); /* n = a ^ b. */ o (float, float, float); /* Три корня. */ p (float, float, float, float); /* Четыре корня. */ main () { int a, b, c, d; int g, h; float s, t; printf ("Введите четыре целых числа: "); scanf ("%i%i%i%i", &a, &b, &c, &d); printf ("p13 - 2. "); if (a == 0) if (b == 0) if (c == 0) j (); else k (); else l ((float) -c / B); else { g = b * b - 4 * a * c; if (g < 0) k (); else if (g == 0) l (-b / 2. / a); else m ((-b + sqrt (g)) / 2 / a, (-b - sqrt (g)) / 2 / a); } printf ("p21 - 6. "); if (a == 0) if (b == 0) if (c == 0) j (); else k (); else { s = (float) -c / b; if (s < 0) k (); else if (s == 0) l (0); else m (sqrt (s), -sqrt (s)); } else { g = b * b - 4 * a * c; if (g < 0) k (); else if (g == 0) { s = -b / 2. / a; if (s < 0) k (); else if (s == 0) l (0); else m (sqrt (s), -sqrt (s)); } else { s = (-b + sqrt (g)) / 2 / a; t = (-b - sqrt (g)) / 2 / a; if (s < 0) if (t < 0) k (); else if (t == 0) l (0); else m (-sqrt (t), sqrt (t)); else if (s == 0) if (t < 0) l (0); else o (-sqrt (t), 0, sqrt (t)); else if (t < 0) m (-sqrt (s), sqrt (s)); else if (t == 0) o (-sqrt (s), 0, sqrt (s)); else p (-sqrt (s), -sqrt (t), sqrt (t), sqrt (s)); } } getch (); printf ("\n"); } j () {printf ("Решение - любое число.\n");} k () {printf ("Решений нет.\n");} l (float a) {printf ("x = %.4g.\n", a);} m (float a, float B) {printf ("x1 = %.4g, x2 = %.4g.\n", a, B);} o (float a, float b, float c) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g.\n", a, b, c);} p (float a, float b, float c, float d) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g, x4 = %.4g.\n", a, b, c, d);} Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.