![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Valkirie |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Вводится массив. Найти минимум из сумм 3-х его последовательных элементов. Например, для массива
1 3 4 6 7 данные суммы равны 8, 13 и 17, минимум равен 8. Помогите, умираю ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Valkirie
Не умирай ... Код const n = 5; a: array[1 .. n] of integer = (1, 3, 4, 6, 7); var i, j, s: integer; min: integer; begin min := maxInt; for i := 1 to n - 2 do begin s := 0; for j := i to i + 2 do s := s + a[j]; if min > s then min := s end; writeln('min = ', min) end. Только проверь, я не компилировал... P.S. Если массив A будет длиннее, можно сделать так: Код const n = 11; a: array[1 .. n] of integer = (1, 3, 4, 6, 7, 2, 1, 4, 3, 2, 1); var i, s: integer; min: integer; begin s := 0; for i := 1 to 3 do s := s + a[i]; min := s; for i := 4 to n do begin s := s - a[i-3]+a[i]; if min > s then min := s end; writeln('min = ', min) end. Сообщение отредактировано: volvo - 2.12.2004 18:17 |
Valkirie |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
volvo
Спасибо огромное, без твоих идей наверное не разобралась бы. Массив динамический, поэтому решение чуть-чуть другим вышло... Код var Mas1: array of integer; var i,min,s:integer; begin SetLength(Mas1,ListBox1.Items.Count); for i:=0 to ListBox1.Items.Count-1 do Mas1[i]:=StrToInt(ListBox1.Items[i]); min:=maxInt; for i:=1 to Length(Mas1)-1 do begin s:=Mas1[i]+Mas1[i-1]+Mas1[i+1]; if min>s then min:=s; end; Label1.Caption:=FloatToStr(min); end; end. Не обращай внимания, что это Делфи, переписать я перепишу ;) Спасибо, спас ;) |
GoodWind |
![]()
Сообщение
#4
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Valkirie, respect !
не просто ждете готового решения, но и сами что-то делаете. Все бы так ! -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
Valkirie |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
GoodWind
Стараюсь сама, но не всегда получается...вот сейчас ещё с одной задачкой мучаюсь... |
Valkirie |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Всё-таки нужна будет помощь... :molitva:
Дана последовательность целых чисел ai. Построить новую последовательность, содержащую элементы исходной последовательности, равными двойке в четной степени. Вход В каждой строке входа дано по одному элементу исходной последовательности. Признак конца последовательности - 0. Выход В каждую строку выхода вывести по одному элементу результирующей последовательности. Заключительный нуль в результат не выводить. Пример Вход: 433 16 8 128 1024 654 0 Выход: 16 1024 Я вот тут насочиняла Код var A,X:integer; begin repeat Write(''); ReadLn(A); X:=0; if (A=Exp(X*Ln(2))) and (X mod 2=0) then WriteLn(A) else X:=X+1; until A=0; ReadLn; end. Но работать оно не желает =( |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Valkirie
Если числа ограничены типом LongInt: Код var j, A:integer; begin repeat ReadLn(A); if a = 0 then break; j := 2; while j <= 30 do if (longint(A)=longint($0001 shl j)) then begin writeln('>', A); break end else inc(j, 2) until A=0; end. Сообщение отредактировано: volvo - 2.12.2004 21:57 |
Valkirie |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Нам такого не рассказывали про Longint и про break
![]() |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Valkirie
Когда-то же надо начинать ![]() Тогда попробуй вот так: Код var j, A:integer; stop: boolean; begin repeat ReadLn(A); if a <> 0 then begin j := 2; stop := false; while (j <= 30) and (not stop) do if A=($0001 shl j) then begin writeln('>', A); stop := true end else inc(j, 2) end until a = 0; end. |
Valkirie |
![]()
Сообщение
#10
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Не....всё не то...прога как находит чётную степень двойки так сразу останавливается, выводя её, не позволяя вводить последовательность дальше... =(
И ещё вот эта запись в теле цикла мну совсем не понятна... Код (j <= 30) and (not stop) do if A=($0001 shl j) then Зачем я вообще на это программирование учится пошла... Сообщение отредактировано: Valkirie - 2.12.2004 22:15 |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Valkirie
Ну вот только не надо говорить, что последняя программа это делает. Я все-таки программы тестирую перед тем, как запостить... |
Valkirie |
![]()
Сообщение
#12
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Ай ладно...
последняя...позволяет...только выводить она их не так должна... а так как показано в задании на выходе...=( |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Valkirie
А я и не делал по заданию... Я просто показал тебе, как определяется четная степень двойки. Ты же все равно переделываешь это на Дельфи... Так вместо того, чтобы печатать число - добавляй его к массиву, а после того, как программа выйдет из Repeat, распечатывай все содержимое массива... |
Valkirie |
![]()
Сообщение
#14
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
т.е. вот это вот A=($0001 shl j) - чётная степень двойки...
Мне кстати эту задачу на Делфи перекатывать не нуно...она консольная должна быть... Пойду повешусь... |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Valkirie
Тогда другой вопрос - сколько чисел из введенных могут быть четной степенью двойки (в Паскале нет динамических массивов - так что нужно конкретное число)... Подставь его вместо 256 в maxPower. Код const maxPower = 256; var numbers: array[1 .. maxPower] of integer; {можешь изменить на longint если нужно работать с большими числами} j, A:integer; stop: boolean; counter: Integer; begin counter := 0; repeat ReadLn(A); if a <> 0 then begin j := 2; stop := false; while (j <= 30) and (not stop) do if A=($0001 shl j) then begin inc(counter); numbers[counter] := A; stop := true end else inc(j, 2) end until a = 0; writeln('results'); for j := 1 to counter do writeln(numbers[j]); end. |
Valkirie |
![]()
Сообщение
#16
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
ладно - спасибо...
всё равно всё это не так решается... намного проще... я на твой код смотри и в обморок падаю - впервые такие ужасы вижу... Всё равно спасибо, завтра к однокурсникам за помощью пойду - я тупая походу... |
Valkirie |
![]()
Сообщение
#17
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Код var k,S,n:integer; begin Repeat ReadLn(n); S:=1;k:=0; While S<n do Begin S:=S*2; Inc(K) end; if (k mod 2=0) and (S=n) then WriteLn(n); until n=0; end. Вот этого от меня хотел сервер.... |
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
Valkirie
Цитата Вот этого от меня хотел сервер.... Ты меня, конечно, извини, но эта программа тоже не делает того, что показано в условии... Моя программа от 2.12.04 20:57 делает точно то же самое, что и твоя последняя (убрать символ ">" не проблема... ) А если тебе нужно намного проще, то об этом надо говорить сразу. Я не телепат. |
Valkirie |
![]()
Сообщение
#19
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Не ругайся....
Я ведь в этом ничегошеньки не понимаю...сложно всё это мне... ![]() |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 4:59 |