неполучается сравнить с фаилов, незнаю что надо дописать в программу |
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. плохо сравнивает фамилии те фамилии которые идут по порядку ана записывает а те которые непорядку пропускает -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
andriano |
20.04.2008 9:11
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
1. Для того, чтобы (хотя бы самому) легко ориентироваться в коде, этот код нужно форматировать.
2. Зачем здесь вложенный цикл? Я не придираюсь, я задаю наводящий вопрос. Если ты сам сможешь сформулировать ответ на этот вопрос, то сам же и поймешь в чем ошибка. |
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 -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
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. почему так не хочет писать повторно -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
andriano |
20.04.2008 13:38
Сообщение
#5
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Второй вариант я вно неоптимальный.
Насколько я понял, ты хочешь открыть файл, прочитать из него одну строку и сравнить со всеми сроками второго файла. Это у тебя есть. Но потом ты что-то хочешь проделать со второй строкой первого файла. Что именно? Подозреваю, что снова сравнит со всеми строками второго файла. Для этого его надо закрыть и потом открыть с начала. Только еще раз повторяю: этот способ далеко не оптимальный. Попытайся придумать алгоритм, при котором чтение из файлов происходило бы по одному разу. Подсказка: используй тот факт, что строки в файлах упорядочены по алфавиту. |
maksimla |
20.04.2008 15:28
Сообщение
#6
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
я первую фамилию с первого файла сравниваю с фамилию из другова файла если фамилия обнаружина в двух файлах то записываю результат в третии файл и все можете мне исправить эту программу а то мне сегодня здовать
Сообщение отредактировано: maksimla - 20.04.2008 15:30 -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
andriano |
20.04.2008 16:06
Сообщение
#7
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Мне кажется, надо сначала ПОНЯТЬ, а только после этого СДАВАТЬ.
Попытайся для начала сделать то, что я тебе советовал в начале своего предыдущего сообщения, а потом - в конце. |
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. -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
andriano |
20.04.2008 18:52
Сообщение
#9
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Кстати, сколько раз ты открываешь файл pr и сколько раз его закрываешь?
|
maksimla |
20.04.2008 19:52
Сообщение
#10
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
1 заз открыл 1 раз и закрыл а reset(pr); это кажется перезапуск и его делаю столько раз скока равно а
а что чтото неправильно? -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
renesko1 |
20.04.2008 19:59
Сообщение
#11
|
поиск Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: 2 |
reset - это не перезапуск ,а открытие с последующей возможностью чтения данных.
-------------------- typedef void Śūnyatā ;
|
andriano |
20.04.2008 20:19
Сообщение
#12
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
1 заз открыл 1 раз и закрыл а reset(pr); это кажется перезапуск и его делаю столько раз скока равно а а что чтото неправильно? Нет, открываешь ты его (а+1) раз, а вот закрываешь только один. По поводу оптимального алгоритма - суть состоит в том, чтобы считывать из обоих файлов при совпадении и только из одного - из того, чья очередная строка раньше по алфавиту. Т.о. каждый файл ты проходишь только по одному разу. |
Текстовая версия | 5.06.2024 6:18 |