Перейти к содержанию
Решена проблема отправки писем ×
АнимеФорум

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


初音ミクこんばんは

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

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

 

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

ax4 + bx2 + c = 0.

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

 

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

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

решений нет

один корень

два корня

три корня

четыре корня

 

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

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

Ссылка на комментарий
Поделиться на другие сайты

а тебе что мешает написать другую программу, которая возьмет случайные корни и вычислит коэффициенты исходного уравнения?
Ссылка на комментарий
Поделиться на другие сайты

господи, открой эксель.

две колонки под корни, через RAND(), остальные колонки -- вбить формулу для коэффициентов.

Ссылка на комментарий
Поделиться на другие сайты

Так просто не получится. Корней может быть от 0 до 4. Тут фантазия нужна. Тестирование – творческий процесс, нужно человеческое воображение.
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

 

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

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

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

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 эмодзи.

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

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

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

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

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