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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2011, 19:58   #1
Little_girl37
Новичок
Джуниор
 
Регистрация: 08.02.2011
Сообщений: 1
По умолчанию нужно реализовать задачу в Delphi

Из данного натурального числа удалить все цифры А(А вводится с клавиатуры)
Little_girl37 вне форума Ответить с цитированием
Старый 08.02.2011, 20:32   #2
filvika
Пользователь
 
Аватар для filvika
 
Регистрация: 25.08.2010
Сообщений: 25
По умолчанию

Как вариант:
Код:
var
    i, n: integer;
    a: char;  //  Одна цифра
    s0, s: string;
begin
    write('n (int) = ');
    readln(n);
    write('a (char) = ');
    readln(a);

    s := IntToStr(n);
    s0 := '';
        for i := 1 to length(s) do
            if (s[i]<>a) then s0 := s0 + s[i];

    n := StrToInt(s0);
    writeln(n);
    readln;
end.
filvika вне форума Ответить с цитированием
Старый 08.02.2011, 20:38   #3
Вадим Мошев

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

Вот Функционал программы

Код:
Var st:string;
	A, n, i: word;
//......

{N – Натуральное число}
{A - цифра}

If a not in [0..9] then begin ShowMessage(‘Вы ввели не цифру’); exit end;

St:=intToStr(n);

For i:=1 to length(st) do
		If StrToInt(st[i]) = a then st[i]:=’’;
Вадим Мошев вне форума Ответить с цитированием
Старый 08.02.2011, 20:38   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Все просто
Код:
 
While Pos(Cifra,Chislo) > 0 do
Begin
  Delete(Chislo,Pos(Cifra,Chislo),1)
End;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 08.02.2011, 21:23   #5
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

Код:
program prog;

var
   n : LongInt;         { Введенное число }
   n1 : LongInt;        { Результат }
   d : integer;         { Текущая выделенная цифра числа }
   m : LongInt;         { разряд цифры, помещаемой в результат }
   x : integer;
begin
   Write('Введите число: ');
   ReadLn(n);
   Write('Какую цифру удалять: ');
   ReadLn(x);
   WriteLn;
   WriteLn('Исходное число: ', n);
   n1 := 0;
   m := 1;
   while n > 0 do begin { Цикл пока в числе есть цифры }
      d := n mod 10;    { Выделяем правую цифру из числа }
      n := n div 10;    { Удаляем из числа выделенную цифру }
      if d <> x then begin  { Если не запрещенная цифра }
         if m = 1
         then n1 := d
         else n1 := n1 + d * m;
         m := m * 10;
      end;
   end;
   WriteLn('     Результат: ', n1);
   ReadLn;
end.
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 08.02.2011, 21:27   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
... then st[i]:=’’;
Вадим Мошев, ошибка! такой код совершенно справедливо не скомпилируется. Нельзя символу присвоить строку (даже и пустую!)

GetMax, отлично!

p.s. не удивлюсь, если автору топика преподаватель потребует это сделать БЕЗ использования строковых функций (ну и соответственно, без преобразования числа в строку)


Добавлено
p.p.s. Пока писал пост, господин VadikV уже дал решение и без использования строк. Отлично!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.02.2011, 21:56   #7
Вадим Мошев

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

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вадим Мошев, ошибка! такой код совершенно справедливо не скомпилируется. Нельзя символу присвоить строку (даже и пустую!)
Да, действительно, не скомпилировалось, написали ошибку "Несоответствие типов". Ну тогда, пустоту в апострофах заменим на chr(0), то есть напишем
Код:
a[i] := chr(0)
Вот теперь компилируется
Вадим Мошев вне форума Ответить с цитированием
Старый 08.02.2011, 22:02   #8
a9N2k
Заблокирован
 
Регистрация: 01.02.2011
Сообщений: 44
Радость

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Да, действительно, не скомпилировалось, написали ошибку "Несоответствие типов". Ну тогда, пустоту в апострофах заменим на chr(0), то есть напишем
Код:
a[i] := chr(0)
Вот теперь компилируется
Теперь то Вы меня поняли?
http://programmersforum.ru/showpost....9&postcount=10
a9N2k вне форума Ответить с цитированием
Старый 08.02.2011, 22:10   #9
Вадим Мошев

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

Цитата:
Сообщение от a9N2k Посмотреть сообщение
Теперь то Вы меня поняли?
http://programmersforum.ru/showpost....9&postcount=10
Не всё. Объясните, пожалуйста, мне вот это:
Цитата:
не надо песен...
хоть в Turbo Pascal, хоть в Pascal ABC, хоть в Delphi - #32 - это и есть CHAR и приводить его к типу CHAR - бессмысленно!
Так что, мой Вам совет - избавляйтесь от бессмысленных привычек...
Для символа "#" (нашего любимого символа ) я знаю только одно применение - это обработка нажат клавиш в Турбо паскале 7.0.
То есть, например:
Код:
case keyPressed of
#13: //ля-ля-ля
#8: //ой-нанананана... :d
Но объясните мне, что в выше написанном имелось в виду?
Вадим Мошев вне форума Ответить с цитированием
Старый 09.02.2011, 00:16   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
a[i] := chr(0)
угу. Вы ещё туда #255 запишите!
замаскировать символ - это неправильно решение проблемы.
Почему?
Ну хотя бы потому что, попробуйте напечатать количество символов в результирующем числе! Ещё один цикл напишете?!

Повторюсь, но если уж использовать строки, то написать эффективный код в пару строк - смотри пост #4 (с) GetMax

Цитата:
Но объясните мне, что в выше написанном имелось в виду?
ох, оффтопим мы здесь...
1) #xx - это обычный символ, заданный кодом. Использовать можно в любой версии Паскаля.
Как использовать - да как угодно.
Например,
WriteLn(#9'Тут'#9'Таблица'#13#10#9' Задана');

или, в вышеприведённом Вами куске кода, вместо вызова функции можно написать:
a[i] := #0;
можно, но не нужно! почему - я уже сказал выше!


теперь о бессмысленности использования char(#32)
Ну так почему Вы не используете такой код в Вашем стиле??! :/ :
Код:
var st : string;
  i : integer;
begin
  st := '123456789';
  for i := integer(0) to integer(length(st)) do
     if boolean(i>integer(4)) then st[i] := char('A');
  Writeln(string(st));
end.
данный код компилируется и, разумеется, работает...
Теперь аналогия ясна?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно решить не простую(для меня) задачу в Delphi !! St1mkA Помощь студентам 6 04.10.2009 20:39
нужно решить задачу в DELPHI,пожалуйста помогите SERESHKA Помощь студентам 10 01.05.2009 10:54
Помогите реализовать данную задачу ==Spider== Работа с сетью в Delphi 2 15.12.2007 11:25
Нужно перевести задачу с паскаля на DELPHI VDK23RUS Помощь студентам 8 16.06.2007 15:38