Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2011, 18:14   #1
AntoshkaK
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 29
Стрелка Нужно упростить (не сократить) задачу. PascalAbc.

Мне нужно упростить задачку, а то я вроде намудрил. Нужно избавиться от array. Заранее огромное спасибо!

Program vorona;
const
ed: array[0..9] of string = ('нет', 'одна', 'две', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять');
al: array[10..19] of string = ('десять', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать');
des: array[2..9] of string = ('двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто');
okon: array[0..9] of string = ('', 'а', 'ы', 'ы', 'ы', '', '', '', '', '');
var
result:String;
n:Integer;
Begin
Writeln('Введите кол-во ворон');
Readln(n);
Case n of
0..9: result := ed[n] + ' ворон' + okon[n];
10..19: result := al[n] + ' ворон';
20..99:
begin
if (0 = n mod 10) then
result:= des[n div 10] + ' ворон'
else
result:= des[n div 10] + ' ' + ed[n mod 10] + ' ворон' + okon[n mod 10];
end;
else
Writeln('Введите число в диапозоне от 1 до 99');
end;
Writeln(result);
End.
AntoshkaK вне форума Ответить с цитированием
Старый 02.12.2011, 20:20   #2
alexiz
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Подсказываю путь, позаимствовал отсюда:
{ Автор: Александр Шабля, e-mail: shablya@yandex.ru }
Код:
const
One = 'один;два;три;четыре;пять;шесть;семь;восемь;девять;одна;две;нуль';
Ten = 'десять;одиннадцать;двенадцать;тринадцать;четырнадцать;пятнадцать;шестнадцать;семнадцать;восемнадцать;девятнадцать';
//Далее функция, которая выбирает элемент из строки  
//Поиск нужного значения в строке S позиция Count
function TInWord.GetValue(S: String; Count: Integer): String;
var
  i, p1, p2: Integer;
begin
  if Length(S) > 0 then begin
    i := 1;
    p1 := Pos(Separator, S);
    while (i < Count) and (p1 > 0) do begin
      S := Copy(S, p1 + 1, 255);
      p1 := Pos(Separator, S);
      Inc(i);
    end;
    if i = Count then begin // то что надо!
      p2 := Pos(Separator, S);
      if p2 > 0 then S := Copy(S, 1, p2 - 1); 
      S := Concat(Trim(S), ' ');
    end else S := EmptyStr;
  end;
  Result := S;
end;
Ваша благодарность может быть материальной:
WM R103871054215, WM Z710411027344, ЯндД: 410011167596676
alexiz вне форума Ответить с цитированием
Старый 02.12.2011, 20:29   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от AntoshkaK Посмотреть сообщение
а то я вроде намудрил
умник, думаешь, я не узнаю свой код? Намудрил он. Надо переделать, так и скажи, а не создавай новую тему типо со своим кодом.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 02.12.2011, 21:04   #4
AntoshkaK
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 29
По умолчанию

Извините, я не хотел Вас оскорбить.
AntoshkaK вне форума Ответить с цитированием
Старый 02.12.2011, 21:59   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

просто некрасиво так поступать.

Вот код без массивов, но это, имхо, самодурство и извращение.

http://ideone.com/qQxsV
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 02.12.2011, 22:05   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

оффтоп. veniside, а это вы - Александр?
Вадим Мошев вне форума Ответить с цитированием
Старый 03.12.2011, 06:46   #7
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
просто некрасиво так поступать.
100% поддерживаю.

Цитата:
Извините, я не хотел Вас оскорбить.
Совершенно не важно, что ты хотел. Важно, что ты сделал.
Не хочешь - найди в себе силы не делать.
Тебе мама не говорила, что врать и воровать нельзя? Нельзя - и точка.
-1 от меня.
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 03.12.2011 в 06:49.
TinMan вне форума Ответить с цитированием
Старый 03.12.2011, 22:39   #8
hiho
Форумчанин
 
Регистрация: 29.04.2008
Сообщений: 100
По умолчанию

Некрасивым это бы смотрелось, если бы он этот у тебя с компа утащил. А тут ты его сам выставил, причем без копирайтов и необходимого типа лицензии (xDD). Поэтому возмущаться по поводу "кражи кода" ты не должен. Хотите сохранить частичку "своего Я" в коде, не выкладывайте в паблик.
hiho вне форума Ответить с цитированием
Старый 03.12.2011, 23:50   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

причем тут копирайты?
в данном случае задело что чужой код был выдан зза свой.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.12.2011, 00:48   #10
hiho
Форумчанин
 
Регистрация: 29.04.2008
Сообщений: 100
По умолчанию

а как вы хотели, выкладывая его? тем более не такой уж и важный код. Обижаться надо по делу!
hiho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть листинг программы. Нужно его упростить. micr0 Помощь студентам 0 01.12.2011 18:42
Нужно доделать задачу Dizel_Zombi Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 27.06.2011 21:27
Нужно упростить, переделать формулу avtopark Microsoft Office Excel 3 06.02.2010 10:32
Нужно переделать программу - упростить lukoie Фриланс 14 29.01.2010 01:09