Массивы, многомерные массивы
Массивы
1. Задание
Создайте массив из всех чётных чисел от 2 до 20 и выведите элементы массива на экран сначала в строку, отделяя один элемент от другого пробелом, а затем в столбик (отделяя один элемент от другого началом новой строки). Перед созданием массива подумайте, какого он будет размера.
2 4 6 … 18 20
2
4
6
…
20
public class one { public static void main(String[] args) { int[] mas = new int[10]; for(int i=0,n=2; i<mas.length; n=n+2,i++){ mas[i] = n; } for(int i=0; i<mas.length; i++) { System.out.print(mas[i]+" "); } System.out.println(); for(int i=0; i<mas.length; i++) { System.out.println(mas[i]); } } }
2. Задание
Создайте массив из всех нечётных чисел от 1 до 99, выведите его на экран в строку, а затем этот же массив выведите на экран тоже в строку, но в обратном порядке (99 97 95 93 … 7 5 3 1).
public class two { public static void main(String[] args) { int[] mas = new int[50]; for(int i=0,n=1; i<mas.length; n=n+2,i++){ mas[i] = n; } for(int i=mas.length-1; i>=0; i--) { System.out.print(mas[i]+" "); } } }
3. Задание
Создайте массив из 15 случайных целых чисел из отрезка [0;9]. Выведите массив на экран. Подсчитайте сколько в массиве чётных элементов и выведете это количество на экран на отдельной строке.
public class three { public static void main(String[] args) { int[] mas = new int[15]; int j; j = 0; for(int i=0; i<mas.length; i++){ mas[i] = (int)(Math.random()*10); } for(int i=0; i<mas.length; i++) { if(mas[i]%2==0) { j++; } System.out.print(mas[i]+" "); } System.out.println(); System.out.println(j); } }
4. Задание
Создайте массив из 8 случайных целых чисел из отрезка [1;10]. Выведите массив на экран в строку. Замените каждый элемент с нечётным индексом на ноль. Снова выведете массив на экран на отдельной строке.
public class four { public static void main(String[] args) { int[] mas = new int[8]; for(int i=0; i<mas.length; i++){ mas[i] = (int)(Math.random()*10+1); } for(int i=0; i<mas.length; i++){ System.out.print(mas[i]+" "); } System.out.println(); for(int i=0; i<mas.length; i++) { if(i%2==0) { mas[i]=0; } System.out.print(mas[i]+" "); } } }
5. Задание
Создайте 2 массива из 5 случайных целых чисел из отрезка [0;5] каждый, выведите массивы на экран в двух отдельных строках. Посчитайте среднее арифметическое элементов каждого массива и сообщите, для какого из массивов это значение оказалось больше (либо сообщите, что их средние арифметические равны).
public class five { public static void main(String[] args) { int[] mas1 = new int[5], mas2 = new int[5]; int s1, s2; double a1, a2; s1 = 0; s2 = 0; for(int i=0; i<mas1.length; i++){ mas1[i] = (int)(Math.random()*6); mas2[i] = (int)(Math.random()*6); } for(int i=0; i<mas1.length; i++) { System.out.print(mas1[i]+" "); } System.out.println(); for(int i=0; i<mas2.length; i++) { System.out.print(mas2[i]+" "); } for(int i=0; i<mas1.length; i++){ s1 = s1+mas1[i]; } for(int i=0; i<mas2.length; i++){ s2 = s2+mas2[i]; } System.out.println(); a1 = (double)s1/5; a2 = (double)s2/5; if(a1<a2) { System.out.println("Srednee arifmeticheskoje pervogo massiva menjshe srednego arifmethicheskogo vtorogo massiva"); } else if(a2<a1) { System.out.println("Srednee arifmeticheskoje vtorogo massiva menjshe srednego arifmethicheskogo pervogo massiva"); } else { System.out.println("Srednije arifmethicheskije ravni drug drugu"); } } }
6. Задание
Создайте массив из 4 случайных целых чисел из отрезка [10;99], выведите его на экран в строку. Определить и вывести на экран сообщение о том, является ли массив строго возрастающей последовательностью.
public class six { public static void main(String[] args) { int[] mas = new int[4]; int flag; flag = 0; for(int i=0; i<mas.length; i++){ mas[i] = (int)(Math.random()*89+10); } for(int i=0; i<mas.length; i++) { System.out.print(mas[i]+" "); } System.out.println(); for(int i=0; i<mas.length-1; i++) { if(mas[i]>mas[i+1]) { flag = 1; break; } } if(flag==1) { System.out.println("Posledovatelnost ne yavljaetsa strogo vozrastajyshej"); } else { System.out.println("Posledovatelnost yavljaetsa strogo vozrastajyshej"); } } }
7. Задание
Создайте массив из 20-ти первых чисел Фибоначчи и выведите его на экран. Напоминаем, что первый и второй члены последовательности равны единицам, а каждый следующий — сумме двух предыдущих.
public class seven { public static void main(String[] args) { int[] mas = new int[20]; for(int i=0, n1=1, n2=1; i<mas.length; i++){ if(i%2==0) { n1=n1+n2; mas[i] = n1; } else { n2=n1+n2; mas[i] = n2; } } for(int i=0; i<mas.length; i++) { System.out.print(mas[i]+" "); } } }
8. Задание
Создайте массив из 12 случайных целых чисел из отрезка [-15;15]. Определите какой элемент является в этом массиве максимальным и сообщите индекс его последнего вхождения в массив.
public class eight { public static void main(String[] args) { int[] mas = new int[12]; int max=0,j=0; for(int i=0; i<mas.length; i++){ mas[i]=(int)(Math.random()*31-15); System.out.print(mas[i]+" "); } for(int i=0; i<mas.length; i++) { if(mas[i]>=max) { max = mas[i]; j = i; } } System.out.println("\nMaximalnim elementom massiva yavljaetsa "+mas[j]); System.out.println("Indeks ego poslednego vhojdeniya - "+j); } }
9. Задание
Создайте два массива из 10 целых случайных чисел из отрезка [1;9] и третий массив из 10 действительных чисел. Каждый элемент с i-ым индексом третьего массива должен равняться отношению элемента из первого массива с i-ым индексом к элементу из второго массива с i-ым индексом. Вывести все три массива на экран (каждый на отдельной строке), затем вывести количество целых элементов в третьем массиве.
public class nine { public static void main(String[] args) { int[] mas1 = new int[10], mas2 = new int[10]; double[] mas3 = new double[10]; int j; j = 0; for(int i=0; i<mas1.length; i++){ mas1[i]=(int)(Math.random()*9+1); mas2[i]=(int)(Math.random()*9+1); mas3[i]=(double)mas1[i]/mas2[i]; System.out.print(mas1[i]+" "); } System.out.println(); for(int i=0; i<mas2.length; i++) { System.out.print(mas2[i]+" "); } System.out.println(); for(int i=0; i<mas3.length; i++) { System.out.print(mas3[i]+" "); if(mas3[i]%1==0) { j++; } } System.out.println("\n Kolichestvo tselih elementov v massive 3 ravno "+j); } }
10. Задание
Создайте массив из 11 случайных целых чисел из отрезка [-1;1], выведите массив на экран в строку. Определите какой элемент встречается в массиве чаще всего и выведите об этом сообщение на экран. Если два каких-то элемента встречаются одинаковое количество раз, то не выводите ничего.
public class ten { public static void main(String[] args) { int[] mas = new int[11]; int a=0,b=0,c=0; for(int i=0; i<mas.length; i++){ mas[i]=(int)(Math.random()*4-2); System.out.print(mas[i]+" "); } System.out.println(); for(int i=0; i<mas.length; i++) { if(mas[i]==-1) { a++; } else if(mas[i]==1) { b++; } else { c++; } } if(a>b&&a>c) { System.out.println("\nBoljshe vsego chisel, ravnih -1, ih "+a); } else if(b>a&&b>c) { System.out.println("\nBoljshe vsego chisel, ravnih 1, ih "+b); } else if(c>a&&c>b) { System.out.println("\nBoljshe vsego chisel, ravnih 0, ih "+c); } } }
11. Задание
Пользователь должен указать с клавиатуры чётное положительное число, а программа должна создать массив указанного размера из случайных целых чисел из [-5;5] и вывести его на экран в строку. После этого программа должна определить и сообщить пользователю о том, сумма модулей какой половины массива больше: левой или правой, либо сообщить, что эти суммы модулей равны. Если пользователь введёт неподходящее число, то программа должна требовать повторного ввода до тех пор, пока не будет указано корректное значение.
import java.util.Scanner; public class eleven { public static void main(String[] args) { int n=0,a,s1=0,s2=0; do { System.out.print("Vvedite chislo: "); Scanner sc = new Scanner(System.in); if(sc.hasNextInt()) { n = sc.nextInt(); if(n>0&&n%2==0) { int[] mas = new int[n]; for(int i=0; i<mas.length; i++) { mas[i] = (int)(Math.random()*12-6); System.out.print(mas[i]+" "); } a = mas.length/2; for(int i=0; i<a; i++) { s1 = s1+Math.abs(mas[i]); } for(int i=a; i<mas.length; i++) { s2 = s2+Math.abs(mas[i]); } if(s1<s2) { System.out.print("Summa modulej 1-j polovini <"); } else if(s1>s2) { System.out.print("Summa modulej 2-j polovini <"); } else { System.out.print("Summa modulej ="); } } } }while(n<=0||n%2!=0); } }
12. Задание
Программа должна создать массив из 12 случайных целых чисел из отрезка [-10;10] таким образом, чтобы отрицательных и положительных элементов там было поровну и не было нулей. При этом порядок следования элементов должен быть случаен (т. е. не подходит вариант, когда в массиве постоянно выпадает сначала 6 положительных, а потом 6 отрицательных чисел или же когда элементы постоянно чередуются через один и пр.). Вывести полученный массив на экран.
public class twelve { public static void main(String[] args) { int[] mas = new int[12]; int p,o,ran,k,o1,p1,j,z; p = 0; o = 0; k = 0; for(int i=0; i<mas.length; i++) { do { mas[i] = (int)(Math.random()*21-10); }while(mas[i]==0); if(mas[i]<0) { o++; } else { p++; } System.out.print(mas[i]+" "); } System.out.println(); System.out.println(o+" "+p); System.out.println(); j = 0; z = 0; int[] mp = new int[p], mo = new int[o]; for(int i=0; i<mas.length; i++) { if(mas[i]>0) { mp[j] = i; j++; } else { mo[z] = i; z++; } } while(o>6) { do { ran = (int)(Math.random()*mo.length); }while(mo[ran]<0); k = mo[ran]; mo[ran] = -1; mas[k] = (int)(Math.random()*10+1); o--; } while(p>6) { do { ran = (int)(Math.random()*mp.length); }while(mp[ran]<0); k = mp[ran]; mp[ran] = -1; mas[k] = (int)(Math.random()*(-10)-1); p--; } System.out.println(o+" "+p); for(int i=0; i<mas.length; i++) { System.out.print(mas[i]+" "); } } }
13. Задание
Пользователь вводит с клавиатуры натуральное число большее 3, которое сохраняется в переменную n. Если пользователь ввёл не подходящее число, то программа должна просить пользователя повторить ввод. Создать массив из n случайных целых чисел из отрезка [0;n] и вывести его на экран. Создать второй массив только из чётных элементов первого массива, если они там есть, и вывести его на экран.
import java.util.Scanner; public class thirteen { public static void main(String[] args) { int n=0,a,s1=0,s2=0,j=0; do { System.out.print("Vvedite chislo: "); Scanner sc = new Scanner(System.in); if(sc.hasNextInt()) { n = sc.nextInt(); if(n>3) { int[] mas1 = new int[n]; for(int i=0; i<mas1.length; i++) { mas1[i] = (int)(Math.random()*(n+1)); System.out.print(mas1[i]+" "); if(mas1[i]%2==0) { j++; } } System.out.println("\n"); if(j!=0) { int[] mas2 = new int[j]; j = 0; for(int i=0; i<mas1.length; i++) { if(mas1[i]%2==0) { mas2[j] = mas1[i]; System.out.print(mas2[j]+" "); j++; } } } else { System.out.println("Chetnih elementov net"); } } } }while(n<=3); } }
Многомерные массивы
1. Задание
Создать двумерный массив из 8 строк по 5 столбцов в каждой из случайных целых чисел из отрезка [10;99]. Вывести массив на экран.
public class one { public static void main(String[] args) { int[][] mas = new int[5][8]; for(int i=0; i<mas.length; i++){ for(int j=0; j<mas[i].length; j++) { mas[i][j] = (int)(Math.random()*90+10); } } for(int i=0; i<mas.length; i++) { for(int j=0; j<mas[i].length; j++) { System.out.print(mas[i][j]+" "); } System.out.println(); } } }
2. Задание
Создать двумерный массив из 5 строк по 8 столбцов в каждой из случайных целых чисел из отрезка [-99;99]. Вывести массив на экран. После на отдельной строке вывести на экран значение максимального элемента этого массива (его индекс не имеет значения).
public class two { public static void main(String[] args) { int[][] mas = new int[7][4]; int max = -1000; for(int i=0; i<mas.length; i++){ for(int j=0; j<mas[i].length; j++) { mas[i][j] = (int)(Math.random()*-200+100); System.out.print(mas[i][j]+"\t"); } System.out.println(); } System.out.println(); for(int i=0; i<mas.length; i++) { for(int j=0; j<mas[i].length; j++) { if(max < mas[i][j]) { max = mas[i][j]; } } } System.out.println(max); } }
3. Задание
Cоздать двумерный массив из 7 строк по 4 столбца в каждой из случайных целых чисел из отрезка [-5;5]. Вывести массив на экран. Определить и вывести на экран индекс строки с наибольшим по модулю произведением элементов. Если таких строк несколько, то вывести индекс первой встретившейся из них.
public class three { public static void main(String[] args) { int[][] mas = new int[7][4]; int imax=0, pmax=0, p1=1; for(int i=0; i<mas.length; i++){ for(int j=0; j<mas[i].length; j++) { mas[i][j] = (int)(Math.random()*-6+6); System.out.print(mas[i][j]+"\t"); } System.out.println(); } System.out.println(); for(int i=0; i<mas.length; i++) { for(int j=0; j<mas[j].length; j++) { p1 = p1*mas[i][j]; } if(Math.abs(p1)>Math.abs(pmax)) { imax = i; pmax = p1; } System.out.println(i+" "+p1); p1 = 1; } System.out.println("\n"); System.out.println("Naiboljshij indeks: "+imax); } }
4. Задание
Создать двумерный массив из 6 строк по 7 столбцов в каждой из случайных целых чисел из отрезка [0;9]. Вывести массив на экран. Преобразовать массив таким образом, чтобы на первом месте в каждой строке стоял её наибольший элемент. При этом изменять состав массива нельзя, а можно только переставлять элементы в рамках одной строки. Порядок остальных элементов строки не важен (т.е. можно соврешить только одну перестановку, а можно отсортировать по убыванию каждую строку). Вывести преобразованный массив на экран.
public class four { public static void main(String[] args) { int[][] mas = new int[6][7]; int max, p1=1, temp; for(int i=0; i<mas.length; i++){ for(int j=0; j<mas[i].length; j++) { mas[i][j] = (int)(Math.random()*10); System.out.print(mas[i][j]+"\t"); } System.out.println(); } for(int i=0; i<mas.length; i++) { for(int j=mas[i].length-1; j>0; j--) { if(mas[i][j]>mas[i][j-1]) { max = mas[i][j]; mas[i][j] = mas[i][j-1]; mas[i][j-1] = max; } } } System.out.println("\n---------------------Sorted----------------------\n"); for(int i=0; i<mas.length; i++){ for(int j=0; j<mas[i].length; j++) { System.out.print(mas[i][j]+"\t"); } System.out.println(); } } }
5. Задание
Для проверки остаточных знаний учеников после летних каникул, учитель младших классов решил начинать каждый урок с того, чтобы задавать каждому ученику пример из таблицы умножения, но в классе 15 человек, а примеры среди них не должны повторяться. В помощь учителю напишите программу, которая будет выводить на экран 15 случайных примеров из таблицы умножения (от 2*2 до 9*9, потому что задания по умножению на 1 и на 10 — слишком просты). При этом среди 15 примеров не должно быть повторяющихся (примеры 2*3 и 3*2 и им подобные пары считать повторяющимися).
public class five { public static void main(String[] args) { int[][] mas = new int[15][2]; boolean flag = true; for(int i=0; i<mas.length; i++){ mas[i][0] = (int)(Math.random()*8+2); mas[i][1] = (int)(Math.random()*8+2); if(i!=0){ do{ for(int j=0; j<i; j++) { if((mas[i][0]==mas[j][0]&&mas[i][1]==mas[j][1])||(mas[i][0]==mas[j][1]&&mas[i][1]==mas[j][0])) { //System.out.println("---\nDo:"+mas[i][0]+"\t"+mas[i][1]+"\n---"); mas[i][0] = (int)(Math.random()*8+2); mas[i][1] = (int)(Math.random()*8+2); flag = false; //System.out.println("---\nPosle:"+mas[i][0]+"\t"+mas[i][1]+"\n---"); break; } else { flag = true; } } }while(!flag); } if(flag) { System.out.println(mas[i][0]+" "+mas[i][1]); } else { System.out.println(mas[i][0]+"\t"+mas[i][1]); } flag = true; } } }
|