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

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

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

> Записи, Динамика, Текстовые и Типизированые файлы, простая база
punkska
сообщение 22.05.2006 10:31
Сообщение #1


Пионер
**

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

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


Поля
1. ф
2. И
3. О
4. оценка
5. др
пойск по оценке

Проверте пожалуйста правильность написанной программы
особенно с файлами! не на путал ли я что...
может есть излишества или глупости!

Прикрепленный файл  Lab3_4.zip ( 2.15 килобайт ) Кол-во скачиваний: 295


и может кто поможет с процедурой пойска...а то что-то она не получаеться...


--------------------
ЗДЕСЬ МОГЛА БЫТЬ ВАША РЕКЛАМА!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 15)
volvo
сообщение 22.05.2006 11:23
Сообщение #2


Гость






Вроде никаких явно бросающихся в глаза недочетов нет, за исключением, возможно, вот чего:

У тебя в программе сразу выделяется память под 1000 записей, так? Зададимся вопросом: "А почему именно 1000?" smile.gif Не в том ли дело, что больше при таком размере структуры New может и не дать, ибо есть ограничение на размер блока, выделяемого с помощью New?

Вот я и клоню к тому, что... А почему бы не перестать забивать память сразу заведомо ограниченным количеством записей (которые, возможно, никто и не использует, но с другой стороны - а если понадобится больше? А нельзя smile.gif )

Так вот, собственно, предложение:
Type
PClass_r = ^Class_r;
Class_r = Record
{ Ну, тут то что у тебя и было... }
End;

Const
q = 65520 div sizeof(PClass_r);

_class = array [1 .. q] of PClass_r; { <--- Чувствуешь разницу? }
PtrClass = ^_class;


И потом Выделить, как ты и делал, память под массив Stud, только он будет содержать НЕ сами данные, а указатели на них.

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

{ где-то в начале программы}
new(Stud);

{ ... }
{ а при добавлении студентов: }
writeln('Tape quantity of adding students'); readln(n);
for i:=1 to n do begin

new(stud^[i]); { Выделяем память под ДАННЫЕ }

with Stud^[i]^ do begin
// Все действия - как у тебя и было
end;
...

Как результат - более гибкая работа с памятью (которой, как известно, много никогда не бывает), да и обрабатывать сможешь не до 1000, а до 16380 записей, что, согласись, серьезнее smile.gif

Как тебе такой вариант?


А насчет поиска - что именно у тебя не получается? Что надо сделать с теми, кто критерию поиска удовлетворяет? Просто распечатать? Или где-то сохранить? Так ведь множества тоже никто не отменял. Или эмуляторы множеств для большего числа элементов smile.gif Надо - покажу, как...
 К началу страницы 
+ Ответить 
punkska
сообщение 22.05.2006 11:39
Сообщение #3


Пионер
**

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

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


Цитата
Как результат - более гибкая работа с памятью (которой, как известно, много никогда не бывает), да и обрабатывать сможешь не до 1000, а до 16380 записей, что, согласись, серьезнее

good.gif give_rose.gif отлично! переделаем)

ой блин! тут надо ещё удаление сделать, но с этим разберёмся!

ещё немножко над процедурой пойска посижу и покажу её...

зы а что за скрипт работает на странице?! он очень не нравиться фоксу) unsure.gif наверно паскоде или ещё что-то...


--------------------
ЗДЕСЬ МОГЛА БЫТЬ ВАША РЕКЛАМА!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.05.2006 11:48
Сообщение #4


Гость






Цитата
а что за скрипт работает на странице?!

Это подсветка синтаксиса. На больших исходниках может подтормаживать (хотя у меня тоже FF, и в этой теме пока тормозов не заметно).

Если хочешь - убери из поста программу, все равно есть присоединенный архив...
Done
 К началу страницы 
+ Ответить 
punkska
сообщение 22.05.2006 11:56
Сообщение #5


Пионер
**

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

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


а вот с удалением крах полный! если у кого есть минутка помогите мне с этими злобными процедурами mega_chok.gif

procedure Delete(var n:integer;var Stud: PtrClass;
D_kol: integer; D_mas: mas; Opis: PtrClass;
OutPuе:outproc);
var
b,j,i,c:integer;
An:char;
begin

