A106

Даны действительные числа [latex]a, b[/latex], натуральное число  [latex]n(b>a) [/latex]. Получить [latex](f_1+…+f_n)h[/latex], где

[latex]h=\frac{b-a}{n}[/latex],      [latex]f_i=\frac{a+(i-\frac{1}{2})h}{1+(a+(i-\frac{1}{2})h)^{2}}[/latex]
a b n h f Комментарий
5 7 0 Введенное ‘n’ не натуральное
17 10 15 Первое введенное число больше второго
47.421 57.421 5 2 1.912507e-01 Пройден
3 12 6 1.5

1.330323e+00

Пройден
1 5 1 4 1.2 Пройден
2 14 2 6 1.694830e+00 Пройден

Код программы:

Код на Java:

 

Дано [latex]a,b,n[/latex]. Если [latex]n<1[/latex] или [latex]a=b[/latex], то выведем ошибку. Если [latex]a>b[/latex], то выведем ошибку.
По формуле вычислим [latex]h=\frac{b-a}{n}[/latex]  и с помощью цикла по формуле [latex]f_i=\frac{a+(i-\frac{1}{2})h)}{1+(a+(i-\frac{1}{2})h)^{2})}[/latex] вычислим сумму. Домножим сумму на [latex]h[/latex].

Код программы на С++ можно посмотреть тут
Код программы на Java можно посмотреть тут

Related Images:

8 thoughts on “A106

  1. 1. В формуле для f_i (математической) проблема со скобками и в числителе и в знаменателе — сравните с условием задачи в Абрамове.
    2. Значения суммы забыли домножить на h — ответ получился неверный, каким же образом тесты пройдены??? Или Вы просто то, что вывела программа записали в результат? Проверять нужно альтернативным способом — например, на калькуляторе или листочке или в google-калькуляторе.
    3. Странное решение проверить только условие n==0 (ноль не подходит), а не написать, что меньшие или равные нулю n не подходят.
    4. Почему первое слагаемое (a+(1-0.5)*h)/(1+pow((a+(1-0.5)*h),2)) выделено отдельно (создается дублирование кода)?
    5. Вы не поставили метки (ключевые слова).

  2. — Поставьте отступы в программе в соответствии с вложенностью операторов. Посмотрите здесь как это делается.
    — Поставьте в тексте пробелы после знаков препинания.
    — Для возведения в квадрат нужно умножить значение само на себя. Функция pow() более применима для нецелых степеней.
    — «Формула» это очень неудачное ключевое слово для статьи. Нужно выбрать что-то, лучшим образом характеризующее особенности Вашей статьи.
    — Какой смысл в таком «1.2000000e+00» формате записи чисел?

    • 1)Кажется,исправил.
      2)Поставил
      3)Исправил
      4)Добавил
      5)Я считаю,что ответы должны выводиться в одном и том же формате,для общности решения.

    • «Общность решения»? Вы имеете в виду формат вывода Вашей программы? Я говорю про тесты. Они пишутся ДО написания программы. Тесты строятся на базе простых примеров, которые можно посчитать, например, устно.

  3. Несколько небрежно оформлена программа:
    if((n<=0)||(a==b))System нет пробелов, все визуально сливается, по хорошему объединение все в одну строку вообще не оправдано, т.к. получилась очень длинная и громоздкая строка
    if (a>b)S... та же самая проблема — хотя один из пробелов есть

    Образцы форматирования условных операторов можете увидеть здесь: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html и http://blog.jooq.org/2012/01/18/if-else-coding-style-best-practices/. Заметьте, что там фигурные скобки расставлены в Java-стиле (это я не требую, как обязательный элемент, но было бы желательно и к такому стилю привыкнуть).

    Ну и правильно советовал Игорь Евгеньевич: три раза повторяется громоздкое выражение a+(i-0.5)*h — почему бы не ввести переменную для него?

Добавить комментарий