Jump to content
АнимеФорум

Биквадратное уравнение


初音ミクこんばんは

Recommended Posts

Написал на компьютере программу для решения биквадратного уравнения. Прошу придумать тесты для проверки работы этой программы.

 

Биквадратное уравнение – это частный случай уравнения четвёртой степени вида:

ax4 + bx2 + c = 0.

Условия такие. Коэффициенты a, b, c должны быть целыми числами. Решения xi могут быть как целыми, так и иррациональными числами.

 

В программе возможны следующие варианты решений:

решение – любое число

решений нет

один корень

два корня

три корня

четыре корня

 

Короче, я перебрал все варианты. Нужны тройки чисел a, b, c для тестирования программы. Решения xi можно не приводить (хотя можно и с ними).

А я, пока вы пишете, поиграю в Disgaea.

Link to comment
Share on other sites

Цитирую Юркин задачник:

"Набор тестов называется полным, если он позволяет активизировать все ветви алгоритма. Набор тестов назовём не избыточным, если удаление из него любого теста лишает его полноты.

Таким образом, искусство тестирования сводится к разработке полного и не избыточного набора тестов, а технология – к испытанию программы на всём наборе после внесения в неё каждого исправления. Удачно подобранные тесты позволяют не только констатировать факт наличия ошибок, но и локализовать их, то есть найти место в программе, виновное в получении неверных результатов."

 

Ну и там ещё куча текста.

Это, конечно, формальный подход, и придерживаться его необязательно. Любое тестирование, основанное на "методе тыка", наверняка будет избыточным.

Edited by 初音ミクこんばんは (see edit history)
Link to comment
Share on other sites

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);}

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information