Авторские Материалы о событиях в Израиле на Ближнем Востоке и в мире

IsraMir.com - Израильская журналистика

Default color brown color green color red color blue color
Вы сейчас тут: Новости arrow Техотдел arrow Свет ученья arrow Литеры с цифрами
Skip to content
Литеры с цифрами Версия для печати Отправить на e-mail
Sunday, 19 March 2006 | Д-р Евгений Канель, Зэев Фрайман для раздела Ученье – свет
Stringsanddigitsisramir.comПродолжаем тему использования в обучении задач на обработку литерных значений. Очень интересными в PASCAL’е всегда были задачи, когда в литерном значении встречались цифры и числа. Одну из таких мы сегодня предлагаем вашему вниманию: ее мы всегда используем на уроках, в нескольких вариантах разного уровня сложности; наиболее простой – сегодня перед вами.
 
Ниже – несколько вариантов решения: одни – на PASCAL’е, другие – на Java. У нас с доктором Канелем уже начала такая традиция складываться: я пишу, а он предлагает свой, более замечательный вариант. Нравится.
 
Напиши программу, которая принимает в качестве ввода  литерное значение, состоящее из букв английского алфавита и цифр. Программа должна построить новое значение следующим образом:
  • Буквы переносятся без изменений
  • Цифра «ноль» игнорируется
  • Цифры от 1 до 9 заменяются знаками # в соответствующем значению цифры значению
 
 
 
 
 
Сначала – PASCAL. Слева – мое решение, справа – Жени; оно хоть немного, но все же изящнее.
alt
 
Автор варианта: Зэев Фрайман
Мне кажется, что решение вышло не самым лучшим, особенно в том, что касается преобразования символов цифр в собственно однозначные числа...
 
 class ex_string2{
           
            public static void main (String args[]) {
                        String st1=IO.readString();
                        int how1=st1.length();
                        String st2="";
                        for (int i=0;i                                    char let=st1.charAt(i);
                                   int j=(int)let;
                                   if ((j>49)&&(j<=58)){
                                                for (int k=49;k<=j;k++){
                                                            st2=st2+"#";
                                                }        
                                   }
                                   else {
                                               if (j!=48){
                                                           st2=st2+let;     
                                               }         
                                   }         
                                   };
                        IO.writeln("New string="+st2);                       
                        }
}
 
 
 
Автор еще двух вариантов решения (и комментариев...): д-р Евгений Канель
 
Не понравилось переводить в целые из символов? Пожалуйста!
 
 public class ex_string2{

 public static void main (String args[]) {
  String st1=IO.readString();
  int long1=st1.length();
  String st2="";
  for (int i=0; i    char let=st1.charAt(i);
   if (Character.isDigit(let))
   {
   int f=Character.getNumericValue(let);
    for (int k=1; k<=f; k++)  st2=st2+"#"; 
   } else
        st2=st2+let; 
   } 
     
  IO.writeln("New string="+st2);  
  }
}
 
 
 
Или даже так:
 public class ex_string2{

 public static void main (String args[]) {
  String st1=IO.readString();
  int long1=st1.length();
  String st2="";
  for (int i=0;i    char let=st1.charAt(i);
     
   int f=Character.digit(let,10);
   if (f!=-1){
    for (int k=1; k<=f; k++)  st2=st2+"#"; 
   } else
        st2=st2+let; 
   } 
     
  IO.writeln("New string="+st2);  
  }
}
 
 
 
До следующих задач...
 
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:


Автотранслитерация: выключена

Защитный код

Powered by jComments