![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Sven777 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
Хочу изучить язык Паскаль по книжке, самостоятельно.И у меня возник вопрос.
Не могу решить вот эту задачу: Определить сколько раз последовательность из N произвольных чисел меняет знак. Просто не знаю, что делать с этими произвольными числами ![]() Желательно бы и алгоритм к этой задаче.Весь его писать не надо просто объясните, как решать вопрос с произвольными числами.
Это сообщение отредактировал(а) Kuvaldis - 3.7.2007, 00:50 |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 11 Всего: 360 |
Для домашних заданий, курсовых, существует "Центр Помощи"
Тема перенесена! |
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 12 Всего: 24 |
||||
|
||||
Sven777 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
Наверняка есть какой-нибудь генератор произвольных чисел. Или надо просто тупо вводить их?
|
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 12 Всего: 24 |
есть и генератор: random(N) - случайное число от 1 до N. (вначале программы нужно вызвать процедуру randomize; для инициализации генератора случайных чисел)
но в данном случае (как я понял) это не важно, главное - придумать алгоритм посчета числа смен знаков. Это сообщение отредактировал(а) likehood - 2.7.2007, 18:59 |
|||
|
||||
Sven777 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
Можешь дать какую-нибудь ссылку про этот randomoze?
|
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 12 Всего: 24 |
просто в начале программы один раз вызываешь randomize; для инициализации генератора
затем для получения случайного числа (от 1 до N) вызываешь random(N); Добавлено через 46 секунд в принципе, в встроенном хэлпе про него должно быть написано |
|||
|
||||
Sven777 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
likehood, Спасибо
|
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
Sven777,
Тебе нужно сгенерировать случайное число так, чтобы оно могло быть как положительное, так и отрицательное. random(N) генерит случайное число из интервала (1, N) Поэтому используй для заполнения такую формулу: переменная = Random(1, N) - N/2 Тогда значение будет между (-N/2, N/2) -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
greenpc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 29.1.2007 Репутация: нет Всего: нет |
Sven777
![]() ф -ция random возвращяет значения 0 <= X < 1 или 0 <= X < 100 для данного примера Это сообщение отредактировал(а) greenpc - 3.7.2007, 08:44 |
|||
|
||||
Sven777 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
Задачу вроде бы решил.Произвольные числа вводяться с клавиатуры.
//Произведение двух чисел с разными знаками - отрицательное число// На это и опирался.Немного топорно, конечно, получилось, но ничего задача работает правильно! Как на ваш взгляд все правильно сделал или можно было бы как-нибудь упростить, а то громозко как-то выглядит?
Это сообщение отредактировал(а) Kuvaldis - 3.7.2007, 19:46 |
||||
|
|||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 12 Всего: 24 |
Прежде всего бросаются в глаза строчки 19 и 21, в которых происходит одно и то же действие в разных частях условного оператора. Поскольку увеличить i нужно в любом случае, лучше сделать это после условного оператора. Кстати, в данном случае лучше было использовать цикл for, тогда i увеличивалось бы автоматически.
Еще я бы перенёс ввод x1 в начало цикла, тогда в начале программы не нужно было бы вводить x1 и, кроме того, можно было бы убрать условие в 22 строке. Ну и еще не помешает сделать нормальные отступы, чтобы программу было проще читать. |
|||
|
||||
Sven777 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
Вот эта идея мне понравилась. Учту эти замечания и попытаюсь переделать программу.
А как надо правильно делать эти отступы??? |
||||
|
|||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 12 Всего: 24 |
Как то так:
После каждого begin'а делатеся отступ (обычно 4 пробела). |
|||
|
||||
Sven777 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
likehood, спасибо, решил как вы посоветовали и получилось намного кратче.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |