Uploaded by Marishka_grd

laba

advertisement
Задание:
Имеется несколько одномерных массивов. Для каждого из них:
1. Найти элемент с минимальным значением
2. Найти номера всех элементов с минимальным значением
3. Определить количество минимальных элементов
4. Определить 3 последовательных элемента(и их индексы), сумма которых в массиве
максимальна
5. Определить максимальную сумму 3 последовательных элементов
Листинг программы
//Основной класс
import java.util.ArrayList;
import java.util.Scanner;
public class Lab1_n {
public static void main(String args[]){
WorkArr obj;
while(true){
Lab1_n.menu();
int chislo=Lab1_n.check();
if (chislo>5)
continue;
if(chislo==0)
break;
obj= new WorkArr();
ArrayList MassIndex= new ArrayList();
MassIndex=obj.searchMinIndexMass();
switch (chislo){
case 1://поиск мин элемента
System.out.println("Минимальный элементн = " +obj.searchMin());
break;
case 2://поиск номеров всех минимальных значений
System.out.println("Индексы минимального элемента:");
for(int j=0;j<MassIndex.size();j++)
System.out.println((int)(MassIndex.get(j))+1);
break;
case 3:// поиск количества минимальных элементов
System.out.println("Количество минимальных элементов в массиве = "+MassIndex.size());
break;
case 4://определить 3 последовательных элемента,сумма которых в массиве максимальна
if(obj.getSizeMass()>=3){
int index_1=obj.search3Elements();
System.out.println("Три последовательных элемента с максимальной суммой:" +
"\nЭлемент_" + (index_1+1) + "=" + obj.getMassElement(index_1) +
"\nЭлемент_" + (index_1+2) + "=" + obj.getMassElement(index_1+1) +
"\nЭлемент_" + (index_1+3) + "=" + obj.getMassElement(index_1+2));
}
else{
System.out.println("Количество элементов в массиве < 3");
}
break;
case 5://просмотр максимальной суммы 3 последовательных элементов
if(obj.getSizeMass()>=3){
int index_1=obj.search3Elements();
System.out.println("Максимальная сумма трех последовательных элементов = " +
(obj.getMassElement(index_1)+obj.getMassElement(index_1+1)+obj.getMassElement(index_1+2)) );
}
else{
System.out.println("Количество элементов в массиве < 3");
}
break;
}
}
}
public static void menu(){
System.out.println(" 1) найти элемент с минимальным значением\n" +
"2) найти номера всех элементов с минимальным значением\n" +
2
"3) определить количество минимальных элементов\n" +
"4) определить 3 последовательных элемента(и их индексы),сумма которых в
массиве максимальна\n" +
"5) определить максимальную сумму трех последовательных элементов\n" +
"Для выхода нажмите 0");
}
public static int check(){
int numb;
Scanner scn = new Scanner(System.in);
//scn.useDelimiter(" ");
while(true){
if(scn.hasNextInt()){
numb=scn.nextInt();
return numb;
}
else{
System.out.println("Not an integer entered, please, repeat input");
String str=scn.next();
}
}
}
}
//класс «Действия с массивом»
import java.util.ArrayList;
import java.util.Scanner;
public class workWithArray {
private int mass[];//исходный массив
public workWithArray(){
System.out.println("Введите количество элементов массива");
int N;
while(true){
N=check();
if(N>0)
3
break;
}
mass= new int[N];
System.out.println("Заполните массив из "+ N +" элементов:");
for(int i=0;i<mass.length;i++)
mass[i]=check();
}
public int getMassElement(int indx){
return this.mass[indx];
}
public int getSizeMass(){
return mass.length;
}
public int searchMin(){
int min=mass[mass.length-1];
for(int i=0;i<mass.length-1; i++){
if (mass[i]<min)
min=mass[i];
}
return min;
}
public ArrayList searchMinIndexMass(){
int min=this.searchMin();
ArrayList massIndex=new ArrayList();
for(int i=0;i<mass.length;i++){
if(mass[i]==min){
massIndex.add(i);
}
}
return massIndex;
}
public int search3Elements(){//возвращает индекс первого элемента в искомой последовательности
int maxSumm=this.mass[0]+this.mass[1]+this.mass[2];
4
int index=0;
for(int i=1;i<this.mass.length-2;i++){
if (this.mass[i]+this.mass[i+1]+this.mass[i+2]>maxSumm){
index=i;
maxSumm=this.mass[i]+this.mass[i+1]+this.mass[i+2];
}
}
return index;
}
public static int check(){
int numb;
Scanner scn = new Scanner(System.in);
//scn.useDelimiter(" ");
while(true){
if(scn.hasNextInt()){
numb=scn.nextInt();
return numb;
}
else{
System.out.println("Введено не целое число");
String str=scn.next();
}
}
scn.close();
}
}
5
Скриншоты
Рисунок 1 Поиск минимального элемента
Рисунок 2 Поиск номеров всех элементов с минимальным значением
6
Рисунок 3 Определение количества мин элементов и определение 3 последовательных элементов,
сумма которых максимальна
Рисунок 4 Определение максимальной суммы 3 последовательных элементов
7
Download