| Экзамен-2001 (2) |
|
|
Tuesday, 13 June 2006 | Зэев Фрайман, д-р Евгений Канель для раздела Ученье – свет Мы публикуем еще одну подборку задач – на этот раз они взяты из государственного экзамена 2001 года (уровень «две учебных единицы из пяти»). И в этот раз мы не стали использовать все задачи экзамена, а только те, которые в той ли иной степени требуют написания программного кода, метода или полного класса. Естественно, что задачи были «заточены» под PASCAL и С, но мы немного изменили формулировки, адаптировав их под Java. Это – вторая часть подборки.Задача 9
Условие входа: метод принимает два целых числа и строковую переменную.
Условие выхода: если в S встречается пара знаков ‘aa’ – по крайней мере один раз – метод возвращает произведение числовых параметров. Если в S встречается по крайней мере один раз знак ‘a’ – но только рядом с другими знаками – метод возвращает сумму числовых параметров. Во всех остальныхслучаях метод возвращает разницу между первым и вторым числовыми параметрами.
Напиши тело метода
Напиши класс для реализации задания, который будет распечатывать в качестве итоговых результатов содержание массива, число положительных и число отрицательных значений в массиве.
class exer222_01_9{
static int fill(int c, int d, String s){
boolean flag1=false, flag2=false;
int j;
int res=0;
int how=s.length();
for (j=0;j<(how-1);j++){
String t=s.substring(j,j+2);
if (t=="aa") flag1=true;
if ((s.charAt(j)=='a')&&(s.charAt(j+1))!='a') flag2=true;
}
if ((flag1==true)&&(flag2==false)) res=(c*d);
if ((flag1==false)&&(flag2==true)) res=(c+d);
if ((flag1==true)&&(flag2==true)) res=(c-d);
if ((flag1==false)&&(flag2==false)) res=(c-d);
return res;
}
public static void main (String args[]){
final int n=25, m=35;
int a[][]=new int[n][m];
int i,j,positiv=0,negativ=0;
String st;
for (i=0;i for (j=0;j st=IO.readString();
a[i][j]=fill(i,j,st);
if (a[i][j]>0) positiv++;
if (a[i][j]<0) negativ++;
}
for (i=0;i for (j=0;j IO.writeln();
}
IO.writeln(positiv+" "+negativ);
}
}
Задача 10
Расчет за пребывание в гостинице осуществляется в последний день. Расчет выполняется как произведение числа дней проживания на 400 шекелей за каждый день – плюс плата за отдельно заказанные каждым клиентом дополнительные услуги.
class exer222_01_10{
static void calc (int number){
int days=IO.readInt();
int sum=400*days;
for (int i=0;i
int addpay=IO.readInt();
sum=sum+addpay;
}
IO.writeln("number="+number);
IO.writeln("days="+days);
IO.writeln("summa="+sum);
if (sum>2000) IO.writeln("4 payments");
}
public static void main (String args[]){
int number=IO.readInt();
while (number!=999) {
calc(number);
number=IO.readInt();
}
}
}
|