Часовой пояс: UTC + 3 часа




Куратор(ы):   Lord_of_Darkness   



Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 985 • Страница 1 из 501  2  3  4  5 ... 50  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 
Прилепленное (важное) сообщение

Убедительная просьба ко всем, кто выкладывает исходники:
1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы

Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!

Прежде чем задать вопрос, воспользуйтесь учебником


Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь

Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 05.03.2003
Откуда: Россия,Поволжье
overover Качаешь Turbo Pascal (1.09 Мб), распаковываешь, запускаешь turbo.exe и открываешь свой PAS. Дальше я думаю сам разберёшься.

_________________
С каждым днём всё радостнее жить.


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
overover
Цитата:
Таких ламерских вопросов тут еще, видимо, не задавали Smile,
но все же:
есть исходник в виде PAS (аж 40 строк Smile) 1995 года написания.
Нужно его преобразовать в исполняемый файл.
Откуда можно выкачать компилятор(?) поменьше размером?

P.S. Диска с Паскалем\Дельфи нет под рукой, да я и все равно
не знаю, как ими пользоваться Smile

ctrl+F9
P.S. Это запуск проги, ну и EXE-шник тоже появиться.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


Последний раз редактировалось Lord_of_Darkness 04.05.2006 23:04, всего редактировалось 1 раз.

 

Junior
Статус: Не в сети
Регистрация: 15.08.2004
Откуда: Казахстан
Как считать массив с текстового файла в паскале
Например текстовой файл содержит инфу
4 2
42 54 77 85

4- кол-во чисел в массиве
2 ну это вам не нужно просто число
а 42 54 77 85 сам массив который как указано состоит из четырех числе
Ну начало я знаю:
read(f,n);
read(k,f); а массив как??? так не получается
read(f,massiv[n]);
Помогите пожалуйста


 

Advanced member
Статус: Не в сети
Регистрация: 23.10.2003
Откуда: Иркутск/Майкоп
Код:
read(f,n,k);
for i:=1 to n do
  read(f,massiv[i]);

_________________
Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.


 

Junior
Статус: Не в сети
Регистрация: 15.08.2004
Откуда: Казахстан
Большое спасибо

_________________
Жизнь удалась.......


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 24.10.2004
Откуда: Конфиданциально
Вот пишу
Код:
var i : extended;
begin
i := 0.99;
writeln(i);
readln;
end.

А компилятор мне ошибку 116 суёт. Как правильно надо?

Нашёл ответ. Options->Compiler->8078/80287->X Можно также {$N+}
Отредактировано куратором: Lord_of_Darkness. Дата: 05.03.2006 14:08


 

Member
Статус: Не в сети
Регистрация: 01.05.2004
Откуда: VRN
Фото: 97
Собственно я не понимаю что тут надо делать и как это изобразить в паскале.

С помощью решета Эратосфера найдите четверти меньше n простых чисел,принадлежащих одному десятку(например:11,13,17,19).
Решетом эратосфера называют следующий способ определения простых чисел.Вычислим подряд все целые числа,кратные 2,зачеркнем.первое из оставшихся чисел-3,подчеркнем его,а все числа,кратные трем зачеркнем.Первое число из оставшихся теперь 5,т.к. 4 уже зачеркнуто.Подчернем его как простое,а все большие числа кратные пяти,зачеркнем и т.д.

_________________
DLSS RENDERING RES.->DLSS OUTPUT RES.
1440×810->1920×1080(FHD)
1920×1080->2560×1440(QHD)
2560×1440->3840×2160(UHD)
ʞɐɯ оɯ-ʞɐʞ


 

Member
Статус: Не в сети
Регистрация: 21.10.2003
Откуда: Брест
Фото: 47
Маловато для понимания... Ибо nэту байду я есди и знал, то уже давно забыл :D
Хотя опытным глазом вижу, что здесь совсем не сложно... Я бы сказал, что непонятки вносит фраза "четверти меньше n простых чисел". Что здесь означает четверти меньше n?

