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

Модератор: Злобный

Ответить
Аватара пользователя
qnx_empty
Юзер
Сообщения: 67
Зарегистрирован: Ср мар 19, 2003 22:15
Откуда: inet

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

Сообщение qnx_empty »

как в паскле можно зделать двух проточную программу
Аватара пользователя
Atyla
Отец
Сообщения: 4194
Зарегистрирован: Вс сен 01, 2002 18:35
Откуда: С вытрезвителя.
Контактная информация:

Re: pascal

Сообщение Atyla »

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

Сообщение qnx_empty »

не надо чтоб программа делала два действия сразу
Аватара пользователя
Atyla
Отец
Сообщения: 4194
Зарегистрирован: Вс сен 01, 2002 18:35
Откуда: С вытрезвителя.
Контактная информация:

Сообщение Atyla »

qnx_empty писал(а):не надо чтоб программа делала два действия сразу
ХМ, под Dos? :gg:
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Сообщение Белый С. »

qnx_empty писал(а):не надо чтоб программа делала два действия сразу
Смотря какие действия. Ведь даже из РС Спикера выжимали звуки, похожие на человеческую речь, дёргая его по таймеру, а в конкретном случае это может быть куда легче.
Аватара пользователя
Vital
Продвинутый
Сообщения: 558
Зарегистрирован: Вт янв 28, 2003 10:21
Контактная информация:

Сообщение Vital »

Прерывние 1Сh - это то, что нужно для эмуляции многопоточности у ДОСи :) Может кому-то TSR о чем нибудь говорит ;)
Аватара пользователя
MoD}|{aXeD
Завсегдатай
Сообщения: 2394
Зарегистрирован: Чт янв 15, 2004 23:10
Откуда: из Афгана, че непонятного ёпть!?
Контактная информация:

Сообщение MoD}|{aXeD »

Пипл помогите.
У мя graph не идет, не инициализируется.
Подскажите че делать!?
Где БГИ высрать?!
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Сообщение Белый С. »

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

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

А в Си народ пачками ошибается при указании пути: бэкслэши надо двойные.
Ещё на некоторых пентиумах бывают глюки с crt, но это вроде другое.
Последний раз редактировалось Белый С. Вс фев 29, 2004 12:51, всего редактировалось 2 раза.
Аватара пользователя
MoD}|{aXeD
Завсегдатай
Сообщения: 2394
Зарегистрирован: Чт янв 15, 2004 23:10
Откуда: из Афгана, че непонятного ёпть!?
Контактная информация:

Сообщение 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 в коммент, типо чтобы не проверял, все равно галяк...
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Сообщение Белый С. »

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

А самое действенное - проверь что бгишка лежит по указанному тобой пути; временно загони её в текущую директорию и дай пустую строку в пути. Дерзай.
Аватара пользователя
MoD}|{aXeD
Завсегдатай
Сообщения: 2394
Зарегистрирован: Чт янв 15, 2004 23:10
Откуда: из Афгана, че непонятного ёпть!?
Контактная информация:

Сообщение MoD}|{aXeD »

Белый С.,
Спасибо.
Попробую че-нить сделать.
Very Good
Юзер
Сообщения: 214
Зарегистрирован: Пт дек 01, 2006 08:07
Откуда: Кишинев
Контактная информация:

Сообщение 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"

Отблагодарю чем смогу!!
Аватара пользователя
Unknown
Продвинутый
Сообщения: 269
Зарегистрирован: Ср янв 25, 2006 21:07
Контактная информация:

Сообщение 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.
Very Good
Юзер
Сообщения: 214
Зарегистрирован: Пт дек 01, 2006 08:07
Откуда: Кишинев
Контактная информация:

Сообщение 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:
LI
Новичок
Сообщения: 1
Зарегистрирован: Чт май 29, 2008 13:32

Сообщение LI »

Здравствуйте, ребята!
Помогите, пожалуйста,написать программу на Турбо Паскале:
Задание на обработку матрицы:
Осуществить циклический сдвиг элементов квадратной матрицы вправо на К элементов таким образом: эл-ты 1 строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку справа налево, из нее - в 1-й столбец снизу вверх, из него - в 1-ю строку; для остальных элементов аналогично.
LI
Аватара пользователя
ПанкоМат
Продвинутый
Сообщения: 352
Зарегистрирован: Ср мар 28, 2007 20:59

Сообщение ПанкоМат »

Если я правильно понял задание то сдвиг происходит таким образом:

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

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.
Ответить

Вернуться в «Программирование»