Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Java.doc
Скачиваний:
836
Добавлен:
04.06.2015
Размер:
5.55 Mб
Скачать

Программа

int min, max, n, count = 0;

double sred, s = 0.0;

String input;

input=JOptionPane.showInputDialog("Введите первое число:");

n=Integer.parseInt(input);

if (n==0) //если введено число 0, то

return 0; //выход из программы с результатом 0

//иначе

min = n; // за минимум и максимум принимаем

max = n; //первое введенное число

count = 1; //введено одно число

s += n; // в сумме – введенное число

do (n!=0)

{

input=JOptionPane.showInputDialog("Введите очередное число:");

n=Integer.parseInt(input);

if (n==0)

break;

count++;

s += n;

if (n > max)

max = n;

if (n < min)

min = n;

} while(n!=0);

System.out.printf(“\nСумма = %4.2f”, s);

System.out.printf(“\nКоличество чисел = %d”, count);

System.out.printf(“\nmin = %d”, min);

System.out.printf(“\nmax = %d”, max);

sred = (double)s/count;

System.out.printf(“\n Среднее арифметическое = %6.2f”,sred);

Схема алгоритма:

  1. вычислить s– сумму членов бесконечного ряда:

s = 1 + x/ 1! + x2 / 2! + x3 / 3! + … + xk / k! + …

с погрешностью ε0.

Каждый последующий член ряда можно определить через предыдущий, используя рекуррентнуюформулу:

yk+1 = yk·x / k

Текущая погрешность вычислений εопределяется последним просуммированным членом ряда:

ε =|yn|

Эту погрешность необходимо сравнить с заданной погрешностью ε0 для реализации условия окончания суммирования:

- если ε > ε0, то заданная точность еще не достигнута, и суммирование ряда необходимо продолжить, прибавив к имеющейся сумме еще один член,

- если ε <= ε0, то заданная точность достигнута, и суммирование необходимо прекратить.

Пусть s– искомая сумма,

y – очередной член ряда,

k- номер члена ряда,

eps_0 – заданная точность вычислений,

x – вводимый аргумент.

Программа:

Public final double EPS_0 = 0.001;

int k = 0;

double x, y, s;

String input;

input=JOptionPane.showInputDialog("x=");

x=Double.parseDouble(input);

y = 1.0; // первый член ряда

s = y; // в сумме – он же

do

{

k++; // номер члена ряда увеличиваем на единицу

y *= x / k; // очередной член ряда

s += y; // добавляем его в сумму

}

while (Math.abs(y)>EPS_0);

System.out.printf(“\nСумма = %5.3f”, s);

Схема алгоритма:

Циклы с постусловием обычно используются в фильтрах входных данных– исходные данные вводятся до тех пор, пока они не будут корректными, а некорректные исходные данные отвергаются.

Пример: по введенному месяцу года определить количество дней в нем.

Схема фильтра (month– номер месяца)

Программа:

Int month;

String input;

do

{

input=JOptionPane.showInputDialog("Введите номер месяца:");

month=Integer.parseInt(input);

} while ((month < 1) || (month > 12));

switch (month)

{

case 1: case 3: case 5:

case 7: case 8: case 10:

case 12: System.out.printf(“\n31 день”);

break;

case 4: case 6: case 9:

case 11: System.out.printf(“\n30 дней”);

break;

case 2: System.out.printf(“\n28 дней”);

break;

default: System.out.printf(“\nТакого месяца нет\n”);

}

Циклы с пред- ипостусловиями используются тогда, когда заранее неизвестно количество их повторений (итераций). Во всех остальных случаях используютсяциклы с параметром.