Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 18 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 23.09.2008
Откуда: взять деньги?
Здравствуйте!Помогите пожалуйста и если можно по-быстрее!
Условие-вводится произвольная последовательность целых чисел,заканчивающихся нулём.(С клавиатуры)
1)Найти наибольшее из всех,кратное 3.
2)Найти два наименьших числа.
3)Определить,сколько раз последовательность меняет знак.
ЗЫ-это циклы
Очень прошу - помогите пожалуйста!

_________________
i7 между ног? А i5 встал и смог!



Партнер
 

Member
Статус: Не в сети
Регистрация: 18.08.2008
Откуда: Саратов
Ясен пень, что это циклы. Берем и перебираем все числа, проверяя на условия. Всё элементарно. Надо просто немного подумать


 

Member
Статус: Не в сети
Регистрация: 17.04.2008
Откуда: Москва
а мы в школе в контру играли :D

_________________
GA-P55-US3L; i5-750 + Performa @ 3.8Ghz; GTX780; 2xKVR1333D3N9K2/4G


 

Member
Статус: Не в сети
Регистрация: 18.08.2008
Откуда: Саратов
Ах, да. Числа сначала надо в массив ввести, а уже из него перебирать члены


 

Member
Статус: Не в сети
Регистрация: 23.09.2008
Откуда: взять деньги?
Intelator
помоги пожалуйста,у меня с информаикой плохо(

Добавлено спустя 14 минут 1 секунду:
помогите пожалуйста с 3ей! 1и2 решил!

_________________
i7 между ног? А i5 встал и смог!


 

Member
Статус: Не в сети
Регистрация: 18.08.2008
Откуда: Саратов
Последовательность меняет знак - имеется ввиду, что числа меняют или их сумма? Тут надо алгоритм продумать... Думаю, мне в голову пришел не самый эффективный - надо разобрать 4 варианта: предыдущий член (или сумма) отрицателен, текущий положительный, предыдущий положительный, текущий положительный, предыдущий положительный, текущий отрицательный, предыдущий отрицательный, текущий отрицательный. Для двух из четырех случаев увеличиваем счетчик, в двух других не трогаем его


 

Member
Статус: Не в сети
Регистрация: 27.05.2007
если сумма то типо такого условия...
в цикле
if ((sum<>0) and ((sum>0) xor (flag))) then begin inc(count) flag=not flag; end;

предварительно до начала цикла первый раз считать переменную и суммировать её
кстати а массив вовсе не обязателен ни для одной из задач


 

Member
Статус: Не в сети
Регистрация: 18.08.2008
Откуда: Саратов
ДуччЧ писал(а):
массив вовсе не обязателен ни для одной из задач

Мне кажется, что так было бы удобнее. Будь задача на Delphi, я бы просто вводил числа в массив через inputbox


 

Member
Статус: Не в сети
Регистрация: 27.05.2007
мм.. а для получения результата всё равно же по последовательности необходимо только один раз проходить... да и при том мы не знаем количество элементов а т.к. паскаль то прощай динамические массивы... выходы конечно ещё есть... но самое простое это обойтись вообще без массивов...(да и память не тратится)
но кому как удобнее тот так и поступает...


 

Member
Статус: Не в сети
Регистрация: 19.10.2008
dubinzon писал(а):
3)Определить,сколько раз последовательность меняет знак.

Var
dlina{количество элементов в последовательности}, s4et4ik: integer;
massive: array[0..1000] of integer;
begin
s4et4ik:=0;
for i:=0 to dlina-1 do if massive[i]*massive[i+1]=abs(massive[i]*massive[i+1]) then s4et4ik:=s4et4ik+1;

end;
вот и все...

_________________
Core i3 2120/Deepcool Gamma Blade @FAN off/Gigabyte GA-P75-D3/4x2Gb Samsung ori/MSI N450GTS-MD1GD5/Palit GT440 MD1GD3 LP passive


 

Member
Статус: Не в сети
Регистрация: 27.05.2007
(1)player
на сколько я понял из условия длина занее не известна...
да и не жалко в пустую гонять массив из 1000 элементов?..
а к тому же вдруг элементов больше 1000?

