Страница 1 из 1

pascal - многопоточное программирование

Добавлено: Пн авг 11, 2003 19:11
qnx_empty
как в паскле можно зделать двух проточную программу

Re: pascal

Добавлено: Пн авг 11, 2003 19:15
Atyla
qnx_empty писал(а):как в паскле можно зделать двух проточную программу
В каком смысле 2-х проточную?
2-х поточную может? %)
То есть шобы одна програ запускала 1 и более потоков? 8О)
В Паскале низя, хотя мона извратиться под Turbo Pascal for Windows 3.1 извратившись с айпишными функциями... %)
Может ты имел в виду, как сделать под дельфи? %)

Добавлено: Пн авг 11, 2003 20:03
qnx_empty
не надо чтоб программа делала два действия сразу

Добавлено: Пн авг 11, 2003 20:16
Atyla
qnx_empty писал(а):не надо чтоб программа делала два действия сразу
ХМ, под Dos? :gg:

Добавлено: Сб янв 03, 2004 05:16
Белый С.
qnx_empty писал(а):не надо чтоб программа делала два действия сразу
Смотря какие действия. Ведь даже из РС Спикера выжимали звуки, похожие на человеческую речь, дёргая его по таймеру, а в конкретном случае это может быть куда легче.

Добавлено: Вс янв 04, 2004 17:40
Vital
Прерывние 1Сh - это то, что нужно для эмуляции многопоточности у ДОСи :) Может кому-то TSR о чем нибудь говорит ;)

Добавлено: Сб фев 21, 2004 18:45
MoD}|{aXeD
Пипл помогите.
У мя graph не идет, не инициализируется.
Подскажите че делать!?
Где БГИ высрать?!

Добавлено: Пн фев 23, 2004 01:20
Белый С.
MoD}|{aXeD, обычно - достаёшь egavga.bgi, если нету - любым гуглом ищи.
uses graph;{В начале}
const path='';{Путь к бгишке}
var gd,gm:integer;

gd:=0; initgraph(gd,gm,path); {Инициализация по умолчанию}
closegraph; {Обратно в текстовый режим}

А в Си народ пачками ошибается при указании пути: бэкслэши надо двойные.
Ещё на некоторых пентиумах бывают глюки с crt, но это вроде другое.

Добавлено: Сб фев 28, 2004 23:42
MoD}|{aXeD
Белый С.,
egavga.bgi есть.
Пишу:
uses graph {В начале}

procedure initialize;
var x,y;
begin
detectgraph(x,y);
initgraph(x,y,'C:\TP\BGI');
if graphresult<>0 then halt
end;

полюбому не работает. По идее графрезалт при успешной инициализации должен быть 0, но он почему то остается 1. Пытался брат if в коммент, типо чтобы не проверял, все равно галяк...

Добавлено: Вс фев 29, 2004 12:50
Белый С.
MoD}|{aXeD, x с y, конечно, integer.
После uses graph надо ;
detectgraph сроду не использовал, писал x:=detect; хотя это тот же ноль, при этом initgraph сам всё определит. Можно вообще ничего не определять, а присвоить иксу 9 и игреку 2 (640х480х16). Была ещё функция выдать текст ошибки по коду, GraphErrorMsg(ErrorCode: Integer): string; , примени к graphresult.

А самое действенное - проверь что бгишка лежит по указанному тобой пути; временно загони её в текущую директорию и дай пустую строку в пути. Дерзай.

Добавлено: Ср мар 03, 2004 23:11
MoD}|{aXeD
Белый С.,
Спасибо.
Попробую че-нить сделать.

Добавлено: Пн май 26, 2008 18:49
Very Good
Ребятки, как говориться - I need HELP!!!
Не хочу создавать отдельную тему и спрошу здесь.
Срочно нужно решить одну задачку из Паскаля, а я даже и не знаю кто есть Паскаль. Помогите, а? Очень сильно прошу.
Вот, собственно, и сама задача:

"In fishierul int.txt sunt inmagazinate numerele naturale separate prin spatiu.Sa se scrie programul care inscrie in fishierul out.txt numerele prime din fishierul de intrare"

Отблагодарю чем смогу!!

Добавлено: Пн май 26, 2008 22:34
Unknown

Код: Выделить всё

program primfile;
uses crt;
var f,g:text;
    n:integer;

function esteprim(n:integer):boolean;
var este:boolean;
    i,divizori:integer;
begin
  este:=true;
  divizori:=0;
  i:=0;
  repeat
    inc(i);
    if (n mod i = 0) then inc(divizori);
  until (i>n)or(divizori>2);
  if divizori>2 then este:=false;
  esteprim:=este;
end;

begin
  clrscr;
  assign(f,'in.txt');reset(f);
  assign(g,'out.txt');rewrite(g);
  while not eof(f) do begin
   read(f,n);
   if esteprim(n) then write(g,n,' ');
  end;
  close(g);
end.

Добавлено: Вт май 27, 2008 17:23
Very Good
Unknown писал(а):

Код: Выделить всё

program primfile;
uses crt;
var f,g:text;
    n:integer;

function esteprim(n:integer):boolean;
var este:boolean;
    i,divizori:integer;
begin
  este:=true;
  divizori:=0;
  i:=0;
  repeat
    inc(i);
    if (n mod i = 0) then inc(divizori);
  until (i>n)or(divizori>2);
  if divizori>2 then este:=false;
  esteprim:=este;
end;

begin
  clrscr;
  assign(f,'in.txt');reset(f);
  assign(g,'out.txt');rewrite(g);
  while not eof(f) do begin
   read(f,n);
   if esteprim(n) then write(g,n,' ');
  end;
  close(g);
end.

Спасибо, Уважаемый!!! :super:

Добавлено: Чт май 29, 2008 13:40
LI
Здравствуйте, ребята!
Помогите, пожалуйста,написать программу на Турбо Паскале:
Задание на обработку матрицы:
Осуществить циклический сдвиг элементов квадратной матрицы вправо на К элементов таким образом: эл-ты 1 строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку справа налево, из нее - в 1-й столбец снизу вверх, из него - в 1-ю строку; для остальных элементов аналогично.
LI

Добавлено: Сб июн 21, 2008 13:54
ПанкоМат
Если я правильно понял задание то сдвиг происходит таким образом:

Код: Выделить всё

11 12 13         21 11 12
21 22 23  ->     31 22 13
31 32 33         32 33 23
, если так, то

Код: Выделить всё

Program sdvig;
Uses CRT;
const n=5;

type mass=array [1..n,1..n] of integer;
Procedure Vivod(A:mass);
  var i,j:integer;
  begin
      for i:=1 to n do
       begin
         for j:=1 to n do
             write(A[i,j]:5);
         writeln;
       end;
   end;
 var A,B:mass;
     i,j,k,m:integer;
Begin
     for i:=1 to n do
         for j:=1 to n do
             begin
                  write('A[',i,',',j,']=');
                  readln(A[i,j]);
             end;
     clrscr;
     writeln('     ***Ishodnij massiv***');
     Vivod(A);
     write('  - Na skoliko pozitsi sdvinuti elementi?  K=');
     readln(k);
     if (k<1) then
            begin
              writeln(' Osibka!!! K<1');
              Exit;
            end;
     for m:=1 to k do
         begin
            for i:=1 to n do
               for j:=1 to n do
                   begin
                      if (i= j) and (i+j= n+1) then B[i,j]:=A[i,j];
                      if (i<=j) and (i+j< n+1) then B[i,j+1]:=A[i,j];
                      if (i< j) and (i+j>=n+1) then B[i+1,j]:=A[i,j];
                      if (i>=j) and (i+j> n+1) then B[i,j-1]:=A[i,j];
                      if (i> j) and (i+j<=n+1) then B[i-1,j]:=A[i,j];
                   end;
            for i:=1 to n do
               for j:=1 to n do
                 A[i,j]:=B[i,j];
         end;
        writeln('    ***Polucenaya matritsa***');
        Vivod(B);
        readkey;
end.