1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Привет всем! Для начала хочу поздравить всех защитников Отечества с днем защитника Отечества. Понимаю что грузить Вас в предпраздничный день просто хамство. Но прошу простить меня и выслушать Есть такой вопросик: имеются 2 текстовых файла. Один с словами на английском языке(каждое слово на новой строчке) другой такой же только на русском. Прога должна загружать оба файла, пользователь вводит слово на англ. языке и если такое есть в первом файле то выводит слово из второго которое распологается по счету на той же строке как и в первом файле! Помогите кто может. P.S. Я не прошу никого писать прогу за меня(хотя не буду отказыватся), просто обьясните как это можно реализовать
--------------------
...И заключили ТЕМНЫЕ И СВЕТЛЫЕ програмисты договор... ...и было в том договоре сказано.... ...что будет создан ночной дозор для контроля темных программистов... ...и будет создан дневной дозор для надзора за светлыми программистами... ..................ТАК НАЧИНАЛАСЬ ЖИЗНЬ ТУРБО ПАСКАЛЯ.............
Просто напросто одновременно с чтением из первого файла - читай информацию и из второго... Если прочитанное слово из первого файла совпадает с введенным - печатается слово, прочитанное из второго...
Хотя это - извращение... Что, если у тебя есть 2000 слов в файле, и пользователь введет 3 слова, расположенных в 1984, 1983, и 1997 строках соответственно, ты будешь 3 раза перелопачивать весь файл? Даже два файла...
Просто напросто одновременно с чтением из первого файла - читай информацию и из второго... Если прочитанное слово из первого файла совпадает с введенным - печатается слово, прочитанное из второго...
Хотя это - извращение... Что, если у тебя есть 2000 слов в файле, и пользователь введет 3 слова, расположенных в 1984, 1983, и 1997 строках соответственно, ты будешь 3 раза перелопачивать весь файл? Даже два файла...
Пытался делать но ничаво не вышло, может поможешь? Вот код:
Код
program perevodhik; uses crt; var f, f1: text; s : array[1..3] of string; s1: array[1..3] of string; i: integer; slovo: string; label main; begin clrscr; assign(f,'f.txt'); reset(f); assign(f1,'f1.txt'); reset(f1); readln(slovo); main: begin for i:=1 to 3 do begin while not eof(f) do begin readln(f,s[i]); end; while not eof(f1) do begin readln(f1,s1[i]); end; end; end;
if slovo=s[i] then begin writeln(s1[i]); readkey; end else main;
end;
end.
Сообщение отредактировано: Костян -
--------------------
...И заключили ТЕМНЫЕ И СВЕТЛЫЕ програмисты договор... ...и было в том договоре сказано.... ...что будет создан ночной дозор для контроля темных программистов... ...и будет создан дневной дозор для надзора за светлыми программистами... ..................ТАК НАЧИНАЛАСЬ ЖИЗНЬ ТУРБО ПАСКАЛЯ.............
type translate = record ang: string[20]; { немного ограничим размер, все равно слов большего размера не бывает } rus: string[20]; end; var dict: array[1 .. 3] of translate; begin { открыть "русский" файл f_rus } { открыть "английский" файл f_ang }
i := 0; while not eof(f_ang) do begin inc(i); with dict[i] do begin readln(f_ang, ang); readln(f_rus, rus); end; end;
readln(slovo); for i:=1 to 3 do if slovo = dict[i].ang then begin writeln(dict[i].ang); break; { все, из цикла можно выходить } end;
end.
Набирал прямо здесь - могут быть накладки... Не забывай закрывать файлы, кстати...
Все исправил, ток все равно не работает, помогите кто может...f1.txt ( 16 байт )
Кол-во скачиваний: 544 , f.txt ( 19 байт )
Кол-во скачиваний: 554 ,
Код
program perevodhik; type translate=record ang: string[20]; rus: string[20]; end; var dict: array[1..3] of translate; i: integer; f_rus : text; f_ang : text; rus, ang: string; slovo: string; begin assign(f_ang,'f.txt'); reset(f_ang); assign(f_rus,'f1.txt'); reset(f_rus); i:=0; while not eof(f_ang) do begin inc(i); with dict[i] do begin readln(f_ang,ang); readln(f_rus,rus); end; end; readln(slovo); for i:=1 to 3 do if slovo=dict[i].ang then begin writeln(dict[i].rus); readln; break; end; end.
--------------------
...И заключили ТЕМНЫЕ И СВЕТЛЫЕ програмисты договор... ...и было в том договоре сказано.... ...что будет создан ночной дозор для контроля темных программистов... ...и будет создан дневной дозор для надзора за светлыми программистами... ..................ТАК НАЧИНАЛАСЬ ЖИЗНЬ ТУРБО ПАСКАЛЯ.............
Так и не будет работать... Ты или поменяй чтение из файла на Real (вместо ReadLn, но этот вариант может НЕ сработать), или (что лучше всего) каждое слово в обоих файлах расположи на отдельной строке и оставь ReadLn (этот вариант должен работать)...
Кстати, не забудь, последней строкой в файле должна быть ПУСТАЯ строка, т.е. за последним словом обязательно нажми Enter, иначе оно читаться не будет...
Так и не будет работать... Ты или поменяй чтение из файла на Real (вместо ReadLn, но этот вариант может НЕ сработать), или (что лучше всего) каждое слово в обоих файлах расположи на отдельной строке и оставь ReadLn (этот вариант должен работать)...
Кстати, не забудь, последней строкой в файле должна быть ПУСТАЯ строка, т.е. за последним словом обязательно нажми Enter, иначе оно читаться не будет...
ВСЕ РАВНО ничего не пашет, не подпрапвишь код:
Код
program perevodhik; type translate=record ang: string[20]; rus: string[20]; end; var dict: array[1..3] of translate; i: integer; f_rus : text; f_ang : text; rus, ang: string; slovo: string; begin assign(f_ang,'f.txt'); reset(f_ang); assign(f_rus,'f1.txt'); reset(f_rus); i:=0; while not eof(f_ang) do begin inc(i); with dict[i] do begin readln(f_ang,ang); readln(f_rus,rus); end; end; readln(slovo); for i:=1 to 3 do if slovo=dict[i].ang then begin writeln(dict[i].rus); readln; break; end; end.
--------------------
...И заключили ТЕМНЫЕ И СВЕТЛЫЕ програмисты договор... ...и было в том договоре сказано.... ...что будет создан ночной дозор для контроля темных программистов... ...и будет создан дневной дозор для надзора за светлыми программистами... ..................ТАК НАЧИНАЛАСЬ ЖИЗНЬ ТУРБО ПАСКАЛЯ.............
Да не буду я КОД править!!! Не трогай код уже... Я сказал, ЧТО тебе надо править.
Ну вот поправил:f.txt ( 26 байт )
Кол-во скачиваний: 558 , f1.txt ( 22 байт )
Кол-во скачиваний: 551 , ток все равно ничаво не работает, обьясни что неправильно делаю. Вроде все слова с новой строки, да и после последнего слова свободная строка. Ток вот все равно ничаво не получается. Умоляю помоги, уже крыша едет
--------------------
...И заключили ТЕМНЫЕ И СВЕТЛЫЕ програмисты договор... ...и было в том договоре сказано.... ...что будет создан ночной дозор для контроля темных программистов... ...и будет создан дневной дозор для надзора за светлыми программистами... ..................ТАК НАЧИНАЛАСЬ ЖИЗНЬ ТУРБО ПАСКАЛЯ.............
Люди помогите, уже голова от этой проги болит, все вроде бы правильно. В чем проблема ни как не доходит, помогите поглядите текстовые файлы и саму прогу, буду очень изнателен
--------------------
...И заключили ТЕМНЫЕ И СВЕТЛЫЕ програмисты договор... ...и было в том договоре сказано.... ...что будет создан ночной дозор для контроля темных программистов... ...и будет создан дневной дозор для надзора за светлыми программистами... ..................ТАК НАЧИНАЛАСЬ ЖИЗНЬ ТУРБО ПАСКАЛЯ.............
Похоже, что проблема все-таки в исходных файлах. Я добавил пару отладочных печатей - то, что я всегда делаю, когда чего-то не понимаю. И кое-что обнаружил...
Похоже, что проблема все-таки в исходных файлах. Я добавил пару отладочных печатей - то, что я всегда делаю, когда чего-то не понимаю. И кое-что обнаружил...
Большое спасибо, только ты не мог бы обьяснить эти изменения, а то я штот ничего не понял
--------------------
...И заключили ТЕМНЫЕ И СВЕТЛЫЕ програмисты договор... ...и было в том договоре сказано.... ...что будет создан ночной дозор для контроля темных программистов... ...и будет создан дневной дозор для надзора за светлыми программистами... ..................ТАК НАЧИНАЛАСЬ ЖИЗНЬ ТУРБО ПАСКАЛЯ.............
"Для тех, кто в танке". Я просто добавил в программу вывод на экран всего того, что вводится. Вначале сразу же при вводе строк из файлов вывел их на экран. Потом после ввода слова с клавиатуры вывел его на экран. При этом каждую строку обрамил восклицательными знаками, чтобы четко видеть все ее символы, включая возможные пробелы. Потом в цикле, где выполняется просмотр массива строк на совпадение со словом, введенным с клавиатуры, на экран выводятся сравниваемые строки и пишется, равны они, или нет. Все, что осталось сделать, это запустить эту программу, и посмотреть, что она выводит. Если ввести с клавиатуры слово, которое на самом деле есть в словаре, программа его найдет. Она работает.