Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Строки

Автор: Yurka 20.01.2005 17:18

Помогите составить програмку:
Условие:
Задан непустоой текст, в который входять только буквы и цыфры. Проверить или удовлетворяет он такое условие, что в текст входят только одна цыфра причём её значение равно длине текста

Автор: Yurka 20.01.2005 17:20

самое интересное как сопоставить значение цыфры в тексте длине текста, ведь они в разных типах.

Автор: volvo 20.01.2005 17:28

Yurka
1. В следующий раз давайте более осмысленное название темы.
2. Кнопка "Редактировать" для чего? Зачем лишний пост?

3.

Цитата
как сопоставить значение цыфры в тексте длине текста
Очень просто:
Код

digit: char;
s: string;
begin
...
 digit := ... {после чего в переменной digit зранится значение цифры, например '4' }
 if ord(digit) - ord('0') = length(s) then ... { значение цифры = длине строки...}
end.

Автор: Yurka 21.01.2005 16:11

Спасибо большое
у меня тоже уже кое-какие идейки возникли rolleyes.gif

Код

var
s,s1:string;
c:char;
y,n,i:integer;
Begin
writeln('text:');
readln(s);
for i:=1 to length(s) do
if (s[i]='0') or (s[i]='1') or (s[i]='2') ... or (s[i]='9') then
begin
n:=n+1;
c:=s[i];
end;
y:=Length(s);
Str(y,S1);
if (n=1) and (c=s1[1]) then
write('da') else write('net');
end.


Вроде сработало. Функция Str() помогла

Автор: volvo 21.01.2005 18:52

Yurka
А если вот так?

Код
var
 s: string;
 n,i: integer;
begin
 writeln('text:');
 readln(s);
 for i := 1 to length(s) do
   if s[i] in ['0'..'9'] then
     begin
       inc(n);
       if ord(s[i]) - ord('0') <> length(s)
         then inc(n)
     end;

 if n = 1 then
   write('da') else write('net')
end.

Автор: Yurka 21.01.2005 19:26

Работает ;) . Решение более рацыонально!
Только начинаю разбираться с этими строками поэтому ещё не все функции перебробовал.