IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> 3 задачи... (полуработающие!) Help..., Использование переменных динамического типа + работа с файлами
сообщение
Сообщение #1


Интерпретатор


Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Люди, ХЕЛП!!!
Вот поехали...:
Задача 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('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® бв㤥­в®ў:');
readln(k);
assign(spi,'g:\stud.dat');
rewrite(spi);
for i:=1 to k do
begin
with inf do
begin
writeln('Ќ®¬Ґа бв㤥­в : ',i,' ”®а¬ в § ЇЁбЁ: ” ¬Ё«Ёп, ?¬п, ЋвзҐбвў®, „Ґ­м! ЊҐбпж! ѓ®¤! ஦¤Ґ­Ёп');
readln(fam);
readln(im);
readln(ot);
readln(dr);
readln(mr);
readln(gr);
end;
write(spi,inf);
end;
close(spi);
reset(spi);
{‘ ¬л© ¬« ¤иЁ©}
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);

{‘ ¬л© бв аиЁ©}
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);
{Џ®бв஥­ЁҐ бЇЁбЄ }
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);
{‘ЇЁб®Є Ё +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);
if (msd=inf.dr) and (msm=inf.mr) and (msg=inf.gr) then writeln('‘в аиЁ© бв㤥­в= ',inf.fam,inf.im,inf.ot,inf.dr,inf.mr,inf.gr);
end;
close(spi);
readln;
end.



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

Условие:

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

Вот мой ответ:
ХЗ


--------------------
Сноп огня в кулаке эта жизнь нажила,
Возжелавшая боли и брани,
Много жизней Орды,
Поле брани берёт,
Гневь и кровь льются реками,
И горят вдалеке полевые костры,
И остры адамантовы грани.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов(1 - 5)
сообщение
Сообщение #2


Интерпретатор


Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Интересно тут помогают... вот допёр как делать 3-ю задачу... smile.gif (удалил из списка и прецифровал номера задач)

Сообщение отредактировано: DCRM -


--------------------
Сноп огня в кулаке эта жизнь нажила,
Возжелавшая боли и брани,
Много жизней Орды,
Поле брани берёт,
Гневь и кровь льются реками,
И горят вдалеке полевые костры,
И остры адамантовы грани.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Помогают, только не стоит наверное так много задач кидать в одну тему + название твоей темы явно нарушает правила форума, советую их прочитать.

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


abcde = qweabc

или

abcde = qwecba

?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Интерпретатор


Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


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

надо так: abcde = qeabc smile.gif

Сообщение отредактировано: DCRM -


--------------------
Сноп огня в кулаке эта жизнь нажила,
Возжелавшая боли и брани,
Много жизней Орды,
Поле брани берёт,
Гневь и кровь льются реками,
И горят вдалеке полевые костры,
И остры адамантовы грани.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


По Задаче 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] <- здесь тоже второе совпадение
Что делать? А вообще не слишком понятно, как должна вести себя программа если совпадений несколько. Пояснишь?

Сообщение отредактировано: Archon -


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






 ! 
Цитата(Правила Раздела)
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
Done...
volvo

 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 21:03
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name