Добавлено спустя 10 минут, 50 секунд:
Наверное надо найти четверти простых чисел, меньших n и принадлежащих одному десятку. По-моему так уже проще...

Добавлено спустя 7 минут, 2 секунды:
В общем, могу в нескольких предложениях выдать приблизительный алгоритм решения , если я правильно понял постановку задачи...
Кстати скажи, по чем конкретно это тебе задали курсач и на каком курсе?

_________________
А ещё недавно ждали AMD Steamroller на AM3+


 

Advanced member
Статус: Не в сети
Регистрация: 23.10.2003
Откуда: Иркутск/Майкоп
Правильно - "четверки простых чисел, принадлежащих одному десятку". А какие ограничения на n? Указатели нужны?

_________________
Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.


 

Member
Статус: Не в сети
Регистрация: 01.05.2004
Откуда: VRN
Фото: 97
все как было написал
Больше ничего не было дано

_________________
DLSS RENDERING RES.->DLSS OUTPUT RES.
1440×810->1920×1080(FHD)
1920×1080->2560×1440(QHD)
2560×1440->3840×2160(UHD)
ʞɐɯ оɯ-ʞɐʞ


 

Junior
Статус: Не в сети
Регистрация: 15.08.2004
Откуда: Казахстан
Дана задача
***********************************************
Будем рассматривать только строчки, состоящие из заглавных латинских букв. Например, рассмотрим строку AAAABCCCCCDDDD. Длина этой строки равна 14. Поскольку строка состоит только из латинских букв, повторяющиеся символы могут быть удалены и заменены числами, определяющими количество повторений. Таким образом, данная строка может быть представлена как 4AB5C4D. Длина такой строки 7. Описанный метод мы назовем упаковкой строки.
Напишите программу, которая берет упакованную строчку и восстанавливает по ней исходную строку.
Примеры

g.in g.out
3A4B7D AAABBBBDDDDDDD
22D7AC18FGD DDDDDDDDDDDDDDDDDDDDDAAAAAAACFFFFFFFFFF
FFFFFFFFGD
95AB AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAB
40AB39A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
****************************************************

Как сделать??? Я тут попроюовал но кажись не правильно, подскажите пожалуйста.

Код:
var
f:text;
stroka,p,k,h:string;
r,i,n,ch,l,errcode,err:integer;
begin
assign(f,'p.in');
reset(f);
read(f,stroka);
p:='';
h:='';
for i:=1 to length(stroka) do
if stroka[i] in ['1'..'9'] then begin
if stroka[i+1] in ['1'..'9'] then
k:=stroka[i]+stroka[i+1];
val(k,l,err);
for r:=1 to l do
h:=h+stroka[i];
delete(stroka,l,2);
insert(h,stroka,l);
end
else
val(stroka[i],ch,errcode);
for n:=1 to ch do
p:=p+stroka[i];
delete(stroka,ch,1);
insert(p,stroka,ch);
close(f);
writeln('otvet',stroka);
ну тут запись в файл и так далее
readln;
end.


Помогите пожалуйста
Отредактировано куратором: Lord_of_Darkness. Дата: 05.03.2006 14:11


 

Member
Статус: Не в сети
Регистрация: 08.12.2004
Откуда: Москва
Текст программы стоит разбить по логическим блокам, чтоб понятнее было.
Когжа будешь вставлять текст, помести его в тег
Код:
 
.
Я допустил что перед одиночным сиволом стоят 1.
То есть в 2) примере 22D7A1C18F1G1D
Реализовать в точности как у тебя несложно, просто возиться не хочется, да потом, это не главное.
Напишу свой вариант на псевдокоде, думаю в Паскаль перевести не так сложно.

Код:
Распаковка

Итак, файл открыт, строка s прочитана
num : string;         /*число символов*/
res   : string;         /*преобразованная строка*/
i : integer ;            /*счётчик*/
ind : integer ;        /*счётчик*/
i = 1; /*индексация в строке от 1*/
пока(i<длина(s))
( /*лишние проверки на цифры делать можно, но надо ли?*/
  если(s[i] в '0'..'9')
  ( num:='';
    пока (s[i] в '0'..'9')
    ( num:= num + s[i];
      /*сдвиг по строке*/
      i:= i+1;
    )
  )
  /*из строки в число*/
  len := число(num);
  //символ из алфавита?
  если(s[i] в 'A'..'Z')
     /*добавление в результат
     для ind от 1 до len делать
     ( res:=res+ s[i];
     )
)/*конец цикла пока */
/*Запись строки res в файл.*/
/*Обнуление res*/

Упаковка
Итак, файл опять же открыт :), строка s прочитана

res   : string;         /*преобразованная строка*/
i : integer ;            /*счётчик*/
counter : integer ;  /*счётчик повторов*/

ind : integer ;        /*счётчик*/
i = 1; /*индексация в строке от 1*/
counter = 1; /*символ уже однажды встретился*/

пока(i<длина(s))
( /*по-моему в Паскале последующее сравнение реализуется с помощью ord или chr, забыл уже*/
  если(s[i] == s[i+1])
  {i:=i+1;
   counter:=counter+1;
  }
  иначе
  (  res:= res + строка(counter);
     res:= res + s[i];
     i:=i+1;
  )
)
/*Запись строки res в файл.*/
/*Обнуление res*/

_________________
Я не суеверный. Я наблюдательный


Последний раз редактировалось khasya 04.01.2005 1:23, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Олжас
Написал на Делфи 7. В принципе перенести на Турбо Паскаль очень просто.
Вот ссылка на архив с исходником.
http://cp.people.overclockers.ru/cgi-bi ... laghas.rar
Если надо обратная распаковка рапаковка - пиши. Помогу - пока время есть.]
Отредактировано куратором: Lord_of_Darkness. Дата: 05.03.2006 14:14

_________________
Лучшая зашита - это нападение.


 

Junior
Статус: Не в сети
Регистрация: 15.08.2004
Откуда: Казахстан
спасиб щя просмотрю

_________________
Жизнь удалась.......


 

Member
Статус: Не в сети
Регистрация: 01.06.2003
Откуда: Pskov
Код:
Function UnpackStr(S:string):string;
Const
    ResultStr :string ='';
    counterS  :string ='';
    counterB  :word   =0;
    j         :word   =0;
    res       :integer=0;
    i         :byte   =0;

Begin

for i:=1 to length(s) do
begin
  case s[i] of
  '0'..'9':counterS:=counterS+s[i];
  'A'..'Z':
          begin
            val(counterS,counterB,res);
            if  counterS='' then counterB:=1;
            for j:=1 to counterB do ResultStr:=ResultStr+s[i];
            counterS:='';
          end;
  else writeln('ERROR!!! Недопустимый символ!: ',s[i]);
  end;{case}
end;

UnpackStr:=ResultStr;

End; {UnpackStr}

{==================================================================}

Function PackStr(S:string):string;
Const     i:byte=0 ;
    counter:byte=1 ;
    prevCh :char  =#32;
    ResultS:string='';
   counterS:string='';

    procedure AddNCh;
    begin
      str(counter,counterS);
      if counter=1 then counterS:='';
      ResultS:=ResultS+counterS+prevCh;
      counter :=1;
      counterS:='';
      prevCh:=s[i];
    end;

Begin
  PrevCh:=s[1];
  for i:=2 to length(S) do
    if PrevCh=s[i]
    then inc(counter)
    else AddNCh;
  AddNCh;

  PackStr:=ResultS;
End; {PackStr}

{==================================================================}

Const PackedS:string='1B3A33';

