![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
marwell |
![]() ![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: ![]() ![]() ![]() |
Пусть дан файл целых чисел с диапазоном значений от a и до b.
Определите, сколько раз встречается каждое значение в файле. var f:text; программа почему-то считает только первое число, остальные выводит по нулям ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата программа почему-то считает только первое число Потому что при первой же итерации цикла For (при i = a) ты дошел до конца файла, и при последующих итерациях у тебя из файла вообще ничего не читается, и ни с чем не сравнивается.Если уж ты хочешь делать так, как начал - то надо Reset(f) перенести внутрь цикла For... |
marwell |
![]()
Сообщение
#3
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: ![]() ![]() ![]() |
Потому что при первой же итерации цикла For (при i = a) ты дошел до конца файла, и при последующих итерациях у тебя из файла вообще ничего не читается, и ни с чем не сравнивается. Если уж ты хочешь делать так, как начал - то надо Reset(f) перенести внутрь цикла For... спасибо, получилось ![]() Добавлено через 2 мин. Если уж ты хочешь делать так, как начал - то надо Reset(f) перенести внутрь цикла For... а есть способ попроще? Сообщение отредактировано: marwell - 31.03.2010 17:19 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Попроще-то он попроще, но памяти будет требовать побольше.
"Золотое правило" - где-то выиграл - значит, где-то проиграл. В твоем случае - выигрыш: только один проход по файлу, проигрыш: необходимость хранения счетчиков в массиве. Описываешь массив достаточного размера, чтобы он мог хранить B-A элементов. Проходишь по файлу, читаешь число, и увеличиваешь соответствующий элемент массива. |
marwell |
![]()
Сообщение
#5
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: ![]() ![]() ![]() |
Попроще-то он попроще, но памяти будет требовать побольше. "Золотое правило" - где-то выиграл - значит, где-то проиграл. В твоем случае - выигрыш: только один проход по файлу, проигрыш: необходимость хранения счетчиков в массиве. Описываешь массив достаточного размера, чтобы он мог хранить B-A элементов. Проходишь по файлу, читаешь число, и увеличиваешь соответствующий элемент массива. блин, что-то не получается у меня второй способ ![]() |
Client |
![]()
Сообщение
#6
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
ну что не получается?
массив описал? по файлу пробежать и нужный элемент увеличить в массиве или что не смог? |
marwell |
![]()
Сообщение
#7
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
Client |
![]()
Сообщение
#8
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
описываешь массив:
mas: array[a..b] of integer;Проходишь по файлу, читаешь, например read(f,x);В Х у тебя будет число. Теперь надо увеличить значение элемента в массиве с индексом Х inc(mas[x])Осталось только вывести массив, где ненулевые значения. Вроде все Сообщение отредактировано: Client - 2.04.2010 11:40 |
marwell |
![]()
Сообщение
#9
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: ![]() ![]() ![]() |
описываешь массив: mas: array[a..b] of integer;Проходишь по файлу, читаешь, например read(f,x);В Х у тебя будет число. Теперь надо увеличить значение элемента в массиве с индексом Х inc(mas[x])Осталось только вывести массив, где ненулевые значения. Вроде все компилятор ругается на эту строку mas:array [a..b] of integer; |
Client |
![]()
Сообщение
#10
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
это для примера только. Границы массива должны быть константами. Вот и не компилится.
Цитата проигрыш: необходимость хранения счетчиков в массиве. Описываешь массив достаточного размера, чтобы он мог хранить B-A элементов |
marwell |
![]()
Сообщение
#11
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
Client |
![]()
Сообщение
#12
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
какие значения a и b ?
например, опиши массив от 0 до сколько-нибудь. пусть а=100, b=200. Сделай аналогию - сотый это как нулевой и т.д. Получится, нужный индекс - mas[x-a]. Пробуй |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:25 |