вторник, 20 марта 2012 г.

Две задачи из госэкзамена 2010-го года

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


Задача №9

Дан двумерный массив размером m×n, содержащий целые числа.
Определим правую диагональную тройку массива, которая начинается в позиции [i][j] следующим образом:
три элемента массива:
    первый элемент – в позиции [i][j],
    второй элемент – на одну строку вниз и на один столбец вправо от первого элемента,
    третий элемент - на одну строку вниз и на один столбец вправо от второго элемента
Например, в приведенном ниже массиве размером 5×6 обозначена правая диагональная тройка, которая начинается в позиции [1][3].

0
3
6
7
1
0
17
1
1
2
5
1
23
8
9
6
7
1
1
1
85
9
1
12
0
43
1
31
4
1


Дан двумерный массив размером m×n, содержащий только числа 0 и 1.
Определим единичную правую диагональную тройку массива, которая начинается в позиции [i][j] следующим образом: существует правая диагональная тройка, начинающаяся в позиции [i][j], и значения всех элементов этой тройки равны 1.
Например, в приведенном ниже массиве размером 5×6 обозначена единичная правая диагональная тройка, которая начинается в позиции [1][2].

0
0
0
0
1
0
1
1
1
0
0
1
0
0
0
1
0
1
1
1
1
1
1
0
0
0
1
0
0
0

А.     Напишите метод, который получит:
    двумерный массив, содержащий только числа 0 и 1.
    два целых числа, обозначающие позицию элемента массива (первое число обозначает строку, второе число обозначает столбец).

Метод проверит, существует ли правая диагональная тройка, начинающаяся в этой позиции. Если да, метод вернет значение
true, иначе – вернет значение false.

Б.      Напишите метод, который получит:
    двумерный массив, содержащий только числа 0 и 1.
    два целых числа, обозначающие позицию элемента массива (первое число обозначает строку, второе число обозначает столбец).

Метод проверит, существует ли единичная правая диагональная тройка, начинающаяся в этой позиции. Если да, метод вернет значение 1, иначе – вернет значение 0.
Вы должны использовать метод, написанный в пункте А.

В.      Дан двумерный массив размером 36×52, содержащий только числа 0 и 1.

Напишите программу, которая подсчитает и выведет на экран количество единичных правых диагональных троек в данном массиве.
Вы должны использовать метод, написанный в пункте Б.

Замечание:
Нет необходимости вводить данные в массив.
Нет необходимости проверять корректность данных в массиве.

Задача №10.
В бассейне есть три разных аттракциона: трамплин, джакузи и сауна.
Прыгать с трамплина можно  начиная с 12 лет.
Пользоваться джакузи можно начиная с 16 лет.
Пользоваться сауной можно начиная с 18 лет.

А.     Напишите метод, который получит возраст посетителя бассейна. Метод вернет одномерный массив из 3 целых чисел, каждое из которых соответствует одному из аттракционов бассейна. В массиве будет содержаться число 1 для тех аттракционов, которые разрешены данному посетителю, и число 0 для запрещенных ему аттракционов.
Б.      Напишите программу, которая для определенного дня примет с клавиатуры возраст каждого из посетителей бассейна. Программа подсчитает число посетителей, которые имели право пользоваться каждым из аттракционов, и выведет полученные числа на экран.
Ввод данных завершится, когда будут введены данные о посетителе, которому нельзя пользоваться ни одним из аттракционов.
Вы должны использовать метод, написанный Вами в пункте А.

Примечание:  нет необходимости проверять корректность вводимых данных



