powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Многомерный массив
25 сообщений из 34, страница 1 из 2
Многомерный массив
    #38664478
beginner123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые гуру!

Помогите, пожалуйста, понять и разобраться!
Есть некий квадратный двухмерный массив int`ов, его необходимо заполнить таким образом (песочные часы):

# # # # #
- # # # -
- - # - -
- # # # -
# # # # #

Наваял такой код:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public static void main(String[] args) {
	int S = 5;
	char arr[][] = new char[S][S];
	
	for(int i = 0; i < S; i++) {
		for (int j = 0; j < S; j++) {
			if(i == 0 || i == S-1 || j == (S/2)) {
				arr[i][j] = '#';
			}
			else {
				arr[i][j] = '-';
			}
		}
	}		
	// Вывод массива
	for (int i = 0; i < arr.length; i++) {
		for (int j = 0; j < arr[i].length; j++) {
			System.out.print(arr[i][j] + " ");
		}
		System.out.println();
	}		
}



но он работает только наполовину (((...
Подскажите, пожалуйста, что я упустил?..
...
Рейтинг: 0 / 0
Многомерный массив
    #38664532
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginner123,

Алгоритм заполнения:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
for (int i = 0; i <= arr.length / 2; i++) {
    for (int j = 0; j < i; j++) {
        arr[i][j] = arr[i][arr.length - j - 1] = '-';
        arr[arr.length - i - 1][j] = '-';
        arr[arr.length - i - 1][arr.length - j - 1] = '-';
    }
    for (int j = i; j < arr[i].length - i; j++) {
        arr[i][j] = arr[arr.length - i - 1][j] = '#';
    }
}

P.S.
S должна быть всегда нечетной!
...
Рейтинг: 0 / 0
Многомерный массив
    #38664576
beginner123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman ,
огромное вам спасибо! Все работает! И теперь я вижу, как это работает, хотя изначально алгоритмически я представлял иначе, что оказалось неправильным...
...
Рейтинг: 0 / 0
Многомерный массив
    #38664700
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант через арифм. прогрессию:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
		int S = 31;
		char arr[][] = new char[S][S];
				
		for(int i = 0, t = 0; i < S; i++) {
			if(i == S/2) t = 1;
			int bn = Math.abs(S-2+(-2)*(i-t));
			for(int j = 0; j < S; j++){
				if(i != S/2 && j>=(S-bn)/2 && j<(S-bn)/2+bn) arr[j][i] = '-';
				else arr[j][i] = '#';
			}
		}		
		
		
		// Вывод массива
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}



Хотел сделать вообще секси, но там в самой середине ряд из # помешал (пришлось вводить t) и Array.fill не заполняет по вертикали ((.
...
Рейтинг: 0 / 0
Многомерный массив
    #38664703
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS Работает и с четными, но тогда в середине не один стобик из # а два.
...
Рейтинг: 0 / 0
Многомерный массив
    #38664721
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892,
Код: java
1.
2.
3.
4.
  for(int i = 0; i < S; i++) 
    for(int j = 0; j < S; j++)
      if(i != S/2 && j>=(S-Math.abs(S-2+(-2)*(i-((i >= S/2)?1:0))))/2 && j<(S-Math.abs(S-2+(-2)*(i-((i >= S/2)?1:0))))/2+Math.abs(S-2+(-2)*(i-((i >= S/2)?1:0)))) arr[j][i] = '-';
      else arr[j][i] = '#';	


Лайфхак-инлайн, 4 строчки)
...
Рейтинг: 0 / 0
Многомерный массив
    #38664826
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте более интересные начальные условия. Фигура с центральной симметрией.
Код: java
1.
2.
3.
4.
5.
# # # - -
- # # - -
- - # - -
- - # # -
- - # # #
...
Рейтинг: 0 / 0
Многомерный массив
    #38664827
beginner123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
no56892 ,

Спасибище огромное! Все варианты супер! ))) Буду курить яву дальше! :D
...
Рейтинг: 0 / 0
Многомерный массив
    #38664831
beginner123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДавайте более интересные начальные условия.

Нивапрос! ))))
Написал такой код по поиску чисел в массиве:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
int arr[] = new int[20];
Random rand = new Random();
for(int i = 0; i < arr.length; i++) {
	arr[i] = rand.nextInt(100000);
}

int a = 0;
for(int i = 0; i < arr.length; i++) {
	if(a < arr[i]) a = arr[i];
	System.out.println("[" + i + "] - " + arr[i]);
}
System.out.println(a + " - максимальное число");


Самое большое значение среди элементов нахожу, но как правильно найти 2-й, 3-й и т.д. по величине элемент в массиве + наиболее повторяющийся (если есть) + самую длинную последовательность чисел среди элементов? И возможно ли это единой итерацией?
...
Рейтинг: 0 / 0
Многомерный массив
    #38664840
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892,
Одной строчкой:
Код: java
1.
for(int i=0;i<S;i++)for(int j=0;j<S;j++)arr[j][i]=(i!=S/2&&j>=(S-Math.abs(S-2+(-2)*(i-((i>=S/2)?1:0))))/2&&j<(S-Math.abs(S-2+(-2)*(i-((i>=S/2)?1:0))))/2+Math.abs(S-2+(-2)*(i-((i>= S/2)?1:0)))==true)?'-':'#';


Эстетическое чуство полностью удовлетворено.
...
Рейтинг: 0 / 0
Многомерный массив
    #38664853
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginner123,

Модификации:16138080 )
- Заполняем исключительно решетками;
- S может быть как четной, так и нечетной:
Код: java
1.
2.
3.
4.
5.
for (int i = 0; i < S / 2.; i++) {
    for (int j = i; j < S / 2.; j++) {
        arr[i][j] = arr[i][S - j - 1] = arr[S - i - 1][j] = arr[S - i - 1][S - j - 1] = '#';
    }
}

- Замена на '-' при выводе на экран:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// Вывод массива
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        if (arr[i][j] == 0) {
            arr[i][j] = '-';
        }
        System.out.print(arr[i][j] + " ");
    }
    System.out.println();
}
...
Рейтинг: 0 / 0
Многомерный массив
    #38665701
beginner123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman , no56892 ,

спасибо вам большущее за все предложенные варианты! Ваши первые версии то, что нужно! Спасибо!
...
Рейтинг: 0 / 0
Многомерный массив
    #38665703
beginner123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и быть может, кто-нибудь из вас знает хотя бы приблизительно, как можно сделать 16139842 ?..
...
Рейтинг: 0 / 0
Многомерный массив
    #38665713
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginner123и быть может, кто-нибудь из вас знает хотя бы приблизительно, как можно сделать 16139842 ?..
Код: java
1.
2.
3.
4.
5.
for (int i = 0; i < S / 2.; i++) {
    for (int j = i; j < S / 2.; j++) {
        arr[i][j] = arr[S - i - 1][S - j - 1] = '#';
    }
}		
...
Рейтинг: 0 / 0
Многомерный массив
    #38665749
beginner123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman ,

не совсем вас понял...
...
Рейтинг: 0 / 0
Многомерный массив
    #38665789
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892, давай на Scala ато незачот.
...
Рейтинг: 0 / 0
Многомерный массив
    #38665808
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginner123 Usman ,

не совсем вас понял...Это решение к 16139748 :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
###########----------
-##########----------
--#########----------
---########----------
----#######----------
-----######----------
------#####----------
-------####----------
--------###----------
---------##----------
----------#----------
----------##---------
----------###--------
----------####-------
----------#####------
----------######-----
----------#######----
----------########---
----------#########--
----------##########-
----------###########
...
Рейтинг: 0 / 0
Многомерный массив
    #38665835
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginner123Самое большое значение среди элементов нахожу, но как правильно найти 2-й, 3-й и т.д. по величине элемент в массивеВаше решение - подходящее стандартное решение. Претензий нет.
beginner123наиболее повторяющийся (если есть)А если их несколько? Достаточно ли будет вывести (максимальное) число повторений?
beginner123самую длинную последовательность чисел среди элементовС выводом подпоследовательности? Или достаточно вывести ее длину?
И как на счет использования сортировок (т.е. порядок элементов играет роль)?
...
Рейтинг: 0 / 0
Многомерный массив
    #38667010
beginner123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman , вы подали правильную идею - отсортировать массив. Так и сделал. Теперь у меня гарантированно есть максимальный и минимальный элементы, и, теоретически 2-й и 3-й элементы, если они не повторяются...

UsmanА если одинаковых чисел несколько? Достаточно ли будет вывести (максимальное) число повторений?
...вот поэтому и есть необходимость в проверке на совпадения. Да, нужно вывести значение с количеством повторений.

UsmanС выводом подпоследовательности? Или достаточно вывести ее длину?
достаточно вывести ее длину.
...
Рейтинг: 0 / 0
Многомерный массив
    #38667044
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginner123UsmanС выводом подпоследовательности? Или достаточно вывести ее длину?
достаточно вывести ее длину.После сортировки весь массив превращается в длинную непрерывную (под-)последовательность.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public static void main(String[] args) {
    java.util.SortedMap<Integer, Integer> map = new java.util.TreeMap<>();
    java.util.Random rand = new java.util.Random();
    int maxVal = 0;
    for(int i = 0, num, count; i < 20; i++) { // 20 - число итераций (элементов)
        num = rand.nextInt(10);
        count = 1 + (map.containsKey(num) ? map.get(num): 0);
        map.put(num, count);
        if (count > maxVal) maxVal = count;
    }
    int min = map.firstKey();
    int max = map.lastKey();
    
    System.out.println(map);
    System.out.println(min + " - минимальное число");       
    System.out.println(max + " - максимальное число");      
    System.out.println(maxVal + " - максимальное число повторений");
}
...
Рейтинг: 0 / 0
Многомерный массив
    #38667954
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ну-кося.... Хто запилит вот такой вот формул?



А я потом своё решение подкину... Может быть.... Если осилю
...
Рейтинг: 0 / 0
Многомерный массив
    #38668035
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Вот такой быдлокод :)

Код: java
1.
2.
3.
4.
5.
double e = 10000;
for(int n = 10000; n >= 1; --n) {
	e = n + n / e;
}
e = 2 + 1 / e;
...
Рейтинг: 0 / 0
Многомерный массив
    #38668037
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему десять тыщ? И можно-ли цикл развернуть?
...
Рейтинг: 0 / 0
Многомерный массив
    #38668041
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА почему десять тыщ? И можно-ли цикл развернуть?
в бесконечность?
...
Рейтинг: 0 / 0
Многомерный массив
    #38668049
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Майн гот! А интересно как-там погрешность считать?
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Многомерный массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]