вторник, 8 ноября 2011 г.

Начали про массивы)))


Ой-ой-ой, как долго ничего тут не было)))

Сегодня мы с группой из Салавата начали разбираться с массивами. Для начала я хочу предложить список наиболее популярных и распространённых действий над массивами - в виде простых блоков (строго говоря, в этих случаях вполне можно не писать полноценные классы, а обойтись блоками команд - хотя, разумеется, для проверки надо будет написать класс целиком)



Задание №1
Заполнить массив целыми числами, ячейка за ячейкой, начиная с начальной ячейки и до последней ячейки в массиве.

Задание №2
Заполнить массив случайными числами, ячейка за ячейкой, начиная с последней ячейки массива и до первой ячейки в массиве.

Задание №3
Заполнить массив следующим образом: сначала заполняются ячейки с четными номерами (начиная с начала массива) - значениями, вводимыми с клавиатуры. Затем заполняются остальные ячейки - числами, равными сумме значений в соседних ячейках.

Задание №4
Вывести на экран в одну строку все значения ячеек массива, начиная с начала.

Задание №5
Вывести на экран все значения ячеек массива, начиная с последней ячейки.

Задание №6
Вывести на экран значения ячеек массива следующим образом: сначала первую половину массива (начиная с начальной ячейки массива), затем вторую половину массива (начиная с последней ячейки массива).

Задание №7
Заполнить массив следующим образом: сначала первую половину массива, начиная с первой ячейки массива, затем вторую половину массива копией первой половины массива.
Затем вывести всех значения ячеек массива, начиная с первой ячейки массива.

Задание №8
Найти максимальное значения в массиве.

Задание №9
Найти минимальное значение в массиве.

Задание №10
Найти, сколько раз в массиве встречается максимальное значение. Вывести на экран номера  всех ячеек, в которых встречается максимальное значение.

Задание №11
Найти, сколько раз в массиве встречается минимальное значение. Вывести на экран номера  всех ячеек, в которых встречается минимальное значение.

Задание №12
Подсчитать сумму значений массива и среднее арифметическое массива.

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


21 комментарий:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
  3. import java.util.*;
    class Z1
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = new int [3] ;
    for(int i = 0; i<3; i++)
    a[i]=reader.nextInt();
    System.out.println (Arrays.toString (a));}}

    import java.util.*;
    class Z2
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = new int [10] ;
    for(int i = 9; i>=0; i--)
    a[i]=(int)(100*Math.random())+1;
    System.out.println (Arrays.toString (a));}}

    ОтветитьУдалить
  4. import java.util.*;
    class Z3
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = new int [11] ;
    for(int i =0; i<11; i=i+2)
    a[i]=reader.nextInt();
    for(int j =1; j<11; j=j+2)
    a[j]=a[j-1]+a[j+1];
    System.out.println (Arrays.toString (a));}}

    import java.util.*;
    class Z4
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = new int [10] ;
    for(int i =0; i<10; i++)
    {
    a[i]=(int)(100*Math.random())+1;
    System.out.print (a[i]+" "); }}}

    ОтветитьУдалить
  5. import java.util.*;
    class Z5
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = {13,2,5,12,29,26};
    for(int i=5; i>=0; i--)
    System.out.print (a[i]+" ");}}

    import java.util.*;
    class Z6
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = {13,2,5,12,29,26};
    for(int i=0; i<3; i++)
    System.out.print (a[i]+" ");
    for(int i=5; i>2; i--)
    System.out.print (a[i]+" ");}}

    ОтветитьУдалить
  6. import java.util.*;
    class Z7
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = new int [10] ;
    for(int i =0; i<5; i++)
    a[i]=(int)(100*Math.random())+1;
    int n=-1;
    for(int j =5; j<10; j++)
    { n++;
    a [j]= a[n]; }
    System.out.println (Arrays.toString (a));}}

    import java.util.*;
    class Z8
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = {13,2,5,12,29,26};
    int max=a[0];
    for(int i=1; i<6; i++)
    if (a[i]>max) max=a[i];
    System.out.print ("max="+max);}}

    ОтветитьУдалить
  7. import java.util.*;
    class Z9
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = {13,2,5,12,29,26};
    int min=a[0];
    for(int i=1; i<6; i++)
    if (a[i]<min) min=a[i];
    System.out.print ("min="+min);}}

    import java.util.*;
    class Z10
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = {2,13,5,12,29,26};
    int max=a[0], n=0;
    for(int i=1; i<6; i++)
    if (a[i]>max) max=a[i];
    for(int i=0; i<6; i++)
    { if (a[i]==max)
    {n++;
    System.out.println (i);}}
    System.out.println (n+" раз");}}

    ОтветитьУдалить
  8. import java.util.*;
    class Z11
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = {2,13,5,12,29,26};
    int min=a[0], n=0;
    for(int i=1; i<6; i++)
    if (a[i]<min) min=a[i];
    for(int i=0; i<6; i++)
    { if (a[i]==min)
    {n++;
    System.out.println (i);}}
    System.out.println (n+" раз");}}

    import java.util.*;
    class Z12
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = {13,2,5,12,29,26};
    int s=0;
    double k=0;
    for(int i=0; i<6; i++)
    s=s+a[i];
    k=(double)s/a.length;
    System.out.println ("s="+s);
    System.out.println ("k="+k);}}

    ОтветитьУдалить
  9. Annie, я посмотрел пока тольк первые две задачи -- все в порядке.
    На будущее: если не оговаривается размер массива, то правильнее инициировать его через ввод размера массива с клавиатуры -- по принципу int [] m=new int[reader.nextInt()], а в циклах использовать свойство массива "сам определи свое количество ячеек", то есть m.length.
    Но ты решения свои не убирай (я пока смотрю), и пусть они остаются как есть (если не найду ошибок)))) -- всегда хорошо, когда будет несколько вариантов решения.

    ОтветитьУдалить
  10. Annie, если ты проверишь свое решение задачи №3 на массиве четного размера (например, на 10 ячеек, а не 11), то программа (класс) сорвется на последнем этапе и выдаст ошибку.
    Это происходит из-за того, что последнюю ячейку (№9) класс попытается заполнить суммой 8-й и 10-й ячеек -- а 10-й то у него и нет!
    Это так называемый "граничный случай" и он требует добавки if в нужном месте)) В каком?

    ОтветитьУдалить
  11. Annie, решение 5-й задачи без проблем, молодец

    ОтветитьУдалить
  12. Annie, а если в 7-й задаче масив -- нечетного размера (не 10 ячеек, а, скажем, 11)?
    Имей в виду, что решение твое правильное -- это я дополнительные трудности подкидываю)))

    ОтветитьУдалить
  13. Annie, задача №8 решена совершенно правильно.
    А в Java еще есть такой вариант: вместо if (a[i]>max) max=a[i] -- можно написать a[i]=Math.max(max,a[i])
    Мне это очень нравится

    ОтветитьУдалить
  14. Задача №9 -- смотри комментарий к решению задачи №8 (только с разницей -- Math.min....)

    ОтветитьУдалить
  15. Я именно с этим и столкнулась при решении третьей задачи, до if не додумалась

    import java.util.*;
    class Z3_1
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = new int [reader.nextInt()] ;
    for(int i =0; i<a.length; i=i+2)
    a[i]=reader.nextInt();
    for(int j =1; j<a.length; j=j+2)
    {if (j!=a.length-1)
    a[j]=a[j-1]+a[j+1];
    else
    a[j]=a[j-1];}
    System.out.println (Arrays.toString (a));}}

    ОтветитьУдалить
  16. С 12-й задачей тоже все правильно.
    Молодец!

    ОтветитьУдалить
  17. В седьмой, если число нечетное, на последнем месте программа пишет первое число. Сделала, чтобы в середине был ноль
    import java.util.*;
    class Z7_1
    {
    static Scanner reader = new Scanner (System.in);
    public static void main (String [] args)
    {
    int [] a = new int [reader.nextInt()] ;
    int m=a.length%2;
    { for(int i =0; i<a.length/2; i++)
    a[i]=(int)(100*Math.random())+1;}
    int n=-1;
    if (m==0)
    {for(int j =a.length/2; j<a.length; j++)
    { n++;
    a [j]= a[n]; }}
    else
    {for(int j =a.length/2+1; j<a.length; j++)
    { n++;
    a [j]= a[n]; }}
    System.out.println (Arrays.toString (a));}}

    Или что нужно сделать то?

    ОтветитьУдалить
  18. Спасибо большое за проверку и замечания

    ОтветитьУдалить
  19. Annie, в седьмой задаче имелось в виду, что народ задаст вопрос: мол, если нечетное число ячеек -- как в этом случае поступать?
    У нас это называется "научить писать комментарии к задачам с не до конца оговоренными условиями". Очень полезная вещь.

    ОтветитьУдалить