JavaRush /Java блог /Архив info.javarush /Кухня(); Задание N2.
terranum
28 уровень
Milan

Кухня(); Задание N2.

Статья из группы Архив info.javarush
Кухня(); Задание N2. - 1 Правила [Одномерные массивы] 2. В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов.
Комментарии (12)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
timurnav Уровень 21
7 октября 2015
public static int[] method(int[] array){
        int[] tmp = new int[array.length];
        int count = 0;
        for (int i = 0; i < array.length; i++) {
            if(array[i]==0) tmp[count++] = i;
        }
        return Arrays.copyOf(tmp, count);
    }
RabenokDmitry Уровень 21
4 февраля 2015
Интересное решение c Arrays.copyOf позаимствовал у Docktor91 :)


    public static int[] getIndexZeroElements(int[] array) {
        int[] result = new int[0];
        for (int i = 0; i < array.length; i++) {
            if (array[i] == 0) {
                result = Arrays.copyOf(result, result.length + 1);
                result[result.length - 1] = i;
            }
        }

        return result;

    }
Kashey Уровень 11
13 сентября 2014
У меня так получилось, по простому. На большее пока не выучился :)
public static int[] getIndexZeroArray(int[] array)
    {
        int count = 0;
        for (int i = 0; i < array.length; i++)
        {
            if (array[i] == 0) count++;
        }

        int[] newArray = new int[count];
        count = 0;
        for (int i = 0; i < array.length; i++)
        {
            if (array[i] == 0) newArray[count++] = i;
        }
        return newArray;
}
Docktor91 Уровень 40
20 августа 2014
более компактная версия Voronblack
public static int[] zerosIndexArray (int[] arr)
    {
        if (arr.length==0)
            return null;
        int[] result = new int[0];
        for(int i = 0; i < arr.length; i++ )
        {
            if (arr[i] == 0)
            {
                result = Arrays.copyOf(result, result.length + 1);
                result[result.length - 1] = i;
            }
        }
        return result;
    }
Voronblack Уровень 17
19 августа 2014
Если я правильно понял задание и правила, а так же в связи с отсутствием динамичных массивов (не коллекций), начудил следующее
public static int[] zerosIndexArray (int[] arr)
    {
        int count = 1;
        int[] temp = new int[1];
        int[] zerroarr = null;

        if(!(arr.length == 0))
        for(int i = 0; i < arr.length; i++ )
            if(arr[i] == 0)
            {

                temp[count-1] = i;
                zerroarr = new int[count];
                zerroarr = temp.clone();             
                count++;
                temp = Arrays.copyOf(zerroarr, zerroarr.length + 1);              
            }
            temp = null;

        return zerroarr;
    }
Lars Уровень 29
17 августа 2014
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Solution {

    public static void main(String args[]) throws IOException {

        System.out.println("Введите количество элементов массива: ");
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        int kolEl=Integer.parseInt(reader.readLine());

        if (kolEl>0)
        {
          int arr[]=new int[kolEl];
          System.out.println("Введите элементы массива: ");
          for (int i=0;i<kolEl;i++)
          {
              arr[i]=Integer.parseInt(reader.readLine());
          }
          int arrNol[]=createArray(arr, kolEl);
        }
        else
        {
            System.out.println("Количество элементов меньше или равно 0");
        }

    }

    public static int[] createArray(int arr[], int kolEl)
    {

           int kol=0;
           for (int i=0;i<arr.length;i++)
           {
               if (arr[i]==0)
                   kol++;
           }
           if (kol>0)
           {
              int arrNol[]=new int [kol];
              int index=0;
              for (int i=0;i<arr.length;i++)
              {
                 if(arr[i]==0)
                 {
                     arrNol[index]=i;
                     index++;
                 }
              }
              System.out.print("Массив номеров нулевых элементов: ");
              for (int i=0;i<arrNol.length;i++)
              {
                  if (i==arrNol.length-1)
                      System.out.print(arrNol[i]);
                  else
                     System.out.print(arrNol[i]+" ");
              }

              return arrNol;
           }
           else
           {
               System.out.println("В массиве нет элементов равных 0");
               return null;
           }

    }
}


Чуток пе
Lars Уровень 29
17 августа 2014
public class Solution {

    public static void main(String args[]) throws IOException {

        System.out.println("Введите количество элементов массива: ");
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        int kolEl=Integer.parseInt(reader.readLine());
        int arr[]=new int[kolEl];
        if (kolEl>0)
        {
          System.out.println("Введите элементы массива: ");
          for (int i=0;i<kolEl;i++)
          {
              arr[i]=Integer.parseInt(reader.readLine());
          }
          int arrNol[]=createArray(arr, kolEl);
        }
        else
        {
            System.out.println("Количество элементов меньше 0");
        }

    }

    public static int[] createArray(int arr[], int kolEl)
    {

           int kol=0;
           for (int i=0;i<arr.length;i++)
           {
               if (arr[i]==0)
                   kol++;
           }
           if (kol>0)
           {
              int arrNol[]=new int [kol];
              int index=0;
              for (int i=0;i<arr.length;i++)
              {
                 if(arr[i]==0)
                 {
                     arrNol[index]=i;
                     index++;
                 }
              }
              System.out.print("Массив номеров нулевых элементов: ");
              for (int i=0;i<arrNol.length;i++)
              {
                  if (i==arrNol.length-1)
                      System.out.print(arrNol[i]);
                  else
                     System.out.print(arrNol[i]+" ");
              }

              return arrNol;
           }
           else
           {
               System.out.println("В массиве нет элементов равных 0");
               return null;
           }

    }
}


Писал на «скорую руку», вроде бы все учел. Можно еще