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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2011, 20:40   #1
user_12
Новичок
Джуниор
 
Регистрация: 27.12.2011
Сообщений: 1
Смущение Сделать программу многопоточной (достаточно двух потоков). Delphi

Есть код, осуществляет в консольном режиме поиск "счастливых номеров" от 0 до 999999. После чего записывает их в .txt в этой же папке, помещая туда порядковый номер числа, непосредственно число и сумму. Надо сделать, чтобы одновременно запускалось несколько потоков. Сделать 2 потока, в 1 будет считаться половина чисел от 0 до 500000, во втором от 500000 до 999999. Осуществить это надо, используя класс Thread. Помогите пожалуйста

Код:
program happy;
{$APPTYPE CONSOLE}
uses
  SysUtils, Windows;

var
  FileID: TextFile;
  NameProt, S: String;
  i, k1, k2, s1, s2, count: Integer;
  TempsS: array [0..255] of Char;

function WinToRusCon(S: String): String;
begin
  CharToOemBuff(PChar(S), TempsS, Length(S)+1);
  WinToRusCon:=TempsS;
end;

procedure WriteLnToRusCon(S: String);
begin
  CharToOemBuff(PChar(S), TempsS, Length(S)+1);
  WriteLn(TempsS);
end;

procedure MyWrite(StrOut: String);
begin
  Writeln(WinToRusCon(StrOut));
  Writeln(FileID, StrOut);
end;

begin
  NameProt:='listhappy.txt';
  try
      AssignFile(FileID, NameProt);
      if FileExists(NameProt) then DeleteFile(PChar(NameProt));
      ReWrite(FileID);
      count:=0;
      for i:=0 to 999999 do
        begin
          k1:=i div 1000;     k2:=i mod 1000;
          s1:=(k1 div 100) + ((k1-(k1 div 100)*100) div 10 )+ k1 mod 10;
          s2:=(k2 div 100) + ((k2-(k2 div 100)*100) div 10 )+ k2 mod 10;
          if s1=s2 then
            begin
              count:=count+1;
              FmtStr(S, '%5u %6.6u %2u', [count, i, s1]);
              MyWrite(S);
            end;
        end;
      MyWrite('итого '+IntToStr(count)+' счастливых билетов');
    finally
      CloseFile(FileID); 
  end;

end.
user_12 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать работу двух окно одновременно? Delphi JonMagon Помощь студентам 5 08.04.2011 07:42
Как сделать больше 10 потоков BoT_T Общие вопросы Delphi 5 02.01.2011 18:30
Параллельный запуск двух потоков Sam Gold Общие вопросы C/C++ 0 30.04.2010 20:56
Реализация двух потоков, работа с буфером, механизм семафоров (С++ или Delphi) shoonya Помощь студентам 0 05.04.2010 14:08
Помогите сделать курсовую через программу Delphi Рина8807 Помощь студентам 6 18.10.2007 10:58