Sir_cat

Пользователь

Регистрация: 20.12.2017

Сообщения: 8028

Рейтинг: 1820

Sir_cat

Регистрация: 20.12.2017

Сообщения: 8028

Рейтинг: 1820

img

Вообщем, меня просят набросать программу, которая сможет "подсчитать кол-во отрицательных эл-тов и изменить значение каждого положительного элемента (кроме последнего) путем его деления на значение последующего члена (если это не ноль)". Первую то часть задания я выполнил

Спойлер:

Спойлер: "код"
const N=40;var a: array[1..N] of integer;i, pol, otr: byte;begin pol:=0;otr:=0;for i:=1 to N do begina := random(100) - 50;

write(a:4);

if a < 0 then

otr := otr + 1

else

if a > 0 then

pol := pol + 1;

end;

writeln;

writeln('Положительных: ', pol);

writeln('Отрицательных: ', otr);

end.  
 

 

(да, прога считает кол-во положительных и отрицательных чисел), но как сделать так, чтобы каждый положительный элемент (кроме последнего) делился на следующий эл-т? И еще вопрос: а как мне узнать кол-во эл-тов, если мне пишут: x1,x2..xn? 

Kagon

Пользователь

Регистрация: 14.03.2017

Сообщения: 12770

Рейтинг: 7256

Kagon

Регистрация: 14.03.2017

Сообщения: 12770

Рейтинг: 7256

Хз как там в ваших паскалях, но *(arr + i) /= *(arr + i + 1)

Эта мразь индексы удаляет... Написал немного в другом виде. Короче, элемент i массива arr.

Успешный

Пользователь

Регистрация: 18.01.2016

Сообщения: 796

Рейтинг: 510

Успешный

Регистрация: 18.01.2016

Сообщения: 796

Рейтинг: 510

Мне кажется решений таких заданий полно на киберфорумах, причем на любом языке. Не проще там поискать?

Kujivunia

Пользователь

Регистрация: 10.01.2015

Сообщения: 5505

Рейтинг: 996

Kujivunia

Регистрация: 10.01.2015

Сообщения: 5505

Рейтинг: 996

if a(i)>0

a(i)/=a[i+1]

оно индексы удаляет, замени скобки круглые на квадратики

Олег Бур

Пользователь

Регистрация: 24.07.2018

Сообщения: 80

Рейтинг: -25

Олег Бур

Регистрация: 24.07.2018

Сообщения: 80

Рейтинг: -25

Sir_cat сказал(а):

Вообщем, меня просят набросать программу, которая сможет "подсчитать кол-во отрицательных эл-тов и изменить значение каждого положительного элемента (кроме последнего) путем его деления на значение последующего члена (если это не ноль)". Первую то часть задания я выполнил

Спойлер:

Спойлер: "код"

const N=40;var a: array[1..N] of integer;i, pol, otr: byte;begin pol:=0;otr:=0;for i:=1 to N do begina := random(100) - 50;

write(a:4);

if a < 0 then

otr := otr + 1

else

if a > 0 then

pol := pol + 1;

end;

writeln;

writeln('Положительных: ', pol);

writeln('Отрицательных: ', otr);

end.  

 

(да, прога считает кол-во положительных и отрицательных чисел), но как сделать так, чтобы каждый положительный элемент (кроме последнего) делился на следующий эл-т? И еще вопрос: а как мне узнать кол-во эл-тов, если мне пишут: x1,x2..xn? 

Нажмите, чтобы раскрыть...

Чтобы узнать количество элементов массива есть свойство Count у всех объектов типа Список.

Либо если хочешь чтобы программа вручную считала количество элементов есть цикл While.

 

По типу 

Massiv:= array[x1,x2..xn] of int;

int Count:=0;

int IndexOfArray;

 

While (IndexOfArray in Massiv) do

Count++; // Текущей индекс элемента массива

end.

 

Я Паскаль не помню. Редактируй код если ошибаюсь.

 

Этим же циклом While узнаешь положительный ли элемент или нет и делить на следующий. Что-то вроде:

 

while ... do

 

if IndexOfArray > 0 then

IndexOfArray:=IndexOfArray \ Massiv[Count] *Не прибавляю +1 к индексу потому что массивы начинаются с 0.

 

 

end.

 

Шаурма с Сыром

Пользователь

Регистрация: 06.04.2016

Сообщения: 2948

Рейтинг: 540

Шаурма с Сыром

Регистрация: 06.04.2016

Сообщения: 2948

Рейтинг: 540

Цикл и кейсы, самое простое для расширения потом функционала, а не непонятные тебе формулы через неделю.