если нет опечаток то так...

Код:
var
flag:boolean;
elt:integer;
count:integer;
begin
count:=0;
read(elt);
if elt>0 then flag:=true else flag:=false;
while elt<>0 do begin
 read(elt);
 if  ((elt<>0) and ((elt>0) xor (flag))) then begin inc(count); flag=not flag; end;   
end;
writeln(count);
end;


 

Member
Статус: Не в сети
Регистрация: 19.10.2008
ДуччЧ
Так для этого и есть переменная dlina. А массив не динамический, поэтому задал макс длину массива от балды.
И вот не понимаю, зачем усложнять задачу кодом? Логически помысля понимаем, что в произведении 2 числа с одним знаком будут давать абсолютное значение, а при разных знаках нет, поэтому пройдя по массиву легко найти количество переходов и задачка решается всего одной строкой
Цитата:
for i:=0 to dlina-1 do if massive[i]*massive[i+1]=abs(massive[i]*massive[i+1]) then s4et4ik:=s4et4ik+1;

_________________
Core i3 2120/Deepcool Gamma Blade @FAN off/Gigabyte GA-P75-D3/4x2Gb Samsung ori/MSI N450GTS-MD1GD5/Palit GT440 MD1GD3 LP passive


 

Member
Статус: Не в сети
Регистрация: 27.05.2007
(1)player писал(а):
И вот не понимаю, зачем усложнять задачу кодом?

ну я так думаю что проверка на условие ((elt<>0) and ((elt>0) xor (flag))) пройдет быстрее...
не надо стараться свести задачу в минимуму кода путём введения более ресурсоёмких операций... я конечно понимаю что в данном случае разница по скорости выполнения не заметна, но это же только учёба


 

Member
Статус: Не в сети
Регистрация: 19.10.2008
ДуччЧ
Ну упрощать вычисления машине я бы не стал при такой простой и легкой для железа программе и при том, что код демонстрировать нужно учителю, поэтому и выбираю самое простое (наглядное) для человека решение...
был печальный опыт во времена моей учебы, когда человек 3 недели мучал код на 10 листов, просто потому что не мог найти ошибку, а код можно было написать проще на 3 страницы (как я и сделал и за 3 дня все было проверено и перепроверено), пусть и ресурсоемко, но 100 Мбайтный массив сейчас ведь для железа не проблема, зато в оставшееся время я играл в КС :D

_________________
Core i3 2120/Deepcool Gamma Blade @FAN off/Gigabyte GA-P75-D3/4x2Gb Samsung ori/MSI N450GTS-MD1GD5/Palit GT440 MD1GD3 LP passive


 

Member
Статус: Не в сети
Регистрация: 27.05.2007
ладно... всё равно уже на оффтоп ушло..
этовсё равно учёба... я конечно не для конкретного примера говорю... и не для конкретного топикстартера, но лучше тут научиться писать код на 10 листов без ошибок и если всё же с ошибкой то быстро её искать... чем потом учиться делать это на работе...(имеется в виду если задумали дальше с этим работать)


 

Advanced member
Предупреждение 
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
Списки тут применять умнее массивов.

_________________
14900KF@6000/4800 (p95 & Linpack)
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


 

Member
Статус: Не в сети
Регистрация: 19.10.2008
HertZ
Списки будет разумнее и красивее, но автор темы не может написать сам такую задачку, так что списки для него будут, скорее всего, жутко темным лесом...

_________________
Core i3 2120/Deepcool Gamma Blade @FAN off/Gigabyte GA-P75-D3/4x2Gb Samsung ori/MSI N450GTS-MD1GD5/Palit GT440 MD1GD3 LP passive


 

Member
Статус: Не в сети
Регистрация: 27.05.2007
ещё раз... раз уж решили не усложнять задачу...
зачем вам вообще сдались эти списки и массивы... зачем хранить информацию о всей последовательности если в задаче об её дальнейшем применении не сказано...?


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 18 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan