IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> Перевод прописных чисел в цифровые, Английский язык
denizk
сообщение 6.1.2011, 18:15
Сообщение #21


Пользователь


Группа: Активисты
Сообщений: 654
Регистрация: 31.10.2007
Пользователь №: 18 005



Цитата(Tanker @ 6.1.2011, 18:09) *

так это не все ошибки smile.gif
хотя очень странно, что вместо 9 выдает 8

Так вообще алгоритм не работает))
У меня может быть написано в любом порядке в строке))
А у тебя первая цифра всегда от 0 до 9! Я тебе про это имел ввиду 10 или 20))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Tanker
сообщение 6.1.2011, 18:22
Сообщение #22


Пользователь


Группа: Активисты
Сообщений: 363
Регистрация: 26.11.2009
Пользователь №: 22 377



у меня все работает. это твои ошибки при переводе

Цитата(denizk @ 6.1.2011, 21:15) *

Так вообще алгоритм не работает))
У меня



--------------------
Успехов!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
denizk
сообщение 6.1.2011, 18:49
Сообщение #23


Пользователь


Группа: Активисты
Сообщений: 654
Регистрация: 31.10.2007
Пользователь №: 18 005



Цитата(Tanker @ 6.1.2011, 18:22) *

у меня все работает. это твои ошибки при переводе

tong.gif Ну не работает он даже без моих ошибок!

возьми свой начальный алгоритм и напиши за место первой своей восьмёрки,любое двухзначное число 20 например и поймёшь,что он его не переводит! rolleyes.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Tanker
сообщение 7.1.2011, 7:32
Сообщение #24


Пользователь


Группа: Активисты
Сообщений: 363
Регистрация: 26.11.2009
Пользователь №: 22 377



у меня все переводит. даже с английского (после исправления твоей) wink.gif


--------------------
Успехов!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
denizk
сообщение 7.1.2011, 15:38
Сообщение #25


Пользователь


Группа: Активисты
Сообщений: 654
Регистрация: 31.10.2007
Пользователь №: 18 005



Цитата(Tanker @ 7.1.2011, 7:32) *

у меня все переводит. даже с английского (после исправления твоей) wink.gif

Ну скинь код тогда где у тебя переводит с английского! biggrin.gif Хватит издеваться! rolleyes.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Tanker
сообщение 7.1.2011, 16:59
Сообщение #26


Пользователь


Группа: Активисты
Сообщений: 363
Регистрация: 26.11.2009
Пользователь №: 22 377



Так это... тебе ж не понравился мой алгоритм wink.gif ...даже спасибо не сказал rolleyes.gif


--------------------
Успехов!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
denizk
сообщение 8.1.2011, 15:15
Сообщение #27


Пользователь


Группа: Активисты
Сообщений: 654
Регистрация: 31.10.2007
Пользователь №: 18 005



Цитата(Tanker @ 7.1.2011, 16:59) *

Так это... тебе ж не понравился мой алгоритм wink.gif ...даже спасибо не сказал rolleyes.gif

Ну так ты дай посмотреть рабочеспособную версию с англиского на цифровой))
И Скажу спасибо! biggrin.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Tanker
сообщение 10.1.2011, 13:37
Сообщение #28


Пользователь


Группа: Активисты
Сообщений: 363
Регистрация: 26.11.2009
Пользователь №: 22 377



Рабочеспособная и правильно работающая - разные понятия... wink.gif
Код
program Prj_chi2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
S: ShortString = 'twenty three ten nine zero two hundred twenty one'; // от 0 до 999
var
chislo, i, j, z: integer;
poslednee, poryadok, predporyadok: byte;
Symb: array[0..100] of string[10];

len: integer; {длина считанной строки}
p: byte; {номер рассматриваемого символа в строке}
Slovo: string[10]; {выделяемое слово}

begin
Symb[10] := 'ten';
Symb[20] := 'twenty';
Symb[30] := 'thirty';
Symb[40] := 'fourty';
Symb[50] := 'fifty';
Symb[60] := 'sixty';
Symb[70] := 'seventy';
Symb[80] := 'eighty';
Symb[90] := 'ninety';

Symb[1] := 'one';
Symb[2] := 'two';
Symb[3] := 'three';
Symb[4] := 'four';
Symb[5] := 'five';
Symb[6] := 'six';
Symb[7] := 'seven';
Symb[8] := 'eight';
Symb[9] := 'nine';

Symb[11] := 'eleven';
Symb[12] := 'twelve';
Symb[13] := 'thirteen';
Symb[14] := 'fourteen';
Symb[15] := 'fifteen';
Symb[16] := 'sixteen';
Symb[17] := 'seventeen';
Symb[18] := 'eighteen';
Symb[19] := 'nineteen';

{считываем строку S}
//write('S=?'); readln(S);

len:=Length(S); {длина строки S}
p:=1; {начнем с первого символа}
chislo:=-1; poryadok:=0; predporyadok:=100; poslednee:= 0;

{пропустить пробелы в начале строки}
while (p<=len) and (S[p]=' ') do p:=p+1;
{выделяем слова пока не конц строки}
while (p<=len) do
begin
{выделяем слово до пробела, запятой или конца строки}
Slovo:='';
while (p<=len) and (S[p]<>' ') do
begin
Slovo:=Slovo + S[p]; {складываем символы в слово}
p:=p+1; {к следующему символу}
end;
if Slovo<>'' then {если слово найдено}
begin
// --------------

if Slovo='zero' then // 0
begin
if chislo<>-1 then writeln(chislo);
writeln(0);
chislo:=-1; poslednee:=0;
poryadok:=1; predporyadok:=100;
end;

for J := 1 to 9 do
if (Slovo=Symb[j]) then //1..9
begin
if poryadok <=1 then
begin
if chislo<>-1 then writeln(chislo);
chislo:= -1;
end
else
begin
chislo:=chislo+j; poslednee:= j;
predporyadok:=poryadok; poryadok:=1;
end;
if chislo=-1 then
begin
chislo:=j; poslednee:=j;
poryadok:=1; predporyadok:=100;
end;
end;

for I := 20 to 90 do
if (Slovo=Symb[i]) then //20 30 ... 90
begin
if poryadok<=2 then
begin
if chislo<>-1 then writeln(chislo);
chislo:= -1;
end
else
begin
chislo:=chislo+i; poslednee := i;
predporyadok:=poryadok; poryadok:=2;
end;
if chislo=-1 then
begin
chislo:=i; poslednee:=i;
poryadok:=2; predporyadok:=100;
if i=10 then poryadok:=1;
end;
end;

for Z := 10 to 19 do
if (Slovo=Symb[z]) then //10..19
begin
if poryadok<=2 then
begin
if chislo<>-1 then writeln(chislo);
chislo := -1;
end
else
begin

chislo:=chislo+z; poslednee:= z;
predporyadok:=poryadok; poryadok:=1;
end;
if chislo=-1 then
begin
chislo:=z; poslednee:=z;
poryadok:=1; predporyadok:=100;
end;
end;

if (Slovo = 'hundred') or (Slovo = 'hundreds') then //soten
begin
if predporyadok<=3 then
begin
chislo:= chislo-poslednee;
if chislo<>0 then writeln(chislo);
chislo:= poslednee*100;
poslednee:=0; poryadok:=3;
end
else
begin
chislo:=chislo-poslednee+ poslednee*100;
poslednee:=0; poryadok:=3;
end;
end;

// --------------
end;
{пропускаем пробелы и запятые, не выходя за пределы строки}
while (p<=len) and (S[p]=' ') do p:=p+1;
end;
if chislo>0 then writeln(chislo);


readln;
writeln;

end.


--------------------
Успехов!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
denizk
сообщение 10.1.2011, 18:29
Сообщение #29


Пользователь


Группа: Активисты
Сообщений: 654
Регистрация: 31.10.2007
Пользователь №: 18 005



Ну чего мне осталось тебя только расцеловать)) wub.gif biggrin.gif
Беру свои слова обратно)) Работает,спасибо большое)) rolleyes.gif wink.gif
Надеюсь препод ошибок ненайдёт))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
denizk
сообщение 12.1.2011, 14:23
Сообщение #30


Пользователь


Группа: Активисты
Сообщений: 654
Регистрация: 31.10.2007
Пользователь №: 18 005



Короче препод прикалывается))
Теперь он хочет чтоб в строке всё же одно число переводилось,ну это как бы фигня!
Плюс была проверка на ошибку в слове,фигня! тоже сделал!

А вот самое главное он хочет ещё проверку на порядок! ну тобишь one one друг за другом идти мол не могут)) Как бы реализовать?))
Помогай))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
denizk
сообщение 12.1.2011, 15:00
Сообщение #31


Пользователь


