| Экзамен: сегодня и впрок, часть 2-я (продолжение) |
|
|
Sunday, 14 May 2006 | Д-р Евгений Канель, Зэев Фрайман для раздела Ученье – свет Это – текст и решения предварительного, внутришкольного экзамена – на уровне первых двух учебных единиц из пяти. Экзамен составлен и проведен д-ром Евгением Канелем. Как и в предыдущей публикации, наши ученики в этом году использовали язык программирования PASCAL, но мы прилагаем решения на Java – в соответствии с перспективами уже на будущие год-два.Задача №5
Пара целых чисел называется «красивой», если первое число в паре является делителем второго – или наоборот.
Напиши программу, которая принимает в качестве ввода пары целых положительных чисел – до тех пор, пока не будет введена «красивая пара». Программа должна распечатать (после завершения ввода всех данных) общее число введенных чисел.
public class matk122_2006a5 {
public static void main (String args[]){
int count=2;
int a=IO.readInt("a=");
int b=IO.readInt("b=");
boolean flag=((a%b==0) || (b%a==0));
while (flag==false){
a=IO.readInt("a=");
b=IO.readInt("b=");
count=count+2;
flag=((a%b==0) || (b%a==0));
}
IO.writeln("count="+count);
}
}
Задача №7
Напиши класс, создающий 150 случайных двузначных положительных чисел.
Программа должна проверить, все ли значения из диапазона «двузначные положительные» были сгенерированы программой – и напечатать «пропущенные», вместе с сообщением пропущенные.
public class matk122_2006a7 {
public static void main (String args[]){
final int n=150;
int m[]=new int[100];
int i,x;
for (i=0;i<90;i++) m[i]=0;
for (i=0;i x=(int)(89*Math.random()+10);
m[x]=m[x]+1;
}
for (i=10;i<100;i++){
if (m[i]==0) IO.writeln(i+” пропущенные”);
}
}
}
Задача №8
Двузначный массив размером 2Х2 называется «пятном», если все его ячейки содержат нули. Двумерный массив называется «дефектным», если в нем есть более 5-и «пятен».
Напиши класс, которые вводит данные в двумерный массив размером 30Х20 и проверяет, является ли он «дефектным».
public class matk122_2006a8 {
public static boolean is_spot (int[][] m, int i, int j){
boolean is_spot=false;
if ((m[i][j]==0)&&(m[i+1][j]==0)&&(m[i][j+1]==0)&&(m[i+1][j+1]==0))
{is_spot=true;};
return is_spot;
}
public static void main (String args[]){
int m[][]=new int[30][20];
int i,j;
for (i=0;i<30;i++){
for (j=0;j<20;j++){
m[i][j]=(int)(10*Math.random());
//IO.writeln("m["+i+"]["+j+"]="+m[i][j]);
}
}
for (i=0;i<29;i++){
for (j=0;j<19;j++){
IO.write(m[i][j]+" ");
}
IO.writeln();
}
int count=0;
for (i=0;i<29;i++){
for (j=0;j<19;j++){
if (is_spot(m,i,j)==true) count++;
}
}
if (count>5) IO.writeln("Defected");
}
}
Задача №9
Двумерный массив называется «красивым», если все его столбцы отсортированы в возрастающем порядке.
Напиши класс, которые принимает в качестве ввода числовые значения для заполнения двумерного массива размером 10Х15 и строит на его основании новый массив следующим образом: каждая четная строка нового массива заполняется максимальным значением из соответствующей строки «исходного» массива, каждая нечетная строка нового массива заполняется минимальным значением из соответствующей строки «исходного» массива.
Класс должен распечатать «исходный» и новый массивы и определить, является ли новый массив «красивым».
import java.util.*;
public class matk122_2006a9 {
public static int max(int[][] m, int i){
int j=0;
int max=m[i][0];
for (j=1;j<15;j++){
if (m[i][j]>max) max=m[i][j];
}
return max;
}
public static int min(int[][] m, int i){
int j=0;
int min=m[i][0];
for (j=1;j<15;j++){
if (m[i][j] }
return min;
}
public static void main (String args[]){
int m[][]=new int[10][15];
int a[]=new int[10];
int i,j;
for (i=0;i<10;i++){
for (j=0;j<15;j++){
m[i][j]=(int)(100*Math.random());
}
}
for (i=0;i<10;i++){
for (j=0;j<15;j++){
IO.write(m[i][j]+" ");
}
IO.writeln();
}
int count=0;
for (i=0;i<10;i++){
if (i%2==0) a[i]=max(m,i);
if (i%2==1) a[i]=min(m,i);
}
IO.writeln("===============");
for (i=0;i<10;i++) IO.write(a[i]+" ");
int b[]=new int[10];
System.arraycopy(a,0,b,0,a.length);
Arrays.sort(b);
IO.writeln();
for (i=0;i<10;i++) IO.write(b[i]+" ");
if (Arrays.equals(a,b)) IO.writeln("Ok");
}
}
Задача №10
Двумерный массив размером NxN («квадратная матрица») называется «уравновешенным по строкам», если разница между максимальным значением в строке и минимальным значение в ней же не превышает 10.
Напиши класс, которые принимает в качестве ввода числовые значения для ячеек «квадратной матрицы» размером 20Х20 и определяет, является ли она «уравновешенной по строкам». Если это так – следует напечатать сумму значений первой строки, если нет – следует напечатать сумму значений последней строки.
public class matk122_2006a10 {
public static int max(int[][] m, int i){
int j=0;
int max=m[i][j];
for (j=1;j<20;j++){
if (m[i][j]>max) max=m[i][j];
}
return max;
}
public static int min(int[][] m, int i){
int j=0;
int min=m[i][j];
for (j=1;j<20;j++){
if (m[i][j]
}
return min;
}
public static void main (String args[]){
int m[][]=new int[20][20];
int i,j;
for (i=0;i<20;i++){
for (j=0;j<20;j++){
m[i][j]=(int)(100*Math.random());
}
}
for (i=0;i<20;i++){
for (j=0;j<19;j++){
IO.write(m[i][j]+" ");
}
IO.writeln();
}
int count=0;
for (i=0;i<20;i++){
if (max(m,i)-min(m,i)<11) count++;
}
if (count==20) IO.writeln("Ok");
}
}
|