| Экзамен-2006: сегодня и на будущее (часть 2-я) |
|
|
Sunday, 21 May 2006 | Зэев Фрайман, д-р Евгений Канель для раздела Ученье – свет В этом материале – вторая часть базисного варианта, который у нас определяют как «две учебных единицы (вторая и третья) из пяти возможных». Часть задач требует умения разобраться с блоками программ; в этом году, естественно, они по-прежнему были на PASCALе, но мы, с перспективой на будущее, приводим их в Java-варианте.Задача №6
Школа организовала распродажу в пользу стариков. На распродаже продавались билеты трех видов:
Тот, кто приобрел более 10 обычных билетов участника, получал дополнительно еще один такой же – бесплатно.
Напиши класс, которые для каждого участника распродажи будет принимать в качестве ввода количество билетов каждого вида, приобретенных данным участником.
Программа подсчитает и напечатает в качестве вывода число участников распродажи, число билетов каждого вида, число обычных билетов, выданных бесплатно.
Ввод данных прекратится при вводе -1 (минус один) для числа обычных билетов, приобретенных очередным участником.
Нет необходимости проверять правильность ввода (соответствие вводимых значений условию задачи).
class bagr899222_2006_1{
public static void main (String args[]){
int t,i;
int count[]={0,0,0,0,0};
t=IO.readInt();
while (t != -1){
count[0]=count[0]+t;
if (t>10) count[1]++;
t=IO.readInt();
count[2]=count[2]+t;
t=IO.readInt();
count[3]=count[3]+t;
count[4]++;
t=IO.readInt();
}
for (i=0;i<4;i++) IO.writeln(count[i]+" ");
}
}
Задача №7
1. Напиши метод, который будет принимает двузначное положительное целое число Х, составленное из разных цифр и возвращает сумму однозначных чисел, заключенных между цифрами этого числа Х (включая сами цифры, из которых составлено число Х).
Например, для числа 52 и для числа 25 будет возвращено значение 14 (2+3+4+5=14).
static int sum (int x){
int t=0;
int a=x/10;
int b=x%10;
if (a>b){
for (int i=b;i<=a;i++) {t=t+i;};
}
else {
for (int i=a;i<=b;i++) {t=t+i;};
}
return t;
}
2. Дан массив М размером 23 ячейки, каждая из которых содержит двузначное положительное число.
Напиши программный блок, который сосчитает, сколько в М содержится значений, для которых выполняется следующее условие: сумма однозначных чисел, заключенных между цифрами числа (включая сами цифры, из которых составлено число), больше 15.
Используй метод, написанный в предыдущем разделе задачи.
Например, для массива, содержащего 81, 24, 12, 58, 32 будет напечатано в качесвте конечного результата число 2.
int m[]=new int[23];
int i, count=0;
for (i=0;i<23;i++){
m[i]=(int)(90*Math.random()+10);
int x=m[i];
if (sum(x)>15) count++;
}
Задача №8
Дан блок программы:
int count = 0;
for (int i=0; i if ((a[i] != (b[i*2-1]+b[i*2])) a[i]=-1;
else count++;
}
IO.writeln( n-count );
В блоке использованы два массива – а и b.
Задача №9
Дан двумерный массив, содержащий только значения 1 и 0.
Назовем «цепочкой» группу смежных ячеек в строке или столбце, содержащую значения 1.
Длиной «цепочки» считается число ячеек в ней.
Если в строке или столбце массива есть только одна ячейка, содержащая значение 1, длина «цепочки» считает равной 1; если в строке или столбце нет ни одной ячейки, содержащей 1, длина «цепочки» считается равной 0.
В каждой строке и столбце может быть только одна единственная «цепочка».
Назовем ячейку массива «окруженной», если и в строке, и в столбце, к которым она относится, имеются «цепочки» одинаковой длины.
Решение
static int surround(int[][] m, int row, int col){
int countrow=0, countcol=0;
for (int j=0;j for (int i=0;i if (countrow==countcol) return 1;
else return 0;
}
Решение
int i,j;
int a[][]=new int[n][n];
for (i=0;i for (j=0;j a[i][j]=(int)(2*Math.random());
}
int count=0;
for (i=0;i for (j=0;j
if (surround(a,i,j)==1) count++;
}
IO.writeln("count="+count);
Нет необходимости проверять правильность ввода (соответствие вводимых значений условию задачи).
|