7 комментариев:

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

    ОтветитьУдалить
  2. import java.util.Scanner;


    public class N9 {
    static Scanner reader=new Scanner(System.in);

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    int []data=new int[4];//массив для данных
    System.out.println("Введите размеры массива и координаты ячейки");
    for(int i=0;i<4;i++)
    data[i]=reader.nextInt();
    int [][]arr=new int [data[0]][data[1]];//наш массив
    System.out.println(a(arr,data[2],data[3]));

    }
    public static boolean a(int arr[][],int i,int j)
    {
    int k,l;
    k=arr[0].length;
    l=arr[1].length;
    if (i+1<k&&j+<l)
    return true;
    else return false;
    }

    }

    ОтветитьУдалить
  3. import java.util.Scanner;


    public class N9 {
    static Scanner reader=new Scanner(System.in);

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    int []data=new int[4];//массив для данных
    System.out.println("Введите размеры массива и координаты ячейки");
    for(int i=0;i<4;i++)
    data[i]=reader.nextInt();
    int [][]arr=new int [data[0]][data[1]];//наш массив
    //System.out.println(a(arr,data[2],data[3]));
    if(a(arr,data[2],data[3]))
    System.out.print(b(arr,data[2],data[3]));

    }
    public static boolean a(int arr[][],int i,int j)
    {
    int k,l;
    k=arr[0].length;
    l=arr[1].length;
    if (i<(k-1)&&j<(l-1))
    return true;
    else return false;
    }
    public static int b(int arr[][],int i,int j)
    { int count=0,q,e;
    for(q=i,e=j;q<i+3;q++,e++)
    if(arr[q][e]==1)count++;
    return count==3?1:0;
    }

    }

    ОтветитьУдалить
  4. import java.util.Random;
    import java.util.Scanner;

    public class number9 {
    static Scanner reader=new Scanner(System.in);
    /**
    * @param args
    */
    static Random r=new Random();
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    final int hei=36,wei=52;
    int [][]ar=new int[hei][wei];
    int ct=0;
    for(int i=0;i<hei;i++)
    for(int j=0;j<wei;j++){
    ar[i][j]=r.nextInt(2);
    System.out.print(ar[i][j]);
    if(j==wei-1)
    System.out.println();}
    for(int i=0;i<hei-2;i++)
    for(int j=0;j<wei-2;j++)
    if(a(ar,i,j)) ct+=b(ar,i,j);
    System.out.println(ct);


    }
    public static int b(int arr[][],int i,int j)
    { int count=0,q,e;
    for(q=i,e=j;q<i+3;q++,e++)
    if(arr[q][e]==1) count++;
    return count==3?1:0;
    }
    public static boolean a(int arr[][],int i,int j)
    {
    int k,l;
    k=arr[0].length;
    l=arr[1].length;
    return (i<(k-2)&&j<(l-2))?true:false;

    }
    }

    ОтветитьУдалить
  5. import java.util.Arrays;
    import java.util.Scanner;
    public class n10 {
    //10 A
    /**
    * @param args
    */
    static Scanner reader=new Scanner(System.in);
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.print("Введите возраст\n");
    System.out.print(Arrays.toString(A(reader.nextInt())));
    }
    static int[] A(int age){
    int allow []=new int [3];
    allow[0]=age>=12?1:0;
    allow[1]=age>=16?1:0;
    allow[2]=age>=18?1:0;
    return allow;

    }

    }

    ОтветитьУдалить
  6. import java.util.Arrays;
    import java.util.Scanner;
    public class n10 {
    //10 A
    /**
    * @param args
    */
    public static int []count=new int[3];
    static Scanner reader=new Scanner(System.in);
    public static void main(String[] args)
    {
    // TODO Auto-generated method stub
    int age,c=0;
    do{
    System.out.print("Введите возраст посетителя бассейна\n");
    age=reader.nextInt();if(age<12)break;
    sum(A(age));c++;
    }
    while(true);System.out.println("Всего пользователей:"+c);
    System.out.println("Количество посетителей, имеющик право прыгать с трамплина:"+count[0]);
    System.out.println("Количество посетителей, имеющик право пользоваться джакузи:"+count[1]);
    System.out.println("Количество посетителей, имеющик право пользоваться сауной:"+count[2]);
    }
    static int[] A(int age){
    int allow []=new int [3];
    allow[0]=age>=12?1:0;
    allow[1]=age>=16?1:0;
    allow[2]=age>=18?1:0;
    return allow;}
    public static void sum(int []allow){

    count[0]+=allow[0];
    count[1]+=allow[1];
    count[2]+=allow[2];

    }


    }

    ОтветитьУдалить
  7. Уф,вроде бы все.
    Там все задачи по порядку.
    Я их просто забывал нумеровать))

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