Группа: Активисты
Сообщений: 654
Регистрация: 31.10.2007
Пользователь №: 18 005



Вроде придумал! Проверь все или нет!

Код

procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
A: Array[0..9] of String[7];
B: Array[10..27] of String[7];
Ia,Ja: Integer;
Ib,Jb: Integer;
Sta: String;
Stb: String;
P: Integer;
Pt: Integer;

begin

A[0] := 'zero';
A[1] := 'one';
A[2] := 'two';
A[3] := 'three';
A[4] := 'four';
A[5] := 'five';
A[6] := 'six';
A[7] := 'seven';
A[8] := 'eight';
A[9] := 'nine';

B[10] := 'ten';
B[11] := 'eleven';
B[12] := 'twelve';
B[13] := 'thirteen';
B[14] := 'fourteen';
B[15] := 'fifteen';
B[16] := 'sixteen';
B[17] := 'seventeen';
B[18] := 'eighteen';
B[19] := 'nineteen';
B[20] := 'twenty';
B[21] := 'thirty';
B[22] := 'fourty';
B[23] := 'fifty';
B[24] := 'sixty';
B[25] := 'seventy';
B[26] := 'eighty';
B[27] := 'ninety';

S := Edit1.Text;
P := 0;
Pt := 0;

Pt := pos('hundred hundred',S);
if Pt > 0 then ShowMessage('Ошибка в порядке!'+#13+
'Слова в строке: '+ S + ' так идти не могут');

if S = 'hundred' then ShowMessage('Ошибка в порядке!'+#13+
'Слова в строке: '+ S + ' так идти не могут');

for Ia := 0 to 9 do
   for Ja := 0 to 9 do
     begin
       Sta := A[Ia]+' '+A[Ja];
       P := pos(Sta,S);
       if P > 0 then ShowMessage('Ошибка в порядке!'+#13+
       'Слова в строке: '+ S + ' так идти не могут');
     end;

for Ib := 10 to 27 do
   for Jb := 10 to 27 do
     begin
       Stb := B[Ib]+' '+B[Jb];
       P := pos(Stb,S);
       if P > 0 then ShowMessage('Ошибка в порядке!'+#13+
       'Слова в строке: '+ S + ' так идти не могут');
     end;

for Ia := 0 to 9 do
   for Jb := 10 to 27 do
     begin
       Sta := A[Ia]+' '+B[Jb];
       P := pos(Sta,S);
       if P > 0 then ShowMessage('Ошибка в порядке!'+#13+
       'Слова в строке: '+ S + ' так идти не могут');
     end;

for Ib := 10 to 27 do
   begin
     Sta := B[Ib]+' '+'hundred';
     P := pos(Sta,S);
     if P > 0 then ShowMessage('Ошибка в порядке!'+#13+
     'Слова в строке: '+ S + ' так идти не могут');
   end;

end;
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Tanker
сообщение 13.1.2011, 10:06
Сообщение #32


Пользователь


Группа: Активисты
Сообщений: 363
Регистрация: 26.11.2009
Пользователь №: 22 377



Цитата(denizk @ 12.1.2011, 17:23) *

одно число переводилось,ну это как бы фигня!
...
А вот самое главное он хочет ещё проверку на порядок! ну тобишь one one друг за другом идти мол не могут)) Как бы реализовать?))
Помогай))
'Там где у мення вывод предыдущего числа - это значит, что начинается другое - эти моменты и надо и отследить

сам вывод единственноо числа будет после цикла (если других сообщений не надо ((об ошибке)))

и для "сотен" нужно добавить проверку, что перед ней порядок=1


-----
вышеперечисленное перекроет все ошибки кроме ошибок в написании слов


--------------------
Успехов!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
denizk
сообщение 14.1.2011, 18:54
Сообщение #33


Пользователь


Группа: Активисты
Сообщений: 654
Регистрация: 31.10.2007
Пользователь №: 18 005



Цитата(Tanker @ 13.1.2011, 10:06) *

'Там где у мення вывод предыдущего числа - это значит, что начинается другое - эти моменты и надо и отследить

сам вывод единственноо числа будет после цикла (если других сообщений не надо ((об ошибке)))

и для "сотен" нужно добавить проверку, что перед ней порядок=1
-----
вышеперечисленное перекроет все ошибки кроме ошибок в написании слов

Да уже сдал!)) Спасибо за помощь! smile.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V < 1 2
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 20.5.2012, 23:55