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

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

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

 
 Ответить  Открыть новую тему 
> неполучается сравнить с фаилов, незнаю что надо дописать в программу
maksimla
сообщение 19.04.2008 21:44
Сообщение #1


Знаток
****

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

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


в двух филах указано сперва цифра указывает скоко фамилии в файле а потом идут фамилии
по алфавиту сравниваем два списка где есть фамилия в двух файлах записываем в третий
Код
program Bevarde1;
var
a,b,c,d: integer;
g,h,l:string;
prad,pr,rezult: text;
begin
assign (prad, 'matematika.txt');
assign (pr, 'informatika.txt');
assign(rezult,'rezultatai.txt');
reset (prad);
reset(pr);
rewrite (rezult);
readln (prad, a);
readln(pr,b);
for c:= 1 to a do
for d:=1 to b do
begin
readln(prad,g);
readln(pr,h);
if g=h then begin l:=h; writeln (rezult, l); end;    end;
close (prad);
close(pr);
close (rezult)
end.

плохо сравнивает фамилии те фамилии которые идут по порядку ана записывает а те которые непорядку пропускает


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 20.04.2008 9:11
Сообщение #2


Гуру
*****

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

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


1. Для того, чтобы (хотя бы самому) легко ориентироваться в коде, этот код нужно форматировать.

2. Зачем здесь вложенный цикл?
Я не придираюсь, я задаю наводящий вопрос. Если ты сам сможешь сформулировать ответ на этот вопрос, то сам же и поймешь в чем ошибка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 20.04.2008 9:57
Сообщение #3


Знаток
****

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

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


1. я эту программку вчера 3 часа форматировал.
2. чтобы одну фамилию со всеми фамилиями в списке проверять
я хотел без массива сделать а вот что с массивом получилось все правильна
Код
program Bevarde1;
var
a,b,c,d: integer;
g,h,l:string;
prad,pr,rezult: text;
e,f: array [1..100] of string;
begin
assign (prad, 'matematika.txt');
assign (pr, 'informatika.txt');
assign(rezult,'rezultatai.txt');
reset (prad);
reset(pr);
rewrite (rezult);
readln (prad, a);
readln(pr,b);
for c:= 1 to a do
begin
readln(prad,g);
e[c]:=g;
end;
for d:=1 to b do
begin
readln(pr,h);
f[d]:=h;
end;
for c:= 1 to a do
for d:=1 to b do
if e[c]=f[d] then begin l:=e[c]; writeln(rezult,l); end;
close (prad);
close(pr);
close (rezult)
end.

но надо без массива написать как

Сообщение отредактировано: maksimla - 20.04.2008 10:06


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 20.04.2008 10:48
Сообщение #4


Знаток
****

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

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


вот сделал но с ошибкой повторно не хочет писать h
Код
program Bevarde1;
var
a,b,c,d: integer;
g,h:string;
prad,pr,rezult: text;
begin
assign (prad, 'matematika.txt');
assign (pr, 'informatika.txt');
assign(rezult,'rezultatai.txt');
reset (prad);
reset(pr);
rewrite (rezult);
readln(prad, a);
readln(pr,b);
  for c:= 1 to a do
  begin
  readln(prad,g);
  for d:=1 to b do
  begin
   readln(pr,h);
   writeln(h,' ',g);
   end;
   end;
   readln;
close (prad);
close(pr);
close (rezult)
end.

почему так не хочет писать повторно


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 20.04.2008 13:38
Сообщение #5


Гуру
*****

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

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


Второй вариант я вно неоптимальный.
Насколько я понял, ты хочешь открыть файл, прочитать из него одну строку и сравнить со всеми сроками второго файла.
Это у тебя есть.
Но потом ты что-то хочешь проделать со второй строкой первого файла. Что именно?
Подозреваю, что снова сравнит со всеми строками второго файла. Для этого его надо закрыть и потом открыть с начала.

Только еще раз повторяю: этот способ далеко не оптимальный. Попытайся придумать алгоритм, при котором чтение из файлов происходило бы по одному разу.
Подсказка: используй тот факт, что строки в файлах упорядочены по алфавиту.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 20.04.2008 15:28
Сообщение #6


Знаток
****

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

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


я первую фамилию с первого файла сравниваю с фамилию из другова файла если фамилия обнаружина в двух файлах то записываю результат в третии файл и все можете мне исправить эту программу а то мне сегодня здовать

Сообщение отредактировано: maksimla - 20.04.2008 15:30


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 20.04.2008 16:06
Сообщение #7


Гуру
*****

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

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


Мне кажется, надо сначала ПОНЯТЬ, а только после этого СДАВАТЬ.
Попытайся для начала сделать то, что я тебе советовал в начале своего предыдущего сообщения, а потом - в конце.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 20.04.2008 17:47
Сообщение #8


Знаток
****

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

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


вот сделал как сказал а по алфавиту не знаю можешь по подробнее обеснить и по какому алфавиту вот програмка правильная теперь но без алфавита
Код
program Bevarde1;
var
a,b,c,d: integer;
g,h:string;
prad,pr,rezult: text;
begin
assign (prad, 'matematika.txt');
assign (pr, 'informatika.txt');
assign(rezult,'rezultatai.txt');
reset (prad);
reset(pr);
rewrite (rezult);
readln(prad, a);
readln(pr,b);
  for c:= 1 to a do
  begin
  readln(prad,g);
  reset(pr);
  readln(pr,a);
  for d:=1 to b do
  begin
  readln(pr,h);
   if g=h then writeln(rezult,g);
   end;
   end;
   readln;
close (prad);
close(pr);
close (rezult)
end.


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 20.04.2008 18:52
Сообщение #9


Гуру
*****

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

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


Кстати, сколько раз ты открываешь файл pr и сколько раз его закрываешь?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 20.04.2008 19:52
Сообщение #10


Знаток
****

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

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


1 заз открыл 1 раз и закрыл а reset(pr); это кажется перезапуск и его делаю столько раз скока равно а
а что чтото неправильно?


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
renesko1
сообщение 20.04.2008 19:59
Сообщение #11


поиск
****

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

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


reset - это не перезапуск ,а открытие с последующей возможностью чтения данных.


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 20.04.2008 20:19
Сообщение #12


Гуру
*****

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

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


Цитата(maksimla @ 20.04.2008 20:52) *

1 заз открыл 1 раз и закрыл а reset(pr); это кажется перезапуск и его делаю столько раз скока равно а
а что чтото неправильно?

Нет, открываешь ты его (а+1) раз, а вот закрываешь только один.

По поводу оптимального алгоритма - суть состоит в том, чтобы считывать из обоих файлов при совпадении и только из одного - из того, чья очередная строка раньше по алфавиту. Т.о. каждый файл ты проходишь только по одному разу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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