IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задачи на строки
Аристократ
сообщение 6.06.2007 13:02
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Дали контрольную. Три задачи расколоть не смог. Они достаточно своеобразны.

Помогите пожалуйста решить следующие задачи.

1)Строка содержит арифметическое выражение, состоящее из целых чисел и знаков операций: +, -, *,/ (без скобок). Проверить корректность выражения (в смысле последовательности чисел и знаков операций, унарный «минус» допускается). В случае корректности выражения вычислить его значение.

2)Пусть значение функции f(n) равно количеству символов в русской записи количественного числительного n: f(1) = 4 («один»), f(3) = 3 («три»), f(42) = 9 («сорок два») и т.д. Найти все натуральные n, для которых f(n) = n.


3)Заданное натуральное число n, не превосходящее 1000, записать прописью, то есть вывести соответствующее количественное числительное.

Сообщение отредактировано: klem4 - 8.06.2007 13:44
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klem4
сообщение 9.06.2007 7:32
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
спасибо, есть какие-нибудь предложения?



Они также могу появиться, когда ты перестанешь игнорироваться вопросы, которые тебе задают.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Аристократ
сообщение 9.06.2007 14:38
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Цитата(klem4 @ 9.06.2007 7:32) *

Они также могу появиться, когда ты перестанешь игнорироваться вопросы, которые тебе задают.

klem4.спасибо , строковый калькулятор уже есть. А вот другие проги мне еще предстоить приготовить


Добавлено через 19 мин.
Цитата(volvo @ 8.06.2007 20:05) *

Я тебе дал ссылку на Дельфи-реализацию того, что ты просил (сообщение №8, предпоследняя ссылка - программа с минимальными изменениями компилируется в Турбо-Паскале, проверено только что), тебе не понравилось, или ты не соизволил посмотреть (это не имеет в данном случае значения) - что еще ты хочешь? Чтобы тебе опять что-нибудь сделали, и тебе опять не понравилось? Спасибо, уже было такое...

Volvo, я смотрел исходник на дельфи строка
t := t + IntToStr(i) + ' коп.';
компилятор Pascal естественно вызывает ошибку неизвестный идентификатор . Как избавиться от этого. Чтобы применить данную тобой программу надо, как я понял надо исправить применять данную функцию
и применить следующим образом

Var k: Integer;
Begin
Write(‘vvedite stroku’);
Readln(k);
TextSum(k);
Readln;
End;


Вот решил еще раз разместить эту функцию

function TextSum(S: double): string;

function Conv999(M: longint; fm: integer): string;
const
c1to9m: array [1..9] of string[6] =
('один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь','девять');
c1to9f: array [1..9] of string[6] = ('одна', 'две', 'три', 'четыре', 'пять',
'шесть', 'семь', 'восемь', 'девять');
c11to19: array [1..9] of string[12] =
('одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать',
'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать');
c10to90: array [1..9] of string[11] =
('десять', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят',
'семьдесят', 'восемьдесят', 'девяносто');
c100to900: array [1..9] of string[9] =
('сто', 'двести', 'триста', 'четыреста', 'пятьсот',
'шестьсот', 'семьсот', 'восемьсот', 'девятьсот');

var
s: String;
i: Longint;
begin
s := '';
i := M div 100;
if I <> 0 then s := c100to900[i] + ' ';
M := M mod 100;
i := M div 10;
if (M > 10) and (M < 20) then
s := s + c11to19[M - 10] + ' '
else begin
if I <> 0 then s := s + c10to90[i] + ' ';
M := M mod 10;
if M <> 0 then
if fm = 0 then s := s + c1to9f[M] + ' '
else s := s + c1to9m[M] + ' ';
end;
Conv999 := s;
end;

var
i: Longint;
j: Longint;
r: Real;
t: String;
begin
t := '';
j := Trunc(S / 1000000000.0);
r := j;
r := S - r*1000000000.0;
i := Trunc®;
if j <> 0 then begin
t := t + Conv999(j, 1) + 'миллиард';
j := j mod 100;
if (j > 10) and (j < 20) then t := t + 'ов '
else
case j mod 10 of
0: t := t + 'ов ';
1: t := t + ' ';
2..4: t := t + 'а ';
5..9: t := t + 'ов ';
end;
end;
j := i div 1000000;
if j <> 0 then begin
t := t + Conv999(j, 1) + 'миллион';
j := j mod 100;
if (j > 10) and (j < 20) then t := t + 'ов '
else
case j mod 10 of
0: t := t + 'ов ';
1: t := t + ' ';
2..4: t := t + 'а ';
5..9: t := t + 'ов ';
end;
end;
i := i mod 1000000;
j := i div 1000;
if j <> 0 then begin
t := t + Conv999(j, 0) + 'тысяч';
j := j mod 100;
if (j > 10) and (j < 20) then t := t + ' '
else
case j mod 10 of
0: t := t + ' ';
1: t := t + 'а ';
2..4: t := t + 'и ';
5..9: t := t + ' ';
end;
end;
i := i mod 1000;
j := i;
if j <> 0 then t := t + Conv999(j, 1);
t := t + 'руб. ';
i := Round(Frac(S)*100.0);
t := t + IntToStr(i) + ' коп.';
TextSum := t;
end;


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Аристократ   Задачи на строки   6.06.2007 13:02
volvo   2 и 3 задачи вообще сводятся к одному и тому же - ...   6.06.2007 13:13
Аристократ   volvo, ссылки не подскажешь? че-то не могу найти.....   6.06.2007 15:36
volvo   Например, тут: цифры   6.06.2007 15:47
Michael_Rybak   Первая - примитивный парсер. Гугли обратную польск...   6.06.2007 16:17
klem4   тоесть такое выражение допустимо: -3*-12 А так...   6.06.2007 17:54
Аристократ   Volvo, я ознакомился с текстом проги, на который у...   7.06.2007 12:46
volvo   А, ну да... Тебе же наоборот надо, число прописью....   7.06.2007 13:07
Аристократ   если хочешь перевести - вот тут: [url=http://for...   7.06.2007 13:14
мисс_граффити   мисс_граффити Надоело каждому говорить: ну почитай...   7.06.2007 13:23
Аристократ   я не вижу надписи- редактировать сообщение( в перв...   7.06.2007 13:49
Аристократ   отредактируйте пожалуйста сами тему, ну не получае...   8.06.2007 8:52
Аристократ   спасибо, есть какие-нибудь предложения?   8.06.2007 19:52
volvo   Я тебе дал ссылку на Дельфи-реализацию того, что т...   8.06.2007 20:05
klem4   Они также могу появиться, когда ты перестанешь ...   9.06.2007 7:32
Аристократ   Они также могу появиться, когда ты перестанешь иг...   9.06.2007 14:38
volvo   Смотреть Help на процедуру Str, там приведена реал...   9.06.2007 15:25
Аристократ   спасибо. volvo, все хорошо работает , а по второй...   9.06.2007 19:11


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

 



- Текстовая версия 21.07.2025 20:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"