- •Часть 1
- •Часть 1
- •Введение
- •Лабораторная работа № 1 разработка схем алгоритмов
- •Краткая теория Этапы решения задач на эвм
- •Определение алгоритма и способы его описания
- •Правила оформления схем алгоритмов
- •Типы алгоритмов
- •Задания
- •Построение схем алгоритмов с помощью текстового редактора word
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 2 работа в среде netbeans. Создание простейших программ с линейным алгоритмом
- •Краткая теория Установка ide NetBeans
- •Общие правила создания приложений
- •Работа с проектом NetBeans
- •Пример создания простейшего приложения
- •Общие правила построения класса
- •Типы данных
- •Объявление переменных
- •Оператор присваивания
- •Приведение типов
- •Организация ввода данных
- •Организация вывода данных
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 3 разработка простейших приложений на базе разветвляющихся алгоритмов
- •Краткая теория Средства переименования в среде NetBeans
- •Отладка кода в среде NetBeans
- •Условный оператор if-else
- •Условный оператор switch
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 4 разработка программ с циклами со счетчиком
- •Краткая теория Циклы со счетчиком
- •Особенности алгоритмов и программ с накапливанием
- •Методы класса Math
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 5 работа с итерационными циклами. Одномерные массивы
- •Краткая теория Итерационные циклы
- •Цикл while
- •Цикл do-while
- •Одномерные массивы
- •Подсчет суммы, количества и среднего значения в одномерных массивах
- •Нахождение минимума и максимума
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 6 алгоритмы сортировки и разбиения одномерных массивов
- •Краткая теория Сортировка одномерных массивов
- •Разбиение одномерных массивов
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 7 обработка двумерных массивов
- •Краткая теория Понятие многомерных массивов. Ввод и вывод матриц
- •Типовые алгоритмы обработки матриц
- •Алгоритмы обработки матриц в целом
- •Алгоритмы обработки матриц по строкам и столбцам
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 8 диагонали матрицы, умножение матриц
- •Краткая теория Обработка главной и побочной диагоналей матриц
- •Работа с диагоналями матриц выше и ниже главной/побочной
- •Умножение матриц
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 9 обработка строк класса string
- •Краткая теория Создание объектов класса String
- •Методы класса String
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 10 алгоритмы и программы обработки фрагментов строк класса string
- •Краткая теория Сравнение символов строк класса String
- •Типовые задачи обработки массивов строк (слов из текста)
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 11 разработка алгоритмов и программ с использованием классов StringBuffer/StringBuilder
- •Краткая теория Создание и обработка объектов классов stringbuffer и stringbuilder
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 12 разработка собственных методов
- •Краткая теория Общие правила создания методов класса
- •Описание методов класса
- •Вызов методов класса
- •Передача параметров
- •Содержание
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •Программирование на Java
- •443100, Г. Самара, ул. Молодогвардейская, 244. Главный корпус
- •443100, Г. Самара, ул. Молодогвардейская, 244. Корпус № 8
Подсчет суммы, количества и среднего значения в одномерных массивах
Вычисление суммы и подсчет количества элементов массива, имеющих заданное свойство, выполняется по общему алгоритму, рассмотренному ранее, т.е. постепенно, путем накапливания.
Задача 5.1. Ввести оценки 25 студентов по 1 предмету. Подсчитать средний балл и количество оценок выше средней.
Алгоритм
1.1. Ввести количество студентов n.
1.2. Для номера i от 0 до n – 1
Ввести оценку [i]
2.1. Для номера i от 0 до n – 1 // для просмотра введенных оценок
Вывести оценку [i] // в удобном виде
3.1. Принять сумму баллов = 0
3.2. Для номера оценки i от 0 до n – 1
Сумма = сумма + оценка [i]
4. Вычислить средний балл.
5.1. Принять количество оценок выше средней=0.
5.2. Для номера от 0 до n – 1
Если оценка [i] > среднего, то
количество = количество +1.
5.3. Вывести количество.
6. Закончить.
Далее представлен код программы (метод main).
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int k;
do {
System.out.print("Введите количество студентов => ");
k=sc.nextInt();
if(k>20){
System.out.println("Количество студентов должно быть <= 25");
}
} while (k>25);
System.out.println("\tВведите оценки \b"); // равно кол-ву студентов
int ocenka[]=new int[k];
for (int i = 0; i < ocenka.length;i++)
ocenka[i]=sc.nextInt();
// вывод для наглядности
System.out.println("Введенные оценки:");
for (int i = 0; i < ocenka.length; i++)
System.out.print("\t"+ocenka[i]);
// подсчет суммы и средней оценки
int sum=0;
for (int i = 0; i < ocenka.length; i++)
sum+=ocenka[i];
double sr=(double )sum/k;
System.out.println("\nСредняя оценка sr="+sr);
// подсчет количества оценок выше средней
int kol=0;
for (int i = 0; i < ocenka.length; i++)
if (ocenka[i]> sr)
kol++;
System.out.println("Количество оценок выше средней kol="+kol);
}
Нахождение минимума и максимума
Классический алгоритм поиска минимума или максимума использует специальные переменные для хранения искомых величин, например min или max:
1) этим переменным вначале присваивается значение первого числа из последовательности (например x1);
2) начиная со второго числа, производится сравнение этого числа со значением переменной min (или max). Если число из массива меньше min (больше max), то на место min (max) записывается это число.
После просмотра всего массива переменные min и max получат искомые значения.
Общий алгоритм нахождения минимума и максимума рассмотрен на примере задачи.
Задача 5.2. Ввести в ЭВМ массив из n чисел x1, х2,..., х[n], n<20. Найти минимальное и максимальное из них и их номера.
Алгоритм 1 (общий):
1. Ввести массив x.
2. Вывести массив x.
3. Найти и вывести минимум и максимум и их индексы.
4. Закончить.
Алгоритм 2 (уточненный):
1.1. Ввести количество чисел n.
1.2. Для номера i от 0 до x. length – 1
Ввести x [i].
2. Для номера i от 0 до x. length – 1
Ввести x [i].
3.1. max = x [0].
3.2. nommax=0.
3.3. min = x [0].
3.4. nommin=0.
3.5. Для номера i от 0 до x. length – 1
3.5.1. Если число [i] > max, то
a) max = x [i];
б) nommax=i;
3.5.2. Если число [i] < min,
а) min = x [i];
б) nommin=i;
3.6. Вывести max, nommax, min, nommin.
4. Закончить.
Программа для этого алгоритма будет иметь следующий вид.
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int k;
do {
System.out.print("Введите количество элементов массива => ");
k=sc.nextInt();
if(k>20){
System.out.println("Количество элементов должно быть < 20");
}
} while (k>20);
System.out.println("\tВведите элементы массива ");
int x[]=new int[k];
for (int i = 0; i < x.length;i++) {
x[i]=sc.nextInt();
}
// вывод массива
System.out.println("Исходный массив:");
for (int i = 0; i < x.length; i++) {
System.out.print("\t"+x[i]);
}
System.out.println("\n Поиск максимума и минимума");
int nommin=0;
int min=x[0];
int nommax=0;
int max=x[0];
for (int i = 1; i < x.length; i++) {
if ((x[i]<min)){
min=x[i];
nommin=i;
}
if ((x[i]<min)){
max=x[i];
nommax=i;
}
}
System.out.println("min= "+min +", его номер =" + nommin
+ " max="+ max +", его номер =" + nommax);
}
Выбор начального значения для максимума (минимума) для части массива. Следует отметить, что чаще всего поиск максимума и минимума ведется не во всем массиве, а среди элементов, отвечающих определенному условию, например поиск максимума среди отрицательных чисел, поиск минимума среди четных чисел и т.д. Задать элемент с индексом [0] в качестве начального значения максимума (минимума) для сравнения невозможно, так как он может не подходить требуемому условию, т.е. может не быть отрицательным или четным.
Предлагается начальное значение задавать не из элементов массива, а из общего диапазона допустимых значений элементов массива для решаемой задачи. Причем при поиске максимума начальное значение следует выбирать наименьшее из возможного диапазона, при поиске минимума – наибольшее из возможного диапазона. Номер максимума (минимума) можно задать равным -1.
Пример 1. Для определения максимального роста человека можно принять диапазон значений от 0 до 3 метров. Поэтому начальное значение для поиска максимального роста можно задать равным 0, а номер равным -1.
Пример 2. Для отрицательных элементов массива диапазон – от какого-то отрицательного значения, минимального для данной задачи, до 0. При нахождении минимума среди отрицательных чисел начальные значения можно выбрать:
– минимум=0, т.е. максимальное из диапазона;
– номер минимума= -1.
При нахождении максимума среди отрицательных чисел начальные значения можно выбрать:
– минимум= -10000, т.е. минимальное из диапазона;
– номер минимума= -1.
Если после выполнения поиска номер минимума (максимума) остался равным -1, то следует выдать сообщение, что чисел, соответствующих заданному условию, в массиве нет.
