| Продолжение задачи о клавиатуре |
|
|
Sunday, 26 March 2006 | Зэев Фрайман для раздела Ученье – свет А теперь – второй этап на подступах к обещанной задаче о несчастной машинистке. На этот раз задание выглядит так:Напиши программу, которая будет заполнять массив, моделирующий «минимальную клавиатуру», то есть такую, которая содержит только маленькие буквы английского алфавита. Но при этом заполнить массив, «пронумерованный нормально» (то есть в порядкe...
... от ‘a’ до’ z’), следует заполнить случайным образом – как будто «соединения» клавиш были перепутаны. Для проверки программа должна принимать строковое значение и распечатывать получившуюся при «попытке набора» соответствующую «белиберду».
Я предлагаю вам свой вариант программы, написанный на Java. Собственно, разница с предыдущим материалом заключается в том, как реализовано заполнение массива значениями. Мне было очень интересно проверить, можно ли на Java использовать нравящийся мне в PASCAL: исходное строковое значение, содержащее все необходимые буквы, постепенно «усекается». Получается, что вроде и на Java такой метод работает...
Вариант на Java
class klava1{
public static void fill(char[] kbd){
String nabor="qwertyuiopasdfghjklzxcvbnm";
int how=nabor.length();
int n=25;
char j='a';
while (how>0){
int i=(int)(n*Math.random());
n--;
char letter=nabor.charAt(i);
kbd[j]=letter;
IO.writeln(letter+"="+"kbd["+j+"]="+kbd[j]);
nabor=""+nabor.substring(0,i)+nabor.substring(i+1);
j++;
how=nabor.length();
}
}
public static void view(char[] kbd){
for (char i='a';i<='z';i++){
IO.writeln("kbd["+i+"]="+kbd[i]);
}
}
public static void go(char kbd[], String slovo){
String novoslovo="";
int how=slovo.length();
for (int i=0;i
char letter=slovo.charAt(i);
novoslovo=novoslovo+kbd[letter];
}
IO.writeln(novoslovo+"------");
}
public static void main (String args[]){
char kbd[]=new char[255];
fill(kbd);
view(kbd);
String slovo=IO.readString();
go(kbd,slovo);
}
}
|