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

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

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

 
 Ответить  Открыть новую тему 
> Сравнение данных в файлах
сообщение
Сообщение #1





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

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


Господа, помогите пожалуйста решить....

Во входном файле F1 находится список имен файлов с расширением pas , а в файле F2 - другой список имен тоже с расширением pas.
Добавить в список файлов из F1 список из F2 таким образом, что в случае совпадения имен и расширений у двух файлов из F1 и F2 расширение файла из F1 меняется на bak .

в прикрепленном два файла с входными данными....

Спасибо...


Прикрепленные файлы
Прикрепленный файл  LIST1.TXT ( 58 байт ) Кол-во скачиваний: 292
Прикрепленный файл  LIST2.TXT ( 58 байт ) Кол-во скачиваний: 270
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






cool.gif Что-то в этом духе (учти, исходный list1.txt будет перезаписан):
uses dos;

const
max_size = 20; { можешь увеличить }
type
list_type = array[0 .. pred(max_size)] of string;

function read_list(var f: text; var arr: array of string): integer;
var
count: integer;
s: string;
begin
count := -1;
while not seekeof(f) do begin
readln(f, s);
inc(count);
arr[count] := s;
end;
read_list := count;
end;

procedure check_exists(var arr: array of string;
n: integer; s: string);
var
i: integer;
found: boolean;
s_dir: dirstr; s_name: namestr; s_ext: extstr;
begin
i := 0; found := false;
while (i <= n) and not found do
if arr[i] = s then begin
fsplit(s, s_dir, s_name, s_ext);
arr[i] := s_name + '.bak';
found := true;
end
else inc(i)
end;


var
list_1, list_2: list_type;
i, count_1, count_2: integer;

f1, f2, f3: text;


begin
assign(f1, 'list1.txt'); reset(f1);
assign(f2, 'list2.txt'); reset(f2);

count_1 := read_list(f1, list_1);
count_2 := read_list(f2, list_2);

for i := 0 to count_2 do
check_exists(list_1, count_1, list_2[i]);

rewrite(f1);
for i := 0 to count_1 do
writeln(f1, list_1[i]);
for i := 0 to count_2 do
writeln(f1, list_2[i]);

close(f2);
close(f1);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Спасибо за ответ, но

вот в этой строке выдает ошибку Unknown identifier....


s_dir: dirstr; s_name: namestr; s_ext: extstr;

какго типа они должны быть???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






To: naumkin
Какой компилятор? Эти типы описаны в модуле Dos, я не зря его подключил...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


Turbo Pascal 7
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Компилируется "на ура":
Прикрепленное изображение

Может, у тебя что-то не то с компилятором? Урезанная версия какая-нибудь?

Попробуй определить явно:
type
dirstr = string[67];
namestr = string[8];
extstr = string[3];

хотя это навряд ли поможет - FSplit тоже описана в модуле DOS...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





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

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


Если модуль Dos должен быть где то папке с компилятором то у меня его нет norespect.gif

если не трудно можно попросить, кинуть его мне на naumkin@medem.ru

или ссылку дать....пожалуйста.....

Сообщение отредактировано: naumkin -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
Если модуль Dos должен быть где то папке с компилятором то у меня его нет

Sorry, но если бы его у тебя не было, ты бы получал ошибку еще на первой строке:
Цитата
Error 15: File not found (DOS.TPU)
так что модуль у тебя есть... И находится он в файле TURBO.TPL (по крайней мере, он должен там находиться). Попробуй заменить свой Turbo.TPL моим:


Прикрепленные файлы
Прикрепленный файл  turbotpl.rar ( 27 килобайт ) Кол-во скачиваний: 358
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





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

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


Спасибо....заработало....только вот расширение на .bak почему-то не меняется.....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Все-таки ищи нормальный компилятор... Все прекрасно работает. Вот тот файл, что получился у меня...


Прикрепленные файлы
Прикрепленный файл  LIST1.TXT ( 120 байт ) Кол-во скачиваний: 284
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11





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

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


Спасибо огромное....работает...

Вот такую бы еще решить... последняя.... остальные сам добил....

В текстовом файле F1 задан список фамилий (по одной на стpоке, не более 15 символов). Разpаботать пpоцедуpы:
1. P1 - фopмиpования очеpеди с элементом типа string[15] из стpок файла G.
2. P2 - вывода содеpжимого очеpеди в естественном поpядке без ее уничтожения в текстовый файл K.
3. P3 - вывода содеpжимого очеpеди в обpатном поpядке без ее уничтожения в текстовый файл K.
С помощью этих пpоцедуp записать содеpжимое исходного файла F1 в очеpедь, вывести очеpедь в файл F2 в пpямом и обpатном поpядке,уничтожить пеpвый и последний элементы и снова вывести в пpямом и обpатном поpядке.

Буду премного благодарен за помошь.......


Прикрепленные файлы
Прикрепленный файл  STUDENTS.TXT ( 120 байт ) Кол-во скачиваний: 264
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






To: naumkin
Ты в FAQ заглядывал? Настоятельно рекомендую заглянуть, чтобы зря велосипеды не изобретать, там есть реализация DEQUE, это как раз то, что тебе нужно (та же самая очередь, но доступ возможен с двух сторон).

Реализация - здесь:
FAQ: Все о динамических структурах данных -> Дек
Единственное, что останется сделать - заменить TData на нужный тебе тип...
 К началу страницы 
+ Ответить 

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

 





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