IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> сумма и кол-во отрицательных элементов
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 61
Пол: Мужской

Репутация: -  0  +


Помогите пожайлуста доделать программу.В одномерном массиве, из N вещественных элементов,(n<=50) вычислить сумму и количество отрицательных элементов массива, расположенных между максимальным и минимальным элементами.
Program one;
type
m=array[1..50] of integer;
var
a:m;
i,n:integer;
min,max,mini,maxi:integer;
procedure printArray(var a:m);
var
i:integer;
begin
write('n=');
readln(n);
for i:=1 to n do
a[i]:=random(100)-50
end;
procedure outarray(var a:m);
var
i:integer;
begin
for i:=1 to n do
write('',a[i]:4);
end;
procedure minandmax(var a:m);
var
i:integer;
begin
max:=a[1];
min:=a[1];
for i:= 1 to n do
if a[i]>max then
begin max:=a[i]; maxi:=i;
for i:=1 to n do
if a[i]<min then
begin min:=a[i]; mini:=i;
writeln;
writeln('maxi=',maxi);
writeln('mini=',mini);
end;
end;
end;
procedure sumandkol(var a:m);
var
i,n,s:integer;
begin
writeln('maxi=',maxi);
writeln('mini=',mini);
s:=0;
n:=0;
while a[i]<0 do
begin
if ((a[i]>mini) and (a[i]<maxi)) then
s:=s+a[i];
end;
writeln('summs=',s);
n:=abs(max-min);
writeln('kol-vo',n);
end;
BEGIN
randomize;
printarray(a);
outarray(a);
minandmax(a);
sumandkol(a);
readln;
end.


Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


The matrix has me!!!
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Сразу бросается в глаза, что массив твой не из вещественных чисел, а из целых!!!
m=array[1..50] of integer;

замени integer на real!!!


--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 61
Пол: Мужской

Репутация: -  0  +


а что ещё исправить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


The matrix has me!!!
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


не присвайвай минимальному и максимальному первый элемент массива!!!
сегодняшняя тема, там аналогичный поиск, масксимального и минимального, в этом вроде бы ошибка...
задачи на массив и матрицу

Сообщение отредактировано: Yevgeny -


--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 61
Пол: Мужской

Репутация: -  0  +


почему ведь должно проходится с первого
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Тебе не нужны значения мах и min, а нужны их номера.
uses crt;
const
n=10;
type
m=array[1..n] of integer;
var
a:m;
imin,imax:integer;

procedure printArray(var a:m);
var
i:integer;
begin
for i:=1 to n do
read(a[i])
end;

procedure outarray(var a:m);
var
i:integer;
begin
for i:=1 to n do
write(a[i]:5);
end;

procedure minandmax(var a:m);
var
i:integer;
begin
imax:=1;
imin:=1;
for i:= 1 to n do begin
if a[imax]<a[i] then imax:=i;
if a[imin]>a[i] then imin:=i
end;
writeln(' IMAX= ',imax,' IMIN= ',imin);
end;

procedure sumandkol(var a:m);
var
i,n,s:integer;
begin
s:=0;
n:=0;
for i:= imax+1 to imin-1 do begin //раз МЕЖДУ ними
if a[i]<0 then s:=s+a[i];
inc(n)
end;

writeln('summs=',s);
writeln('kol-vo',n);
end;
BEGIN
clrscr;
printarray(a);
outarray(a);
minandmax(a);
sumandkol(a);
readkey;
end.
Вот мой вариант, исправь тока типы и ввод матрицы
Проверил не на все варианты, но не вижу причин чтоб не работало
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 61
Пол: Мужской

Репутация: -  0  +


всё равно где то ошибка
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


The matrix has me!!!
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


видимо не все, если я не оибаюсь... smile.gif Прикрепленное изображение


--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
расположенных между максимальным и минимальным элементами.
blum.gif И сколько между ними отрицательных элементов?

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 61
Пол: Мужской

Репутация: -  0  +


а если другой набор встречается то неправильно считается.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


The matrix has me!!!
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


сорри smile.gif


--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
а если другой набор встречается то неправильно считается.
Не работает то, не работает сё... Ты покажи на каких примерах дало неправильный результат
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


The matrix has me!!!
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


введи например, -10,-5...,20,1,2,3
и их ноль всё равно ведь будет... blum.gif smile.gif

Добавлено через 4 мин.
ну правильно, потому что s, и n должны быть параметрами процедуры, а не локальными переменными smile.gif вот и ошибка...


--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Сорри, что вмешиваюсь, а если imax будет БОЛЬШЕ imin - то цикл For не будет просто пропущен? Надо еще ко всему написанному поменять imin и imax местами так, чтобы imin было гарантированно НЕ МЕНЬШЕ чем imax...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


The matrix has me!!!
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


а вот и нет blink.gif
это я на счёт своего сообщения...

Сообщение отредактировано: Yevgeny -


--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
Сорри, что вмешиваюсь, а если imax будет БОЛЬШЕ imin - то цикл For не будет просто пропущен? Надо еще ко всему написанному поменять imin и imax местами так, чтобы imin было гарантированно НЕ МЕНЬШЕ чем imax...
Я только рад smile.gif
А всего-то надо чуть изменить
procedure sumandkol(var a:m);
var
i,n,s,k:integer;
begin
s:=0;
n:=0;
if imin<imax then begin
k:=imax;
imax:=imin;
imin:=k
end;
for i:= imax+1 to imin-1 do begin
s:=s+a[i];
inc(n)
end;

writeln('summs=',s);
writeln('kol-vo',n);
end;
Про что, собственно, забыл уточнить

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Пионер
**

Группа: Пользователи
Сообщений: 61
Пол: Мужской

Репутация: -  0  +


всем большое спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 19:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name