Помощь - Поиск - Пользователи - Календарь
Полная версия: 3 задачи... (полуработающие!) Help...
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
DCRM
Люди, ХЕЛП!!!
Вот поехали...:
Задача 1!
Условие:
В последовательности из 10 5ти буквенных слов найти и поменять местами пару слов, у которых 1е три буквы совпадают с тремя последними буквами другого...
Вот мой ответ(использую автозаполнение, ИМХО лень заполнять))) ):
РАБОТАЕТ ЧЕРЕЗ РАЗ, ИНОГДА ДВОИТ СЛОВА И ГЕНРИТ ФИГ ЗНАЕТ КАКИЕ СЛОВА...

program Z1;
uses CRT;
const
m=10;
type
myword=string[5];
var
massiv:array[1..m] of myword;
t,z:string[3];
ii,i1,ii1:1..m;
i:integer;
q:myword;

function genword:Myword;
var
i:integer;
tstr:myword;

begin

tstr:='';

for i:= 1 to 5 do
tstr:=tstr+chr(random(4)+65);
genword:=tstr;
end;
begin
randomize;

for i:=1 to m do
massiv[ i ]:=genword;

for i:=1 to m do
begin
write(massiv[ i ]:6);
end;
writeln;
{PROGA}
for i:=1 to m do
begin
t:=copy(massiv[ i ],1,3);
i1:=i;
for ii:=1 to m do
begin
if ii<>i then
z:=copy(massiv[ii],3,3);
ii1:=ii;
if t=Z then
begin
writeln (massiv[ i ],' ',massiv[ii]);
q:=massiv[ii1];
massiv[ii1]:=massiv[i1];
massiv[i1]:=q;
end;
end;
end;
for i:=1 to m do
begin
write(massiv[ i ]:6);
end;
readln;
end.


Задача 2!
Тема:
Работа с внешними файлами

Условие:
Создать файл, содержащий сведения о студентах вашей группы (ФИО, дата рождения):
а) Выбрать самого младшего студента.
б) Выбрать самого старшего.
в) упорядочить по возрасту.

Вот мой ответ:
НЕ МОГУ ДОЕХАТЬ КАК ПУНКТ 3 СДЕЛАТЬ

program Z4;
type
info=record
fam,im,ot:string[15];
dr,mr,gr:integer;
end;
Spisok=file of info;
var
inf:info;
spi:spisok;
i,msd,msm,msg,ssd,ssm,ssg,k:integer;
begin
writeln('‚ўҐ¤ЁвҐ Є(r)«ЁзҐбвў(r) бв㤥­в(r)ў:');
readln(k);
assign(spi,'g:\stud.dat');
rewrite(spi);
for i:=1 to k do
begin
with inf do
begin
writeln('Ќ(r)¬Ґа бв㤥­в : ',i,' ”(r)а¬ в § ЇЁбЁ: ” ¬Ё«Ёп, ?¬п, ЋвзҐбвў(r), „Ґ­м! ЊҐбпж! ѓ(r)¤! а(r)¦¤Ґ­Ёп');
readln(fam);
readln(im);
readln(ot);
readln(dr);
readln(mr);
readln(gr);
end;
write(spi,inf);
end;
close(spi);
reset(spi);
{‘ ¬л(c) ¬« ¤иЁ(c)}
ssd:=0;
ssm:=0;
ssg:=0;
for i:=1 to k do
begin
read(spi,inf);
if (inf.gr>ssg) then
   begin
    ssg:=inf.gr;
    ssm:=inf.mr;
    ssd:=inf.dr;
   end;
 if (inf.gr=ssg) then
     begin
      if (inf.mr>ssm) then
       begin
        ssg:=inf.gr;
        ssm:=inf.mr;
        ssd:=inf.dr;
       end;
    if (inf.mr=ssm) then
          begin
           if (inf.dr>ssd) then
            begin
             ssg:=inf.gr;
             ssm:=inf.mr;
             ssd:=inf.dr;
            end;
           end;
         end;
       end;
close(spi);
reset(spi);

