Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Delphi .NET
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.12.2010, 07:59
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию Лабораторная работа на Delphi №3

Дано натуральное число. Найти сколько раз в нем встречается каждая цифра.
Ответить с цитированием
  #2  
Старый 22.12.2010, 09:18
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Код:
Var
S:string;
i,k:integer;
c: array [0..9] of integer;
begin
{Ввести строку}
for i:=1 to Length(S) do
 begin
  for k:=0 to 9 do
    if S[i] = IntToStr(k) then inc(c[i]);
 end;
for i:=0 to 9 do
 writeln(i,' = ',c[i]);
readln;
end.

Последний раз редактировалось ChinYan, 22.12.2010 в 09:27.
Ответить с цитированием
  #3  
Старый 22.12.2010, 09:23
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Как в книге было написано, я так и переписал свой вариант. А число наверно можно поставить любое.
Ответить с цитированием
  #4  
Старый 22.12.2010, 09:35
stil stil вне форума
Новичок
 
Регистрация: 24.11.2010
Сообщения: 91
Репутация: 41
По умолчанию

Код:
const c='0123456789';
var i,j,k:integer;
    s:string;
begin
write('s=');readln(s);
for i:=1 to length(c) do begin
  k:=0;
  for j:=1 to length(s) do
    if c[i]=s[j] then Inc(k);
  if k<>0 then writeln(c[i],'=',k);
end;
readln;
Ответить с цитированием
  #5  
Старый 22.12.2010, 09:53
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Stil и ChinYan вам огромное спасибо за помощь. А можно ли эту прогу сделать не под DOS, а под графический режим. Например кидаем на форму одну Edit1 и Memo1, потом вводим числа, нажимаем Enter и результаты выводятся на Memo1. Заранее низский поклон за помощь.
Ответить с цитированием
  #6  
Старый 22.12.2010, 10:02
stil stil вне форума
Новичок
 
Регистрация: 24.11.2010
Сообщения: 91
Репутация: 41
По умолчанию на форме

Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const c='0123456789';
var i,j,k:integer;
    s:string;
begin
if Key=#13 then begin
  s:=Edit1.Text;
  memo1.Clear;
  for i:=1 to length(c) do begin
    k:=0;
    for j:=1 to length(s) do
      if c[i]=s[j] then Inc(k);
    if k<>0 then Memo1.Lines.Add(c[i]+'='+IntToStr(k));
  end;
end;
end;

Последний раз редактировалось stil, 22.12.2010 в 10:05.
Ответить с цитированием
  #7  
Старый 22.12.2010, 11:39
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Stil, большое спасибо за помощь.
Ответить с цитированием
  #8  
Старый 22.12.2010, 12:53
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Я думаю так покрасивее будет.
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var 
  a:array[0..9]of byte;
  i:byte;
begin
if Key=#13 then 
  begin
  for i:=0 to 9 do a[i]:=0;
  for i:=1 ot length(edit1.text) do
    inc(a[ord(Edit1.text[i])]);
  memo1.Clear;
  for i:=0 to 9 do 
    if a[i] <> 0 then
      memo1.lines.add(inttostr(i)+' = '+inttostr(a[i]));
  end;
end;
Ответить с цитированием
  #9  
Старый 22.12.2010, 16:29
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Он ругается на, то что я подчеркнул:
Цитата:
for i:=1 ot length(edit1.text) do
я думал сперва, что вы не на ту кнопку нажали и исправил на to, но как не исправляй всеравно ругается.
Ответить с цитированием
  #10  
Старый 22.12.2010, 16:49
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Теперь точно правильно.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  a:array[0..9]of byte;
  i:byte;
begin
  for i:=0 to 9 do a[i]:=0;
  for i:=1 to length(Edit1.Text) do
    Inc(a[strtoint(Edit1.Text[i])]);
  memo1.Clear;
  for i:=0 to 9 do
    if a[i] <> 0 then
      memo1.lines.add(inttostr(i)+' = '+inttostr(a[i]));
end;
Ответить с цитированием
  #11  
Старый 22.12.2010, 17:15
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Asinkrit, все теперь заработала программа. Спасибо
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter