Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Pascal
Перезагрузить страницу Динамические структуры данных
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Yakup Yakup вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2017
Exclamation Динамические структуры данных - 29.11.2017, 22:18

Определить, симметричен ли заданный во входном файле текст (за ним следует точка).
Ответить с цитированием
  (#2 (permalink)) Старый
deckard deckard вне форума
Member
 
Сообщений: 77
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 5 сообщениях
Регистрация: 04.03.2008
По умолчанию 01.12.2017, 17:05

Если имеются ввиду палиндромы, т е фразы, которые читаются слева направо и
справа налево одинаково, то программа может быть такой:

Pascal Код:
var a:string;

function myLen(s:string):integer;
begin
myLen:=ord(s[0]);
end;

function mymid(s:string;b:integer;L:integer):string;
var i:integer;buf:string[255];
begin
buf:='';
for i:=b to b+L-1 do begin
if i<=myLen(s) then buf:=buf+s[i];
end;
mymid:=buf;
end;

function isspace(z:char):boolean;
begin isspace:=((z<='!') or (z=',') or (z='.')) end;

function ispali(b:string):boolean;
var L:string;R:string;i:integer;
begin
L:='';R:='';
for i:=1 to myLen(b) do begin
if not isspace(b[i]) then begin L:=L+b[i];R:=b[i]+R end;
end; {for}
writeln('L=',L);
writeln('R=',R);
ispali:=(L=R)
end;


begin
a:='a roza upala na lapu azora.';
writeln(a);writeln(ispali(a));
a:='ne vidno mord ni lap, a palindromon diven.';
writeln(a);writeln(ispali(a));
a:='test string.';
writeln(a);writeln(ispali(a));
readln;
end.
Ответить с цитированием
  (#3 (permalink)) Старый
Yakup Yakup вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2017
По умолчанию 02.12.2017, 16:35

Pascal Код:
var
f:text;

procedure readFile(f: text);
var
  str: string;
begin
  reset(f);
  while not eof(f) do
  begin
    readln(f, str);
    writeln(str);
  end;
  close(f);
end;


procedure OpredSimmetr(f:text);
var
  str: string;
  i, k: integer;
begin
  reset(f);
  while not eof(f) do
 begin
  readln(f, str);
  k := 0;
  i := 1;
  while(i <= Length(str) div 2) and (k = 0) do
  if str[i] <> str[Length(str) - i + 1] then k := 1
  else
  inc(i);
  if k = 0  then
   begin
    writeln('Симметричная строка: ', str);
   end
  else writeln('Не симметричная строка: ', str);
 end;
 close(f);
 end;
 
 
Begin
  assign(f, 'Dinam.txt');
  readFile(f);
  writeln;
  writeln;
  OpredSimmetr(f)
End.

вот я написал программу. как теперь записать через динамические данные?

симметричные это например: zxcvb bvcxz
Ответить с цитированием
  (#4 (permalink)) Старый
deckard deckard вне форума
Member
 
Сообщений: 77
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 5 сообщениях
Регистрация: 04.03.2008
По умолчанию 02.12.2017, 19:39

Не совсем понятно, что именно требуется от динамических данных.
Если такой вариант:

Pascal Код:
const maxn=100;
var f:text;j,n:integer;pstr:array[1..maxn] of ^string;


procedure readFile(filename:string);
label 1;
begin
assign(f,filename);
  reset(f);
  n:=0;
  while not eof(f) do
  begin
    n:=n+1;if n>maxn then begin n:=maxn;goto 1; end;
    new(pstr[n]);
    readln(f, pstr[n]^);
    writeln(pstr[n]^);
  end;
1:
  writeln(n,' strings were read');
  close(f);
end;

procedure OpredSimmetr(str:string);
var i, k: integer;
begin
  k := 0;
  i := 1;
  while(i <= (Length(str) div 2)) and (k = 0) do
    if str[i] <> str[Length(str) - i + 1] then k := 1 else inc(i);
  if k = 0  then writeln('Symmetrichno: ', str);
  if k = 1  then writeln('Ne symmetrichno: ', str);
end;

Begin
  writeln;writeln('==begin==');
  writeln('free msmory: ',MaxAvail);
  readFile('Dinam.txt');
  writeln('free msmory: ',MaxAvail);
  writeln;
  writeln;
  for j:=1 to n do OpredSimmetr(pstr[j]^);
  for j:=1 to n do Dispose(pstr[j]);
  writeln('free msmory: ',MaxAvail);
  writeln;writeln('== end ==');
  readln;
End.
Ответить с цитированием
  (#5 (permalink)) Старый
Yakup Yakup вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2017
По умолчанию 04.12.2017, 13:39

Pascal Код:
var
f:text;

procedure readFile(f: text);
var
  str: string;
begin
  reset(f);
  while not eof(f) do
  begin
    readln(f, str);
    writeln(str);
  end;
  close(f);
end;


procedure OpredSimmetr(f:text);
var
  str: string;
  i, k,p: integer;
begin
  reset(f);
  while not eof(f) do
  begin
  readln(f, str);
  k := 0;
  i := 1;
  while(i <= Length(str) div 2) and (k = 0) do
  if str[i] <> str[Length(str) - i + 1] then k := 1
  else inc(i);
  if k = 0  then
   begin
    writeln('Симметричная строка: ', str);
    p:=1;
   end;
 end;
 if p=0 then write('Симметричных строк нет');
 close(f);
 end;
 
 
Begin
  assign(f, 'Dinam.txt');
  readFile(f);
  writeln;
  writeln;
  OpredSimmetr(f)
End.

то есть нужно создать динамический массив, загрузить туда строки и потом проверять строки на симметрию
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
deckard deckard вне форума
Member
 
Сообщений: 77
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 5 сообщениях
Регистрация: 04.03.2008
По умолчанию 04.12.2017, 13:58

Pascal Код:
pstr:array[1..maxn] of ^string;

Вот это он и есть - массив указателей, для которого выделяется память под строки оператором new. Вместо string (256 байт) можно оператором type определить строку покороче.
Ответить с цитированием
  (#7 (permalink)) Старый
Yakup Yakup вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2017
По умолчанию 04.12.2017, 16:09

на вашу программу ругается компилятор
Миниатюры
aacuiyiiue.jpg  
Ответить с цитированием
  (#8 (permalink)) Старый
deckard deckard вне форума
Member
 
Сообщений: 77
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 5 сообщениях
Регистрация: 04.03.2008
По умолчанию 04.12.2017, 19:35

Вообще-то я компилировал на Turbo Pascal 7.0 под DOS.
Вот такой вариант получился под Pascal ABC - пришлось вводить record
И функции аналогичной MaxAvail я не нашел.

Pascal Код:
const maxn=100;
type
 str128 = record
    str : string[128];
end;


var f:text;j,n:integer;pstr:array[1..maxn] of ^str128;

procedure readFile(filename:string);
label 1;
begin
assign(f,filename);
  reset(f);
  n:=0;
  while not eof(f) do
  begin
    n:=n+1;if n>maxn then begin n:=maxn;goto 1; end;
    new(pstr[n]);
    readln(f, pstr[n]^.str);
    writeln(pstr[n]^.str);
  end;
1:
  writeln(n,' strings were read');
  close(f);
end;


procedure OpredSimmetr(str:string);
var i, k: integer;
begin
  k := 0;
  i := 1;
  while(i <= (Length(str) div 2)) and (k = 0) do
    if str[i] <> str[Length(str) - i + 1] then k := 1 else inc(i);
  if k = 0  then writeln('Symmetrichno: ', str);
  if k = 1  then writeln('Ne symmetrichno: ', str);
end;


Begin
  writeln;writeln('==begin==');
{  writeln('free msmory: ',MaxAvail);}
  readFile('Dinam.txt');
{  writeln('free msmory: ',MaxAvail);}
  writeln;
  writeln;
  for j:=1 to n do OpredSimmetr(pstr[j]^.str);
  for j:=1 to n do Dispose(pstr[j]);
{  writeln('free msmory: ',MaxAvail);}
  writeln;writeln('== end ==');
  readln;
End.
Ответить с цитированием
Пользователь сказал cпасибо:
Yakup (04.12.2017)
  (#9 (permalink)) Старый
Yakup Yakup вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2017
По умолчанию 04.12.2017, 19:57

спасибо вам огромное!!
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры Арест Вопросы начинающих программистов 0 28.04.2013 23:09
как выделить память в динамические структуры данных!!! Chiko94 С/С++ 4 03.05.2012 12:14
Динамические структуры данных.Списки Yekateri Pascal 1 23.12.2011 00:59
Не компилятся динамические структуры student3 Pascal 1 27.11.2011 15:05
Структуры данных Vovochka Задания за деньги 5 17.11.2011 10:36
visual c++ динамические структуры данных drags95 Вопросы начинающих программистов 1 15.09.2011 01:13
динамические структуры данных mur@vey Вопросы начинающих программистов 0 07.09.2011 21:29
Динамические структуры памяти VSL Delphi 0 14.03.2011 23:13
помогите с задачкой на динамические структуры! zaichonok Pascal 5 10.05.2006 09:23
Динамические структуры и их реализация djonkiller Delphi 2 11.11.2005 18:25
Как делать динамические структуры Barloggg Программирование графики 0 25.10.2005 13:31
Как написать программу динамические структура данных oracul Вопросы начинающих программистов 1 27.01.2005 03:50



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов