запутался в задачах чютчють одна норм а другая с ошибкой одной |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
запутался в задачах чютчють одна норм а другая с ошибкой одной |
maksimla |
17.12.2008 15:49
Сообщение
#1
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
я сечас прохожу все что связано с двоичным массивом.
7 задачка две дороги и стоят 4 светофора по два на каждой дороги. для пешеходов загорается зеленый свет в то самое время как на кнопку нажал и горит 30 секунд. Данные записываются в центре когда именно нажал пешеход на кнопку. напишите а) идею решения б) программу сколько секунд за сутки горит зеленый свет на всех светофорах. Первичные данные записаны в файле duom.txt. На первой строчке записано натуральное число n (1 ≤ n ≤ 1000) . В последующих n строчках записано такие данные D или K D - правая K - левая сторона пути, потом записаны 3 неотрицательные числа val - часы, min - минуту и sek - секунды, показывающие когда нажал пешеход на кнопку, (0 ≤ val ≤ 23, 0 ≤ min ≤ 59, 0 ≤ sek ≤ 59). Результат записывается в секундах в файл rez.txt. пример первичные данные 8 K 21 1 59 D 7 8 0 K 13 55 13 D 13 54 59 D 21 2 29 K 7 8 0 D 7 7 50 K 13 55 30 результат 44 обьяснение 7 8 0 загорелся свет в обоих частях и горел 30 секунд D 13 54 59 в правой загорелся K 13 55 13 в левой загорелся и горел в месте 14 секунд. Общее горения 44 секунды. непонял почему они еще непощетали это K 7 8 0 D 7 7 50 и так получается тут горел 20 секунд да и плюс те 44 выходит результат 64. вот сделал програмку очень понятную и сразу понятно где ошибка есть вот она program sviesoforas; вот еще другую сделал тожесамая ошибка program sviesoforas; посоветуйте как лутше сделать или исправьте эти программки. 8 задача Дан список владельцев автомобилей и их номера автомобилей. Надо по номеру автомобиля найти этого человека которому автомобиль принадлежит. в файле duom.txt. написано на первой строке номер автомобиля которого найти нада на второй строке написан сколько в списке фамилий. фамилия может содержать до 20 символов номер 3 буквы латинские и 3 цифры от 1 до 999. вот предоставили данные const SK = 1000; и все номера автомобилей будут по порядку идти AAA001 AAA002 AAA005 AAA006 ... AAA999 AAB002 ... и еще списак можетбыть от 1 до 1000 людей данные записать в файл rez.txt. пример KVL578 6 Petraitis ABC321 Petkeviciene BJU500 Jonaitis DKG512 Antanaitis KVL578 Zemaityte KVL644 Bartkus VVV255 результат фамилия владельца автомобиля Antanaitis вот я зделал простую программу эту все правильно выводит вот program automobilis; потом я эту программу перепишу в двоичный поиск сделаю. непонятно мне следущее Вместе с 7 и 8 заданиями вместе должно быть выложена программа генерирующая случайное условия соответствующую первичным набором данных (случайный тест) в котором должен быть хоть один искомый обьект. вот все ого как это так может обесните. и еще эти задания должны быть записаны в файлы lapsi107.pas и lapsi108.pas генерирующие программы должны быть записаны в файлы apsi107gen.pas и lapsi108gen.pas . во как даже может мне обьясните что за генераторы и как их сделать . Добавлено через 2 мин. ого сколько много написал я. если что нибуть непонятно то спросите уж извините за перевод с литовского на русский Сообщение отредактировано: Lapp - 18.12.2008 8:27 Эскизы прикрепленных изображений -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
Lapp |
18.12.2008 8:22
Сообщение
#2
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
вот сделал програмку очень понятную Вот ЭТО ты называешь понятным??.. Ты, наверное, шутишь..Вот, смотри, я немного поработал над твоим кодом (первый текст). Я понятия не имел, что ты там делаешь, я даже не читал задание. Просто сразу стало ясно, что код нуждается в "причесывании". Когда причесал, стало видно, что многие твои условия лишние. В конечном итоге вышло вот, что: program sviesoforas; Вот теперь можно начинать вникать в смысл.. P.S. Ты извини, я твой исходный код тоже порезал немного, а то из-за длинный строк в коде читать само сообщение было практически невозможно -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
maksimla |
18.12.2008 12:06
Сообщение
#3
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
извините но серовно тут неправильно результат выводит 30 а надо 44 во первичные данные
пример первичные данные 8 K 21 1 59 D 7 8 0 K 13 55 13 D 13 54 59 D 21 2 29 K 7 8 0 D 7 7 50 K 13 55 30 результат 44 -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
maksimla |
18.12.2008 12:34
Сообщение
#4
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
вот свой код исправил я как мне приснилось ночью ))
пока кажется работает все правильно с этими данными но может с другими данными плохо будет а? вот program sviesoforas; -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
maksimla |
20.12.2008 11:07
Сообщение
#5
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
все я больше запутался и уже немогу решать голова кругом идет
сматрел примеры если данные будут 13 55 00 13 54 59 и другие данные 13 55 13 13 54 59 и еще наоборот и вот что получается пока неправильно program sviesoforas; может чтонибуть подскажете или дапишите или перепишите програмку а то мне в воскресение это здавать надо будет -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
maksimla |
20.12.2008 11:31
Сообщение
#6
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
K 13 55 13
D 13 54 59 непонел вот услал уже и тут получается 16 секунд наверное ужас а в примере написано что 14 секунд получается запутался нечего непойму уже -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
Lapp |
20.12.2008 12:13
Сообщение
#7
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
запутался нечего непойму уже Конечно, запутаешься тут. Ты вот просишь помочь, а советов не слушаешь. Я же тебе сказал: чтобы разобраться, надо программу а) правильно отформатировать; б) разобраться с логикой и выкинуть лишние условия. И я тебе это даже сдалал! Но ты не внимаешь советам. В твоей логике черт ногу сломит. Я убрал все лишнее и отформатировал. Суть программы осталась ТА ЖЕ САМАЯ (если я не ошибся ). Ты посмотри и разберись. Когда поймешь, что именно я сделал - думаю, поймешь и где ошибка. Если нет - я помогу. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
maksimla |
20.12.2008 12:46
Сообщение
#8
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
так я примерно понел это что написали
program sviesoforas; Сообщение отредактировано: maksimla - 20.12.2008 12:48 -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
Lapp |
20.12.2008 12:57
Сообщение
#9
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
{а вот тут не выполняется после else чегото почему не выполняется ? } Должно выполняться при sek[i]>sek[j] . Почему ты думаешь, что не выполняется? Если не выполняется, то значит учловие sek[i]>sek[j] никогда не осуществляется.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
maksimla |
20.12.2008 13:11
Сообщение
#10
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
потомучто написал это и не видел букв я вот и поэтому
else begin Сообщение отредактировано: maksimla - 20.12.2008 13:15 -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
Айра |
20.12.2008 13:32
Сообщение
#11
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
Цитата ...и выкинуть лишние условия. И я тебе это даже сдалал! Lapp, по-моему, ты убрал из его кода слишком много "лишнего") вариант, когда минуты разные вообще не рассматривается теперь.. и в ситуации, например, K 7 5 55 и D 7 6 12 до сравнения секунд дело просто не дойдет.. Сообщение отредактировано: Айра - 20.12.2008 13:36 |
Lapp |
20.12.2008 13:39
Сообщение
#12
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
ты убрал из его кода слишком много лишнего) Хм.. в самом деле? интересно, как это произошло.. что-то упустил? ок, я посмотрю. Айра а ты не найдешь? очень спать хочется... Добавлено через 1 мин. Lapp, по-моему, ты убрал из его кода слишком много "лишнего") вариант, когда минуты разные вообще не рассматривается теперь.. и в ситуации, например, K 7 5 55 и D 7 6 12 до сравнения секунд дело просто не дойдет.. Кстати, а почему "теперь"? ты уверена, что он рассматривался до того? впрочем, вполне возможно.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
maksimla |
20.12.2008 19:58
Сообщение
#13
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
вот кажется сделал я до конца можете проверить очень большой этот текст
program sviesoforas; -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
Айра |
21.12.2008 0:27
Сообщение
#14
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
0. думаю, при вычислении d нужно проверять, чтоб оно не было отрицательным..
например, время 8.7.10 8.7.50 удовлетворяет условиям if(val[i]=val[j]) and (min[i]=min[j]) и if sek[i]<sek[j] однако d при вычислении получится = -10, а нам такое считать не надо же? 1. else if (val[i]=val[j]) and (min[i]-min[j]=1) 2. if sek[i]>sek[j] тут что-то не то, после этих действий у тебя sek[i] всегда будет отрицательной, а sek[j] - положительной.. здесь же должно быть аналогично предыдущему варианту, только i на j поменять.. [оффтоп] >Айра а ты не найдешь? rolleyes.gif очень спать хочется... smile.gif не только тебе) >Кстати, а почему "теперь"? ты уверена, что он рассматривался до того? >впрочем, вполне возможно.. smile.gif вполне возможно [/оффтоп] |
volvo |
21.12.2008 4:42
Сообщение
#15
|
Гость |
Цитата результат 44 обьяснение 7 8 0 загорелся свет в обоих частях и горел 30 секунд D 13 54 59 в правой загорелся K 13 55 13 в левой загорелся и горел в месте 14 секунд. Общее горения 44 секунды. Можно кое-что уточнить? Почему 14 секунд? Левый светофор загорелся через 14 секунд после правого, это я вижу... Время горения каждого = 30 секунд, это тоже ясно... Но тогда получается, что вместе светофоры горели 16 секунд, после чего в 13:55:29 правый погас... Итого общее время горения = 46 Вот программка, которая пожирает на треть меньше памяти: program sviesoforas; Изменим задачу: Цитата 10 , то есть, добавлено еще 2 нажатия: справа в 14:55:00 и слева - в 14:55:20. То есть, добавлено еще 10 секунд совместного горения. Результат работы программы = 56, как и ожидалось...K 21 1 59 D 7 8 0 K 13 55 13 D 13 54 59 D 21 2 29 D 14 55 0 K 7 8 0 D 7 7 50 K 14 55 20 K 13 55 30 Сообщение отредактировано: volvo - 21.12.2008 4:42 |
maksimla |
21.12.2008 11:37
Сообщение
#16
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
спасибо но может мне обьясните эту задачку как вы сделали ? и почему меньше ресурсов требует и от куда такие цифры взяли?
program sviesoforas; тут вроде так все понятно только зачем написали два var? for i := 1 to n do а тут уже нечего непонел зачем сперва полследнее время смотрите а потом первое и еще в компеляторе написали left_until неиспользуется можете обеснить поподробнее? -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
maksimla |
21.12.2008 12:04
Сообщение
#17
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
а от куда взял число 86400?
-------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
volvo |
21.12.2008 12:07
Сообщение
#18
|
Гость |
Цитата только зачем написали два var? А какая разница? Хоть пять разделов Var сделай, от этого ничего не изменится... Я по привычке, чтоб далеко наверх не проматывать страницу, сделал еще один раздел, и там все определил... Хочешь - объедини.Цитата и почему меньше ресурсов требует Ну, смотри: у тебя 3 массива по 1001 элементу (каждый Integer занимает по 2 байта), и еще 1001 Char (по одному байту). Всего примерно 7000 байт выделено. Я, вместо того, чтобы хранить и постоянно сравнивать 3 числа на каждое событие, записываю в один LongInt смещение от начала суток в секундах (у тебя в условии написано, что данные в файле хранятся только за сутки). Итого 1001 * 4 + 1001 * 1 = 5000 байт примерно. Вот тебе и экономия почти 2К.Цитата а тут уже нечего непонел зачем сперва полследнее время смотрите а потом первое Хм.. Смотри:// сначала сортируем смещения (а вместе с ними и соответствующие им буквы) Вот, собственно, и вся идея. А 86400 - это количество секунд в сутках (60 сек * 60 мин * 24 часа), я делал mod 86400 для того, чтобы никакие смещения и разницы не превышали этого числа, это может помочь правильно дать ответ даже тогда, когда время в файле записано чуть больше, чем за сутки. Если сильно раздражает - можешь попробовать убрать это получение остатка. В подавляющем большинстве случаев результаты и так будут меньше 86400. Цитата и еще в компеляторе написали left_until неиспользуется можете обеснить поподробнее? Не было такого никогда. Там написано, что "компилятору кажется, что переменная может быть использована до ее инициализации." Но этого произойти не может, переменная глобальная, в любом случае инициализируется нулем. Для того, чтобы убрать это предупреждение - добавь строчку, присваивающую обоим переменным значение 0 после сортировки, я показал в коде, куда именно. |
maksimla |
21.12.2008 13:42
Сообщение
#19
|
Знаток Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: 1 |
непонятно мне следущее
Вместе с 7 и 8 заданиями вместе должно быть выложена программа генерирующая случайное условия соответствующую первичным набором данных (случайный тест) в котором должен быть хоть один искомый обьект. что тут надо сделать непонял может объясните?[color=#FF9900] каждый Integer занимает по 2 байта чего жесткого диска памяти или ddr ram ? и какая теперь разница если этой памяти много есть? а как подсчитать сколько mhz потребует программа или как для этой программы сколько hz потребуется ? мне просто интересно как считают так и узнают какие минимальные требования чтобы программа пошла нормально работать ? -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
volvo |
21.12.2008 14:26
Сообщение
#20
|
Гость |
Цитата каждый Integer занимает по 2 байта чего жесткого диска памяти или ddr ram ? Имеется в виду, когда программа запущена - это в памяти...Цитата и какая теперь разница если этой памяти много есть? Это тебе кажется, что ее много. Ты загляни в мой профиль, посмотри на характеристики компьютера. Так вот при всем при этом если мне удастся уменьшить количество памяти, пожираемое нашим проектом на 5 (повторяю, пять) Кб, то 5% прибавка к зарплате мне обеспечена... Борьба за байты идет, а не за килобайты.А для паскаля это вообще критическая вещь: сколько б у тебя памяти не было, использовать статически ты можешь всего 64К (ибо только один сегмент данных может быть в программе), и с использованием динамической памяти - всего до 640К. Ты думаешь, это так много? Уверяю тебя, это совсем не так... Ну, в принципе, дело-то твое, если тебе удобнее разбираться с кучей массивов и делать 70-строчные if/else, то делай по своему, кто ж против... Тебе говорят, как правильнее делать - ты опять ничего слушать не хочешь... Делай как знаешь, чего спрашиваешь тогда? Цитата программа генерирующая случайное условия соответствующую первичным набором данных (случайный тест) в котором должен быть хоть один искомый обьект. Объясняю: тебе надо написать программу, заполняющую файл duom.txt так, чтобы потом в результате запуска основной программы, ведущей подсчет, получилось ненулевое значение. Опять же, если сделать через смещения, как делал я - это займет 25 строк кода:что тут надо сделать непонял может объясните? var(записываешь эти результаты в файл, не забудь количество добавить, и тестируешь основную программу этим файлом...) |
Текстовая версия | 3.06.2024 19:15 |