repeat
repeat
repeat
ClrScr;
OutPut(D_kol,Opis);
writeln('Do you want to delete some elements?');
readln(An);
if (An<>'n') and (An<>'y') then
begin
writeln('Answer Yes or No!');
writeln('Try again. Press Enter...');
readln;
end;
until (An='n') or (An='y');
if An='n' then exit;
repeat
clrscr;
OutPut(D_kol,Opis);
writeln('Tape the number to delete: ');
readln(b);
if (b>D_kol) or (b<1) then
begin
writeln('Error in number!!');
writeln('Try again.Press Enter...');
readln;
end;
until (b<=D_kol) and (b>=1);
что-то тут я хотел написать....

writeln('Are you shure? (y/n)');
readln(An);
until (An='y') or (An='n');
until An='y';
for i:=1 to D_kol do
begin
if i=b then
begin
n:=n-1;
D_kol:=D_kol-1;
for c:=D_mas[i] to n do
Stud^[c]:=Stud^[c+1];
for i:=b to D_kol do
begin
Opis^[i]:=Opis^[i+1];
D_mas[i]:=D_mas[i+1]-1;
end;
end;
end;
clrscr;
writeln ('Element is erased!');
readln;
until An='n';
end;

такой набросок! я в нём уже запутался 100 раз! mega_chok.gif

Сообщение отредактировано: volvo - 2.11.2006 16:56


--------------------
ЗДЕСЬ МОГЛА БЫТЬ ВАША РЕКЛАМА!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.05.2006 12:09
Сообщение #6


Гость






Ты расскажи, что именно ты удалять хочешь? какой-то один конкретный элемент, или несколько сразу? (можно и так и так сделать)
 К началу страницы 
+ Ответить 
punkska
сообщение 22.05.2006 12:13
Сообщение #7


Пионер
**

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

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


да...я думаю не стоит заморачиваться и стоит удалять по 1 элементу...


--------------------
ЗДЕСЬ МОГЛА БЫТЬ ВАША РЕКЛАМА!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.05.2006 12:30
Сообщение #8


Гость






Ну, если по одному, тогда вот так:
procedure Delete(var n:integer; var Stud: PtrClass);
var
b: integer;
An:char;
begin

repeat
repeat
repeat
ClrScr;
OutPut(n, stud);
writeln('Do you want to delete some elements?');
readln(An);
if (An<>'n') and (An<>'y') then begin
writeln('Answer Yes or No!');
writeln('Try again. Press Enter...');
readln;
end;
until (An='n') or (An='y');

if An='n' then exit;

repeat
clrscr;
OutPut(n, stud);
writeln('Tape the number to delete: ');
readln(b);
if (b>n) or (b<1) then begin
writeln('Error in number!!');
writeln('Try again.Press Enter...');
readln;
end;
until (b<=n) and (b>=1);

writeln('Are you sure? (y/n)');
readln(An);
until (An='y') or (An='n');

until An='y';

move(stud^[b+1], stud^[b], (n - b)*sizeof(stud^[1]));
dec(n);

clrscr;
writeln ('Element is erased!');
readln;
end;
 К началу страницы 
+ Ответить 
punkska
сообщение 22.05.2006 17:56
Сообщение #9


Пионер
**

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

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