BEGIN
{ writeln('Введите упакованную строку ');
  readln (PackedS);}
  writeln('  Packed string: ',PackedS);
  writeln('Unpacked string: ',UnpackStr(PackedS));
  writeln('Repacked string: ',PackStr(UnpackStr(PackedS)));
END.

Вроде работает :-)

_________________
ПС: [13-06-2006] Идеальный скриншот BIOS'а ? Запросто ! // K.V.


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Олжас
Прогу обновил. Теперь отлично работает компрессия-декомпрессия. Выполняется соотв. процедурами.
Но там декомпрессия только для заглавных букв.
http://cp.people.overclockers.ru/cgi-bi ... laghas.rar

_________________
Лучшая зашита - это нападение.


 

Junior
Статус: Не в сети
Регистрация: 15.08.2004
Откуда: Казахстан
Мне вот код дали решенной задачи этой я проверял работает но я некоторые вещи не понял не могли нписать комминтарий к сложным функциям

Код:
program NSolve;
var Symbol:array[1..100] of char;
    RepeatsCount:array[1..100] of integer;
    N:integer;                {
    S:string;                }
procedure Init;
var ch:char;
    C:integer;
begin                 {
  if paramcount=0 then
    begin              }
      assign(input,'g.in'); {
    end
  else
    begin
      s:=paramstr(1);
      assign(input,s);
    end;                     }
  reset(input);
  N:=0;
  while not seekeoln(input) do
    begin
      inc(N);
      read(ch);
      if ch in ['0'..'9'] then
        begin
          C:=0;
          while ch in ['0'..'9'] do
            begin
              C:=C*10+ord(ch)-48;
              read(ch);
            end;
        end
      else
        C:=1;
      Symbol[N]:=ch;
      RepeatsCount[N]:=C;
    end;
  close(input);
end;
procedure Run;
var i,j:integer;
begin
  j:=0;
  for i:=1 to N do
    While RepeatsCount[i]>0 do
      begin
        inc(j);
        if j>40 then
          begin
            writeln;
            j:=1;
          end;
        write(Symbol[i]);
        dec(RepeatsCount[i]);
      end;
  writeln;
end;
begin
  Init;                       {
  if paramcount=0 then
    begin                    }
      assign(output,'g.out');  {
    end
  else
    begin
      delete(s,length(s)-2,3);
      s:=s+'res';
      assign(output,s)
    end;                        }
  rewrite(output);
  Run;
  close(output);
end.


Тег добавил. vor


 

Junior
Статус: Не в сети
Регистрация: 15.08.2004
Откуда: Казахстан
Вот задача:
Дано число N (1 <= N <= 100000), а затем N натуральных чисел из диапазона от 1 до 100.
Выведите N чисел в неубывающем порядке
Пример
5
5 4 3 2 1
Ответ
1 2 3 4 5

Ну я написал но массив не может работать если колво цифр большое вот мое решение

Код:
type
s=array[1..32000] of integer;
var
m:s;
i,buf,k,n:integer;
f1,f2:text;
begin
assign(f1,'input.txt');
assign(f2,'output.txt');
reset(f1);
rewrite(f2);
read(f1,n);
for k:=1 to n do read(f1,m[k]);
for i:=1 to n-1 do
begin
for k:=1 to n-1 do
begin
if m[k]>m[k+1] then
begin
buf:=m[k];
m[k]:=m[k+1];
m[k+1]:=buf
end;
end;
end;
for k:=1 to n do
write(f2,m[k],' ');
close(f1);
close(f2);
end.


При увеличение массива больше чем 32000 паскаль начинает ругаться ordinal type expected ну я перевел но что нужно сделать чтоб было array[1..100000].....? Скажите please/
Отредактировано куратором: Lord_of_Darkness. Дата: 05.03.2006 14:15


 

Member
Статус: Не в сети
Регистрация: 01.06.2003
Откуда: Pskov
Олжас

