![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
aigulia |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 4 Пол: Женский Репутация: ![]() ![]() ![]() |
Помогите написать программы на Паскале! Сама в этом не разбираюсь, по этому прошу вашей помощи! Заранее спасибо!!
1. Если уравнение ax2 + bx + c = 0 (a не равно 0) имеет вещественные корни, то логической переменной t присвоить значение true, а переменным x1 и x2 – сами корни, иначе же переменной t присвоить false, а значения переменных x1и x2 не менять. 2. Дано 50 вещественных чисел. Найти порядковый номер того из них, которое наиболее близко к какому-нибудь целому числу. 3. Дано натуральное k. Напечатать k-ю цифру последовательности 1234567891011121314…, в которой выписаны подряд все натуральные числа. 4.Даны целые числа x1, x2, …, x55. Вычислить величину x1(x2+x3)(x4+x5+x6)(x7+x8+x9+x10)…( x46+x47+…+x55). |
![]() ![]() |
TarasBer |
![]()
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Сама в этом не разбираюсь, по этому прошу вашей помощи!
Зря. Начали бы сами, помогли бы нормально. А так... Специально напишу не на паскале, а на псевдокоде. Чтобы вам было, над чем подумать. И правильность не проверял. 1. Код d := b^2-4ac; дискриминант if d >= 0 t := true; s := sqrt(d); x1 := (-b-s)/2a; x2 := (-b+s)/2a; else t := false; end if 2. Код for i from 0 upto 49 ad := abs(M[i] - N); расстояния от текущего элемента массива до того числа if i = 0 or d > ad MinIndex := i; d := ad; end if; end for; 3. Код N := 0; L := 1; M := 9; while K > N вычисление первой степени десятки, запись до которой содержит хотя бы K цифр ON := N; N := N + M * L; L := L + 1; M := M * 10; end while; RN := (K - ON - 1) div (L - 1) + M div 90; вычисление числа, в запись которого попала K-я цифра RD := L - 2 - (K - ON - 1) mod (L - 1); порядковый номер цифры в числе for i from 0 upto RD RN := RN div 10; end for Result := RN mod 10; 4. Код P := 1; S := 0; N := 1; K := 2; for i from 1 upto 55 S := S + X[i]; временная сумма if i = N номер элемента, в котором надо обнулить временную сумму P := P * S; ответ S := 0; N := N + K; K := K + 1; end if; end for -------------------- |
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
По 4-й задаче: я б сделал вот так:
p:=1; P.S. "псевдокод" я бы не приветствовал на форуме по Паскалю.. Правильно оформить реальный кусок кода - уже некоторая задача для новичка. Если недостаточно - есть и другие способы усложнить.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
3-я задача тоже интересная. Я написал, потом стал смотреть решение TarasBer'а. Выяснилось, что ход решения практически тот же )). Потом я все же дал себе труд перевести этот "псевдокод" на Pascal, и - результат негативный ((. TarasBer, ищи ошибку. Мне кажется, ты запутался в последних подсчетах, но настаивать не буду..
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Во 2-й задаче, TarasBer, ты несколько не понял условие.. Нужно искать число, максимально близкое к любому (не важно, какому именно) целому.
Млжно примерно вот так: for i:=1 to 50 do a[i]:=Random*100; {задаем массив вещественных чисел от 0 до 100} -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
![]()
Сообщение
#6
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> for i:=1 to 50 do if Abs(a[i]-Round(a[i]))<d then m:=i;
А кто будет менять d?
> По 4-й задаче: я б сделал вот так: Да, так лучше, тут я сбыдлокодил. > Потом я все же дал себе труд перевести этот "псевдокод" на Pascal, и - результат негативный ((. TarasBer, ищи ошибку. Мне кажется, ты запутался в последних подсчетах, но настаивать не буду.. Очень может быть. Надо посмотреть. Вообще, конечно, можно тупо писать по очереди в строку, пока её длина не превысит k (чтобы память не тратилась, можно только запоминать длину, а строку заново переписывать для каждого числа), но это другой порядок скорости - O(n) вместо логарифма, мне это не нравится. -------------------- |
TarasBer |
![]()
Сообщение
#7
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Попробовал
for i := 0 to RD do RN := RN div 10; Заменить на for i := 0 to RD - 1 do RN := RN div 10; Так лучше. Прогнал до k=1000, вроде достоверно. -------------------- |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата 3. Дано натуральное k. Напечатать k-ю цифру последовательности 1234567891011121314…, в которой выписаны подряд все натуральные числа. Задача решалась, причем не одним пользователем на этом форуме (См. Олимпиадные задачи, пост №15). Прежде всего надо было обратиться к поиску. Автор даже этого не сделал. Надо ему очень эти фрагменты решений? От сейчас их возьмет и пойдет на другой форум. А там ему слепят из них очередного монстра... "Псевдокод"... Я тебе, TarasBer, тоже как-нибудь отвечу с использованием псевдокода. Посмотрим, сколько тебе времени понадобится, чтобы разобраться и перенести решение на любой другой язык... |
Lapp |
![]()
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Задача решалась, причем не одним ... volvo, я не думаю, что ты думаешь, что я думаю, что эта задача не решалась )). Но дело же не в этом.. Автор даже этого не сделал. Надо ему очень эти фрагменты решений? В конце концов, главное - потрепаться, и чтоб задача была хорошая )). А что до автора - ну, ну.. ну - чиво тут поделаешь?.. СУДБА.. TarasBer, спасибо за поправку. И обрати внимание на слова volvo по псевдокоду тоже (я не одинок)). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 6:31 |