{‘ ¬л(c) бв аиЁ(c)}
msd:=ssd;
msm:=ssm;
msg:=ssg;
for i:=1 to k do
begin
read(spi,inf);
if (inf.gr<msg) then
   begin
    msg:=inf.gr;
    msm:=inf.mr;
    msd:=inf.dr;
   end;
 if (inf.gr=msg) then
     begin
      if (inf.mr<msm) then
       begin
        msg:=inf.gr;
        msm:=inf.mr;
        msd:=inf.dr;
       end;
    if (inf.mr=msm) then
          begin
           if (inf.dr<msd) then
            begin
             msg:=inf.gr;
             msm:=inf.mr;
             msd:=inf.dr;
             writeln('=! ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
            end;
           end;
         end;
       end;
close(spi);
reset(spi);
{Џ(r)бва(r)Ґ­ЁҐ бЇЁбЄ }
for i:=1 to k do
begin
read(spi,inf);
if (inf.gr<ssg) then
   begin
    writeln('= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
   end;
 if (inf.gr=ssg) then
     begin
      if (inf.mr<ssm) then
       begin
        writeln('= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
       end;
    if (inf.mr=ssm) then
          begin
           if (inf.dr<ssd) then
            begin
             writeln('= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
            end;
           end;
         end;
        end;
close(spi);
reset(spi);
{+1}
for i:=1 to k do
begin
read(spi,inf);
if (ssd=inf.dr) and (ssm=inf.mr) and (ssg=inf.gr) then writeln('= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
end;
close(spi);
reset(spi);
{‘ЇЁб(r)Є Ё +1 ўлў(r)¤Ёв в(r)«мЄ(r) ўҐбм ўўҐ¤с­­л(c) бЇЁб(r)Є...  ЉЂЉ ”ЏЋђџ„Ћ—?’њ ЏЋ ‚Ћ‡ђЂ‘’”???}
{‚лў(r)¤ १г«мв в }
for i:=1 to k do
begin
read(spi,inf);
if (ssd=inf.dr) and (ssm=inf.mr) and (ssg=inf.gr) then writeln('Њ« ¤иЁ(c) бв㤥­в= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
if (msd=inf.dr) and (msm=inf.mr) and (msg=inf.gr) then writeln('‘в аиЁ(c) бв㤥­в= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
end;
close(spi);
readln;
end.



Задача 3!
Тема:
Использование переменных динамического типа

Условие:

1. Создать однонаправленный список, состоящий из элементов, в качестве дынных которых используются записи из задачи 2
2. Вывести на экран данные динамического списка на экран
3. Дополнить список в начале и в конце...
4. Удалить элемент:
а) первый в списке
б) последний в списке
в) с заданным номером
г) с заданным ключём
5. Поменять местами элементы:
а) с заданными номерами;
б) с заданными ключами.

Вот мой ответ:
ХЗ
DCRM
Интересно тут помогают... вот допёр как делать 3-ю задачу... smile.gif (удалил из списка и прецифровал номера задач)
klem4
Помогают, только не стоит наверное так много задач кидать в одну тему + название твоей темы явно нарушает правила форума, советую их прочитать.

Цитата
В последовательности из 10 5ти буквенных слов найти и поменять местами пару слов, у которых 1е три буквы совпадают с тремя последними буквами другого...


abcde = qweabc

или

abcde = qwecba

?
DCRM
Тему подправил и как только задачу пойму и исправлю, сразу удаляю) было 5 задач))) останется 2 задачи, щас 2я и 3я, ибо они связаны условием...

надо так: abcde = qeabc smile.gif
Archon
По Задаче 1:

1. Очевидно, этот код нужно выделить отдельным блоком:
 if ii<>i then
begin         

<= вот


z:=copy(massiv[ii],3,3);
ii1:=ii;
if t=Z then
begin
writeln (massiv[i],' ',massiv[ii]);
q:=massiv[ii1];
massiv[ii1]:=massiv[i1];
massiv[i1]:=q;
end;
end;           

<= и вот




2. Предположим в наборе слов встретились: Massiv[4] = 'abcqwe' и Massiv[8] = 'rtyabc'. Что будет делать программа, когда дойдёт до Massiv[4]? Поменяет его с Massiv[8]. После чего продолжит перебирать слова, дойдёт до Massiv[8] и найдёт там 'abcqwe'... и снова поменяет его с Massiv[4]...
Что делать? Ну, например сформировать массив идентичный данному, тогда можно будет Совпадения искать в первом, а местами слова менять во втором. Или запоминать все пары слов, а менять уже после проверок.

3. А если исходные данные такие:
...
Massiv[4] = 'abcqwe'
...
Massiv[8] = 'rtyabc'
Massiv[9] = 'uioabc'
...
Что получится?
Massiv[4] <=> Massiv[8] <- это правильная замена
Massiv[4] <=> Massiv[9] <- это потому что твоя программа не прекращает выполнение цикла если находит больше 1 совпадения
Massiv[8] <=> Massiv[4] <- эту проблему я описал в пункте 2
Massiv[8] <=> Massiv[9] <- здесь тоже второе совпадение
Что делать? А вообще не слишком понятно, как должна вести себя программа если совпадений несколько. Пояснишь?
volvo
 ! 
Цитата(Правила Раздела)
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
Done...
volvo

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.