В турбо паскале размер каждого сегмента (кода/данных) ограничен 64Кбайтами. Соответственно, размер любой переменной, в том числе и массива, должен укладываться в эти 64Кб. Если не укладывается, то статическими переменными воспользоваться вряд ли удастся. Необходимо переходить к динамическим.

Но даже в этом случае в туро-паскакале невозможно будет создать одномерный массив с количеством элементов больше $FFFF (=65000) и общим размером больше $FFFF байтов (=64Кб). Зато теперь можно использовать несколько таких динамических 64-х килобайтных массивов.

В твоем случае вместо одного массива можно использовать 3..4 массива. А обращаться к ним можно через процедуру/функцию (например, SetArray(idx:longint;data:integer) / GetArray(idx:longint):integer), внутри которых по индексу определять, к какому именно из трех массивов производить обращение.

Пример тут накатал:
Код:
{$I C:\programS\TP\_common\byte2xxx.inc}
{byte2xxx.inc содержит Word2hex,DWord2hex -- простые функции, выводящие число в шестнадцатиричном виде.}

Const ArrSz=$1000; {количество элементов во вспомогательном массиве}
      myArrNum=4; {число вспомогательных массивов}

Type DynArr=array[1..ArrSz] of longint; {тип вспомогательного массива}
     DynArrT=^DynArr;

Var index:longint;
    myArray:array [1..myArrNum] of DynArrT;
 {собственно ПСЕВДОмассив повышенной вместимости,
 к его элементам необходимо обращаться через GetArray/SetArray}

    i:byte;

{--------------------------------------------------------------------------}

Function GetArray(idx:longint):longint;
Var diapazon:byte;
Begin
  diapazon:=((idx-1) div ArrSz);
  if diapazon<(myArrNum)
   then GetArray:=MyArray[diapazon+1]^[idx-ArrSz*diapazon];
End;

{--------------------------------------------------------------------------}

Procedure SetArray(idx:longint;data:longint);
Var diapazon:byte;
Begin
  diapazon:=((idx-1) div ArrSz);
  if diapazon<(myArrNum)
   then MyArray[diapazon+1]^[idx-ArrSz*diapazon]:=data;
End;

{--------------------------------------------------------------------------}

Procedure ShowFreeMem;
Begin
  writeln('MemAvail=',Dword2hex(MemAvail),'h');
  writeln('MaxAvail=',Dword2hex(MaxAvail),'h');
End;

{--------------------------------------------------------------------------}

BEGIN

if MaxAvail{MemAvail}>myArrNum*SizeOf(DynArr) then
begin

   ShowFreeMem;

   for i:= 1 to myArrNum do New(MyArray[i]);

   for i:= 1 to myArrNum do
       writeln(i,': segment = ',word2hex(Seg(MyArray[i]^)),
                 ';  offset = ',word2hex(Ofs(MyArray[i]^)));

   ShowFreeMem;

   {----------Работа с ПСЕВДОмассивом-------------------------------}
     for index:=1 to ArrSz*myArrNum do SetArray(index,index);
     for index:=1 to ArrSz*myArrNum do
        if GetArray(index)<>index then
        begin
          writeln('Error!!! index=',index);
          readln;
        end;
   {-----------------------------------------}

   for i:= myArrNum downto 1 do Dispose(MyArray[i]);
end
else writeln('Error!!! Не хватает памяти !');

ShowFreeMem;

END.
для удобства использования лучше организовать это дело в виде объекта


Есть еще вариант: организовать "свой" массив через указатели -- но с этим ты вряд ли справишься :haha:.

ЗЫ: Научись, наконец, пользоваться тэгом [Code] :x

_________________
ПС: [13-06-2006] Идеальный скриншот BIOS'а ? Запросто ! // K.V.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 985 • Страница 1 из 501  2  3  4  5 ... 50  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan