1 Востаннє редагувалося darsteba (08.03.2019 23:17:36)

Тема: присвоїти останньому елементові масива 0

Є масив,в ньому находжу та видаляю макс елемент,підкажіть борди,чи,якщо не важко скажіть тут,як присвоїти останньому елементові 0 ?
Недавно перейшов на джаву,шукав в інтернеті,так би мовити:для чайників,але нічого щось не знайшов,під себе.
Постійно з подібними задачами проблеми маю.

2 Востаннє редагувалося Chemist-i (10.03.2019 00:00:58)

Re: присвоїти останньому елементові масива 0

Це неправильно

Прихований текст

мені здається як і в Сі,

array[lastElementNum] := 0;

3

Re: присвоїти останньому елементові масива 0

Chemist-i написав:

мені здається як і в Сі,

array[lastElementNum] := 0;

дякую,а можна якусь тему,чи статтю де описують як видалять макс,мін елементи в масиві,саме  по джаві.
А то робити - роблю,та не можу ніяк зрозуміти.

4

Re: присвоїти останньому елементові масива 0

darsteba написав:

Є масив,в ньому находжу та видаляю макс елемент
...
дякую,а можна якусь тему,чи статтю де описують як видалять макс,мін елементи в масиві,саме  по джаві.
А то робити - роблю,та не можу ніяк зрозуміти.

А давайте ви спокійно розповісте, що саме ви робите і що у вас не виходить. У першому дописі ви казали, що "находжу та видаляю макс елемент", а в останньому - "робити - роблю,та не можу ніяк зрозуміти". Повірте, у нас ще менше вийде зрозуміти, що ви робите, хоча б з тієї причини, що ви нам не показуєте, що саме ви робите. Код викладіть.

5 Востаннє редагувалося darsteba (09.03.2019 00:10:45)

Re: присвоїти останньому елементові масива 0

Зробити я можу,але не розумію.
Як в укр.м - завчив і все,наче правило.
Ось код-

package lab5;


 
class dell
{
    public static int [] delMax(int [] Arr)
    {
        int n=Arr.length;
        int [] r = new int[n-1];
        int i,j,max=Arr[0],imax=0;
        for (i=1; i<n; i++) 
        {
            if (Arr[i]>max)
            {
                imax=i;
                max=Arr[i];
            }
        }
        j=0;
        for (i=0; i<n; i++)
        {
            if (i != imax)
            {
                r[j++]=Arr[i];
            }
            
        }
      
        return r;
               
    }
    
    
    public static void printArr(int [] Arr)
    {
        for (int i=0; i<Arr.length; i++) 
        {
            System.out.print(Arr[i]+" ");
            
        }
        System.out.println();
      
    }
    
    public static void main (String[] args) throws java.lang.Exception
    {
        int[] times = {341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412, 393, 299, 343, 317, 265};
        
        System.out.println("Масив :");
        printArr(times);
        System.out.println("Масив без макс елементу :");
        printArr(delMax(times));
    }
}

6

Re: присвоїти останньому елементові масива 0

Насправді, такої дії, як "видалити з масиву елемент", не існує. Масив - це неперервна область пам'яті, з нього неможливо нічого видалити. Коли кажуть, що треба видалити щось із масиву, мають на увазі зробити якусь іншу дію, в результаті якої вийде такий масив, в якому не буде того чогось.
Ваш код створює новий масив і переносить у нього всі елементи старого, крім максимального. Так можна, але судячи з умови, вам треба пересунути у вашому масиві всі елементи, починаючи з того, що йде за максимальним, на 1 назад:

1 2 5 4 3
↓ ↓  ↙ ↙
1 2 4 3 X

При цьому незрозуміло, як має бути значення останнього елементу - а в умові якраз і кажуть, що там має бути 0. Запрограмуєте таке?

Подякували: Arete, fff02

7 Востаннє редагувалося darsteba (09.03.2019 00:54:03)

Re: присвоїти останньому елементові масива 0

koala написав:

Насправді, такої дії, як "видалити з масиву елемент", не існує. Масив - це неперервна область пам'яті, з нього неможливо нічого видалити. Коли кажуть, що треба видалити щось із масиву, мають на увазі зробити якусь іншу дію, в результаті якої вийде такий масив, в якому не буде того чогось.
Ваш код створює новий масив і переносить у нього всі елементи старого, крім максимального. Так можна, але судячи з умови, вам треба пересунути у вашому масиві всі елементи, починаючи з того, що йде за максимальним, на 1 назад:

1 2 5 4 3
↓ ↓  ↙ ↙
1 2 4 3 X

При цьому незрозуміло, як має бути значення останнього елементу - а в умові якраз і кажуть, що там має бути 0. Запрограмуєте таке?

та.
Я це і маю зробити,от і зроблю,але без розуміння.
Я підійду до викладача,щоб він мені розтлумачив,так би мовити цю формулу,та просто хотів сам знайти інформацію.
p.s я не буду його просити що він мені це зробив,до того часу я і сам зможу,просто пояснення.В цілому я розумію що в масиві робиться з елементами і як воно працює,але на словах.

8

Re: присвоїти останньому елементові масива 0

Chemist-i написав:

мені здається як і в Сі,

array[lastElementNum] := 0;

Відколи це в Сі (та й у Джаві) використовується паскалівський оператор присвоєння? :)

Далі, якщо це Java, то замість lastElementNum (очевидно, якоїсь константи чи змінної) можна підставити array.length-1 — на відміну від Сі, Java дозволяє отримувати інформацію про розмір масиву безпосередньо з самого масиву. Аналогічно, якщо треба обнулити передостанній елемент чи, краще, n-ий елемент з кінця, то робимо array[array.legth-n]=0;

Видалення елементів масива — технічно, це можна зробити, створивши новий масив меншого розміру, переписавши в нього лише потрібні елементи зі старого масиву й переприсвоївши новий масив старому, але краще не робити так надто часто — виділення/звільнення пам'яті є відносно дорогим і знижуватиме швидкодію (крім того, цю послідовність дій складніше винести в окрему функцію — адже всі параметри передаються як значення, і останній крок (переприсвоєння) не відобразиться на змінній, переданій як параметр). Або ж можна зміщувати елементи в тому ж масиві, як показав вище пан koala, а інформацію про кількість фактично використовуваних елементів зберігати в окремій змінній. Узагалі, якщо часто виникає потреба видаляти чи вставляти елементи в масиві, це ознака того, що, можливо, замість нього слід використати список — одну з реалізацій інтерфейсу java.util.List (імовірно, LinkedList).

Подякували: Chemist-i, leofun012

9

Re: присвоїти останньому елементові масива 0

Прихований текст
P.Y. написав:
Chemist-i написав:

мені здається як і в Сі,

array[lastElementNum] := 0;

Відколи це в Сі (та й у Джаві) використовується паскалівський оператор присвоєння? :)

Винуватий, виправлюсь. Давно не писав вже нічого, позабував все на світі.

10

Re: присвоїти останньому елементові масива 0

щось не вийшло в мене.

Годину листав гугл,там одна і так ж строка: Arr[i-1]=0,та в моєму випадку вона робить останнє число 0-ем.
Я розумію,що рішення просте,та,як на зло не можу його побачити.
Що я роблю не так?

11 Востаннє редагувалося darsteba (17.03.2019 21:07:42)

Re: присвоїти останньому елементові масива 0

Arr[Arr.length - 1]=0; також додавав  // робить те ж саме

Подякували: fff01

12

Re: присвоїти останньому елементові масива 0

Головне, що ви робите не так - це не пишете, що ви хочете зробити і як ви це намагаєтеся зробити. Так, я розумію, що для вас це очевидно, але я читаю цю тему і бачу:

darsteba написав:

як присвоїти останньому елементові 0 ?

darsteba написав:

Arr[i-1]=0,та в моєму випадку вона робить останнє число 0-ем... Що я роблю не так?

Ви десь змінили питання в голові, і наразі не бачите, що самі відповідаєте на питання, яке ставите.
Коли ставите питання на форумі - завжди намагайтеся формулювати його якомога точніше. Заради себе самого. 80% питань вже містять відповідь, треба лише їх сформулювати.

13

Re: присвоїти останньому елементові масива 0

darsteba написав:

Arr[Arr.length - 1]=0;

Ви маєте на увазі, чому там "-1"?
Бо по-моєму в кінці масиву вже стоїть 0, 0-термінований чи щось таке
Arr[Arr.length] вже по ідеї дорівнює 0. я може помиляюсь

14

Re: присвоїти останньому елементові масива 0

Ви помиляєтеся. Спроба звернутися до  Arr[Arr.length] призведе до помилки, елементи масиву мають номери від 0 до Arr.length-1.
А я маю на увазі, що ви не формулюєте питання, на які шукаєте відповіді. І зараз ви теж своє питання не сформулювали.

15

Re: присвоїти останньому елементові масива 0

koala написав:

Насправді, такої дії, як "видалити з масиву елемент", не існує. Масив - це неперервна область пам'яті, з нього неможливо нічого видалити. Коли кажуть, що треба видалити щось із масиву, мають на увазі зробити якусь іншу дію, в результаті якої вийде такий масив, в якому не буде того чогось.
Ваш код створює новий масив і переносить у нього всі елементи старого, крім максимального. Так можна, але судячи з умови, вам треба пересунути у вашому масиві всі елементи, починаючи з того, що йде за максимальним, на 1 назад:

1 2 5 4 3
↓ ↓  ↙ ↙
1 2 4 3 X

При цьому незрозуміло, як має бути значення останнього елементу - а в умові якраз і кажуть, що там має бути 0. Запрограмуєте таке?

та він писав j++ а не i. тобто на 1 назад і пересунуто...

16

Re: присвоїти останньому елементові масива 0

вже зробив,там 2 строки додав