Перейти к содержанию
АнимеФорум

Рекомендуемые сообщения

Опубликовано

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

 

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

ax4 + bx2 + c = 0.

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

 

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

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

решений нет

один корень

два корня

три корня

четыре корня

 

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

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

Опубликовано (изменено)

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

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

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

 

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

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

Изменено пользователем 初音ミクこんばんは (смотреть историю редактирования)
Опубликовано

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

 

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...

Важная информация