опять я решил делать как легче и ошибся( wacko.gif

голова гудит от преподавателя! mega_chok.gif
вот набросал процедуру удаления как и плонировал, но опять прокол! и процедура пойска не удаёться(((
" (Показать/Скрыть)


набросок wacko.gif

а ещё надо сделать эту же задачу используя связанный список
а потом всё это в виде объектов да и занимательную графику вставить...но этим я займусь в среду! а пока надо это доколотить! *помогите люди добрые* (С)


--------------------
ЗДЕСЬ МОГЛА БЫТЬ ВАША РЕКЛАМА!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.05.2006 18:15
Сообщение #10


Гость






punkska, пойми, ты даешь выдранную из контекста информацию, и я ничем не могу тебе помочь... Ты не объяснил, что значат параметры, которые ты передаешь в Delete, но тот вариант, который предложил я (безо всяких параметров кроме количества элементов в массиве, и собственно массива Stud - прямое удаление по номеру) тебя не устроил...

Так расскажи, что содержат параметры Data, F_kol, F_mas, opis...
 К началу страницы 
+ Ответить 
punkska
сообщение 29.05.2006 22:54
Сообщение #11


Пионер
**

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

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


Вечер добрый
Вон я что написал! и за что получал целый день по голове!
что необходимо сделать
1 пойск по дате (оказываеться) ! как вам мой выриант? мне пока не нравиться...
2 сделать ввод в процедуре пойска (раньше было в меню)
3. разделитьь на 2 пункта УДАЛИТЬ и ПОЙСК (ну это не проблема)
на что прошу обратить внимание
на процедуру пойска и удаления! что-то я там репитов дофига наставил (в один момент даже запутался)
ну и просто ошибочки посмотрите! ПРЕПОДАВАТЕЛЬ ОЧЕНЬ СТРОГО относиться к правильности и грамотности прог.!

" (Показать/Скрыть)


изменил ввывод! убрал лишнюю кашу!
оцените!


Прикрепленные файлы
Прикрепленный файл  Vasa.rar ( 2.66 килобайт ) Кол-во скачиваний: 116


--------------------
ЗДЕСЬ МОГЛА БЫТЬ ВАША РЕКЛАМА!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
punkska
сообщение 5.06.2006 18:08
Сообщение #12


Пионер
**

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

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


почему если внести ввод даты для пойска в тело процедуры... процедура начинает работать не верно?
unsure.gif


--------------------
ЗДЕСЬ МОГЛА БЫТЬ ВАША РЕКЛАМА!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.06.2006 18:53
Сообщение #13


Гость






Телепатия? Как изменил, что сделал - покажи...
 К началу страницы 
+ Ответить 
punkska
сообщение 5.06.2006 20:10
Сообщение #14


Пионер
**

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

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


Внимание на процедуры ПОЙСК и УДАЛИТЬ и на их обращение в меню
1. убрал запрос из меню и добавил в тело ПОЙСКА ( ввод даты для пойска)
после этого не отображаеться таблица найденных (она пуста)
я понимаю почему это...точнее догадываюсь, но мне кажеться и так должно рабатать...
Если вернуть ЗАПРОС НА ДАТУ ДЛЯ ПОЙСКа в меню, то таблица найденных отображаеться но тогда -->
2. удаление! что-то тут не чисто ! удаляет не по одному а по 2, 3 и тп (с первого и по номерр вводимый с кл)
вроде ясно где искать ошибки! но не вижу их((( mega_chok.gif

зы Лето только наступилп, а телепаты уже в отпуске((( жаль( =)


Прикрепленные файлы
Прикрепленный файл  view.rar ( 2.66 килобайт ) Кол-во скачиваний: 117


--------------------
ЗДЕСЬ МОГЛА БЫТЬ ВАША РЕКЛАМА!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.06.2006 21:01
Сообщение #15


Гость






Глобальные переменные - зло... Избавляйся от них. Это одно.

Второе: в процедуре Search есть такие строки:
...
WriteLn('Enter date');
InPutDate(Date);
...
А расскажи мне, зачем ты вводишь дату, если потом ее нигде на протяжении этой процедуры не используешь? Да и не только в этой процедуре, а вообще...

Ты часом Date с Data не перепутал???

Это условие тоже порадовало:
if (Y_=Y) and (M_=M) and ((D_=D) or (D_<>D)) then
особенно его правая часть smile.gif
 К началу страницы 
+ Ответить 
punkska
сообщение 5.06.2006 21:24
Сообщение #16


Пионер
**

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

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


Спасибо Volvo, выручил) и насмешил))
lol.gif особенно его правая часть good.gif lol.gif ага! крутезна!!!! ))))) тока заметил)))

блин... меня еле откачали! в юмор надо) lol.gif

осталось удаление... будем ошибку искать)


--------------------
ЗДЕСЬ МОГЛА БЫТЬ ВАША РЕКЛАМА!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 22.06.2025 13:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"