Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно помочь в решение задачи! Дан нат. число N. Составить программу, к 
V
    Опции темы
MuForum
  Дата 14.6.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: нет
Всего: 4



Задача: Дано натуральное число N. Составьте программу, которая будет выводить:
  1.  Цифры этого числа.
  2.  Сумму цифп этого числа.
  3.  Определить, содержит ли это число цифру "8".
  4.  Вывести "перевертыш"(Палиндром) этого числа. (Например: 638, его перевертыш это 836).
  5.  Записать в текстовой файл это число и его "перевертыш" через пробел.
Вот моё решение:
Код

Program Test_08;
  Uses Crt;
  Const C=['0'..'9'];
{### Start Procedures record in file ###}
  Procedure l1(St1: string);
Var
  St2: string;
  f: text;
  i2: word;
Begin
  St2:='';
  for i2:=Length(St1) downto 1 do
  St2:=St2+St1[i2];
  assign(f,'C:\Test_08.txt');
  rewrite(f);
  Write(f,St1, ' ',St2);
  close(f);
  Write('Palindrom N: ',St2);
end;
{### End Procedures record in file ###}

{### Start Procedures of Suma numeral N ###}
  Procedure l2(St4: string);
Var
  S,n: integer;
  i: word;
  n2:char;
  n3: real;
Begin
  S:=0;
  for i:= 1 to length(St4) do
if (Integer(St4[i])>47)and(Integer(St4[i])<58) then {Производим сравнение St[i] с Таблицей кодировки символов! P.S. -> 48=, 57=9}
Begin
  n2:=Chr(Integer(St4[i]));
{Сдесь необходимо преобразование с Char в Real}
  n:=Round(n3);
  S:=S+n;
end;
  WriteLn('S= ',S);
end;
{### End Procedures of Suma numeral N ###}

function Chr(D: byte): char;

function Round(X: real): integer;

Var
  St: string;
  i:word;
Begin
  ClrScr;
  Write('N= '); ReadLn(St);
  for i:=1 to length(St) do
  If St[i] in C then
Begin
  Write(St[i]);
  Write(', ');
end;
  WriteLn;
  l2(St);
  for i:=1 to length(St) do
  if St[i]='8' then WriteLn('In number N there is 8');
  l1(St);
  ReadKey;
end.


Проблема заключается в том, что пункт №2 как бы я не пытался решить, у меня не выходит, а не выходит из-за того, что я не знаю как преобразовать Символьный тип данных в вещественный! - Прошу помощь в решение пункта №2.

Это сообщение отредактировал(а) MuForum - 14.6.2007, 11:35


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
Snowy
Дата 14.6.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



Код

var
  sum, i, c, code: integer;
  s: string;
begin
  s := '1024'; // к примеру
  sum := 0;
  for i := 1 to Length(s) do
  begin
    val(s[i], c, code);
    sum := sum + c;
  end;
  WriteLn(sum);
end.

PM MAIL   Вверх
MuForum
  Дата 14.6.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: нет
Всего: 4



#1, Snowy - Всё, задача решена, благодарю за помощь Snowy!

Код

{
Дано натуральное число N. Составьте программу, которая будет выводить:
1) Цифры этого числа.
2) Сумму цифп этого числа.
3) Определить, содержит ли это число цифру "8".
4) Вывести "перевертыш"(Палиндром) этого числа. (Например: 638, его перевертыш это 836).
5) Записать в текстовой файл это число и его "перевертыш" через пробел.
}
Program Test_08;
  Uses Crt;
  Const C=['0'..'9'];
{### Start Procedures record in file ###}
  Procedure l1(St1: string);
Var
  St2: string;
  f: text;
  i2: integer;
Begin
  St2:='';
  for i2:=Length(St1) downto 1 do
  St2:=St2+St1[i2];
  assign(f,'C:\Test_08.txt');
  rewrite(f);
  Write(f,St1, ' ',St2);
  close(f);
  Write('Palindrom N: ',St2);
end;
{### End Procedures record in file ###}

{### Start Procedures of Suma numeral N ###}
  Procedure l2(St4: string);
Var
  S,c,code: integer;
  i: word;
Begin
  S:=0;
  for i:= 1 to length(St4) do
Begin
  val(St4[i], c, code);
  S:=S+c;
end;
  WriteLn('S= ',S);
end;
{### End Procedures of Suma numeral N ###}

Var
  St: string;
  i:word;
Begin
  ClrScr;
  Write('N= '); ReadLn(St);
  for i:=1 to length(St) do
  If St[i] in C then
Begin
  Write(St[i]);
  Write(', ');
end;
  WriteLn;
  l2(St);
  for i:=1 to length(St) do
  if St[i]='8' then WriteLn('In number N there is 8');
  l1(St);
  ReadKey;
end.


Это сообщение отредактировал(а) MuForum - 14.6.2007, 11:50


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
Sartorius
Дата 14.6.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Код

S+ord(St4[i]);


 ord() возвращает ASCII код символа. Вычиатай ord('0').
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.