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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2012, 20:14   #1
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию За один просмотр файла вывести все числа, сумма цифр которых наименьшая

дана последовательность целых чисел, за один просмотр файла вывести все числа, сумма цифр которых наименьшая.
вот мои наработки, итак
сначала создаем типы
Код:
uses crt;
type
 fil=record;
 chislo:integer;
end;
ftype=file of fil;
pok=^prt;
prt=record
 inf:fil;
 next:pok;
end;
потом инициализируем элементы
Код:
var f:ftype; s:fil; L:pok; x:integer; m,stakc:integer;
procedure Init (var s:fil);
begin
 with s do
  begin
   ch:=random(100);
  end;
end;
потом записываем все это в файл
Код:
Procedure Init2 (var f:ftype);
Var s1:fil;
begin
 rewrite(f);
init(s1);
 write (f,s1);
 init(s1);
close(f);
end;
теперь инициализируем стек
Код:
Procedure Init1 (var L:pok; var f:ftype; var m,stack:integer);
var h:pok; d:fil;
begin
 reset(f);
  L:=nill;
  m:=0;
  stack:=0;
while not eof(f) do
 begin
  read(f,d);
   with d do
    begin
      if d.ch>m
       then m:=d.ch;
      end;
new(h);
h^.inf:=d;
h^.next:=L;
L:=h;
stack:=stack+1;
end;
close(f);
end;
и печатаем стек
Код:
Procedure druck(var L:pok(;
begin
 if L=nil
  then Memo1.Lines.Add('конец стека');
   else begin
    Memo1.Text:=IntToStr(L^.inf.ch);
   druck(L^.next);
  end;
end;
я так понимаю, что дальше нужно назвать файл
Код:
Label1.Text:=name;
assign(f,name)
дальше, я так понимаю, нужно, собственно, найти эти элементы (сума цифр которых наименьшая), процедура такая
Код:
s:=0;
     while ( x < > 0 ) do begin
       s := s + (x mod 10);
       x := x div 10;
     end;
но как это применить к основной программе? в переменных я совсем запутался. помогите составить единый код.
gylayko вне форума Ответить с цитированием
Старый 06.10.2012, 20:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
type
fil=record;
chislo:integer;
end;
Лишнее. Достаточно ftype=file of integer;
Цитата:
потом инициализируем элементы
Лишнее
Код:
Procedure Init2 (var f:ftype);
var i:integer;
begin
rewrite(f);
for i:=1 to 10 do write (f,random(100));
close(f);
end;
Далее считываем файл:
Код:
var m,i:integer;
...
reset(f); m:=0;
while not eof(f) do begin
 read(f,i);
 if (m=0) or (((i div 10)+(i mod 10))<((m div 10)+(m mod 10))) then m:=i;
end; close(f);
Ну и тут уже m заносить в стек.
После в цикле пройтись по стеку пока сумма цифр очередного элемента равна сумме цифр следующего элемента и вывести их на экран.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа, которая выводит на экран все четырехзначные числа, сумма цифр которых равна 7 vitaaly Паскаль, Turbo Pascal, PascalABC.NET 3 06.02.2012 15:46
Получить все меньшие натуральные числа, квадрат суммы цифр которых равен m (C) VIKA1829 Помощь студентам 0 05.04.2011 19:59
C++ Вывести на экран все натуральные числа из диапазона от A до B, в записи которых цифра 7 встречается maloy0103 Помощь студентам 1 27.12.2010 00:17
определить все двузначные числа сумма квадратов цифр которых кратна числу 15 [Pascal] mrRastom Помощь студентам 5 16.12.2010 09:47
вводим два числа, получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m Sparky Помощь студентам 2 22.11.2009 21:59