Перейти к содержимому
Открыть в приложении

Лучший способ просмотра. Узнать больше.

АнимеФорум

Полноэкранное приложение на домашнем экране с push-уведомлениями, значками и другими функциями.

Чтобы установить это приложение на iOS и iPados
  1. Нажмите на иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите Добавить на домашний экран.
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите на меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на домашний экран или Установить приложение.
  3. Подтвердите, нажав Установить.

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

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

 

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

ax4 + bx2 + c = 0.

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

 

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

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

решений нет

один корень

два корня

три корня

четыре корня

 

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

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

for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0;

Рекомендуемые ответы

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

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

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

  • Автор
Так просто не получится. Корней может быть от 0 до 4. Тут фантазия нужна. Тестирование – творческий процесс, нужно человеческое воображение.
for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0;
  • Автор

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

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

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

 

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

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

Отредактировано от 初音ミクこんばんは (см. историю изменений)

for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0;
  • Автор

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

 

for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0;

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

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

Гость
Ответить на эту тему...

Последние посетители 0

  • Ни одного зарегистрированного пользователя не просматривает данную страницу.

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления в браузере

Chrome (Android)
  1. Нажмите на значок замка рядом с адресной строкой.
  2. Выберите Разрешения → Уведомления.
  3. Настройте предпочтения.
Chrome (Desktop)
  1. Нажмите на значок замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите пункт Уведомления и настройте параметры по своему усмотрению.