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

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

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

3 страниц V < 1 2 3 >  
 Ответить  Открыть новую тему 
> 2-мерный массив на ООП, помогите исправить ошибку
сообщение
Сообщение #21


Новичок
*

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

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


третий массивчик надо как-то вместить на экране, но как? и сумму все же столбцов
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Профи
****

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

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


по-моему никак) во всяком случае я выхода не знаю..
сейчас пересмотрела, у меня действительно сумма строк, сама переделаешь можешь на подсчет того, что тебе надо?

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


Новичок
*

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

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


спаси меня, Айра, умоляю
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #24


Профи
****

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

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


Странно как-то.. написала такой большой код, а сейчас не можешь поменять местами i\j и n\m ?
Ну ладно.. вот:

function ooo.sum_m;
var
i, j: byte;
Summ, ResSumm: integer;
IsNegative: boolean;
begin
ResSumm := 0;

for j := 1 to m do
begin
IsNegative := false;
Summ := 0;
i := 1;
while (i <= n) and not IsNegative do
begin
if a[i,j] > 0 then
Summ := Summ + a[i,j]
else
IsNegative := true;
inc(i);
end;
if not IsNegative then
ResSumm := ResSumm + Summ;
end;
sum_m := ResSumm;
end;


Да.. random во вводе поправь, я единицу прибавляла для проверки, теперь не надо.. а то даже нулей в массиве не будет..

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


Новичок
*

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

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


в функции надо поменять i с j местами и дописать вывод суммы столбцов, да? но тогда в основной проге тоже надо переделывать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #26


Профи
****

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

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


NiMfetKa, ну я же у тебя несколько раз спрашивала: "выводить сумму надо каждого столбца отдельно или всех столбцов матрицы?" (естественно, удовлетворяющих условию)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #27


Новичок
*

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

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


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


Профи
****

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

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


тогда вот это: функция подсчета мутирует в процедуру и выводит суммы по мере вычисления.. (ну и еще кое-какие изменения есть)
Program pr7;
uses crt;
type matr=array [1..10,1..10] of integer;
ooo = object
m,n: byte;
a:matr;
procedure Vvod(size_n,size_m: byte); //исправила
procedure vivod;
procedure sum_m;
end;

var x,y,z:ooo;

procedure ooo.vvod;
var i,j:byte;
begin
n:=size_n;
m:=size_m;
for i:=1 to n do
for J:=1 to m do
a[i,j]:=random(20)-5;
end;

procedure ooo.vivod;
var i,j:byte;
begin
for i:=1 to n do
begin writeln;
for j:=1 to m do
write(a[i,j]:6);
end;
writeln;
end;

procedure ooo.sum_m;
var
i, j: byte;
Summ: integer;
IsNegative: boolean;
begin

for j := 1 to m do
begin
IsNegative := false;
Summ := 0;
i := 1;
while (i <= n) and not IsNegative do
begin
if a[i,j] > 0 then
Summ := Summ + a[i,j]
else
IsNegative := true;
inc(i);
end;
if not IsNegative then write(Summ:6);
end;
writeln;
end;

begin
clrscr;
randomize;
x.vvod(5,6);
y.vvod(10,8);
z.vvod(8,7);
x.vivod;
y.vivod;
z.vivod;
x.sum_m;
y.sum_m;
z.sum_m;
readln;
end.


Все, я ушла..

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


Новичок
*

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

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


пасибки, Айра, огромное))

Добавлено через 3 мин.
но вот результаты с random(20)-5
Код
    -4     4    -4    11    -4
     0    13     2    10     1
     8    11     9     1    -2
     1     4    -1    11     0

     4    -3    12     0    10    14     4    12    11    -5
    -3    -3     5    -5     6    -5    10     8    10     9
     6    -1     8     6    14     7    14    -1     8     0
    -4    10     4    12     5     6    14     8     1    -5
     9    14    10     9    -2    -3    13    10     6    12
     8     0    -4     7     0    12    -2     0     5    14
    -2    -2     0    -2     6     4     0    -2     7     9
     9    -4    -4    -4    -3    10    11     2     7     3

     9     4     1    11    11    -3    -4    -4
    -4    -2     8    -1     6     0     2    11
     1     1     8     8    13     1     4     0
    10     9     6     9     3     5     6    12
     8    -3     4     3    -3    -4     5     8
    -4    13    11     8    13     0     9     9
     4     8    -2    -1    13     2    -3    14

    55



а если менять на random(60)-5 , то
Код
    -1    23    -1    45    -2
    12    50    17    41    14
    36    45    38    13     4
    14    22     9    44    11

    23     3    47    12    41    53    24    48    44    -4
     3     3    25    -4    30    -5    41    34    41    37
    28     7    35    30    52    33    54     9    35    12
     0    41    24    47    25    29    52    36    15    -5
    37    54    41    39     6     3    49    42    30    46
    36    12     0    32    11    47     4    11    27    52
     5     4    11     5    29    24    12     4    31    39
    39    -1    -1    -2     1    42    43    17    31    21

    39    24    15    44    44     3     0    -1
    -2     6    35     8    29    10    16    45
    13    13    34    36    49    14    23    12
    41    39    28    38    19    27    30    47
    35     1    23    19     1    -2    27    35
    -1    50    45    35    50    11    37    39
    24    34     4     8    51    16     2    54
   167
   171   195   279   201   254
   167   184   188   243   135

почему в первой матрице только одна сумма, если с положительными элементами 2-ва столбца? да еще странная какая-то...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #30


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Айра, ты зачем поменяла местами m и n?

procedure Vvod(size_m,size_n: byte);


NiMfetKa, все (почти) верно, у тебя просто первые две строчки первой матрицы уползают за экран, и ты их не видишь.

Добавлено через 6 мин.
Еще вместо
      if a[i,j] > 0 then
нужно
      if a[i,j] >= 0 then


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


Новичок
*

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

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


Хм, как переделать процедуру ooo.sum_m в функцию определения отрицательных элементов и процедуру определения суммы. Хелп ми
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #32


Профи
****

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

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


Цитата
Айра, ты зачем поменяла местами m и n?

Ой.. случайно.. в алфавитном порядке записала.. (сейчас исправлю)

Цитата
Еще вместо

Вот с этим всегда проблемы, считать ли ноль положительным числом или нет)) наши преподы отвечали: "не считайте"
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #33


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Айра @ 9.01.2009 13:12) *
Вот с этим всегда проблемы, считать ли ноль положительным числом или нет)) наши преподы отвечали: "не считайте"
Никаких проблем нет. Разумеется, ноль - не положительное число. Но только в условии ничего нет про положительные числа, цитирую:
Цитата(NiMfetKa @ 9.01.2009 0:59) *
Определить сумму элементов в тех столбцах, которые не содержат отрицательных элементов.

Мне кажется, тут разночтений быть не может smile.gif


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


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(NiMfetKa @ 9.01.2009 12:56) *
функцию определения отрицательных элементов
- что это значит? blink.gif
Выражайся так, чтоб тебя можно было понять. Может, в функцию определения наличия отрицательных элементов?


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


Профи
****

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

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


to NiMfetKa, и можно вообще увидеть конкретные требования по заданию и программе? а то твои просьбы постоянно мутируют, и постоянно что-то переделывать желания не возникает...

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


Новичок
*

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

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


да, Lapp, в в функцию определения наличия отрицательных элементов и в процедуру определения суммы столбцов.
Айра, все требования и их изменения зависят только от переменчевого настроения преподавателя.

там же функция должна передавать параметр j и быть логического типа, да? а процедуда должна определять суммы только в том случае, когда not IsNegative?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #37


Профи
****

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

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


Цитата
там же функция должна передавать параметр j и быть логического типа, да?

То есть? Может в функцию должен передаваться этот параметр (номер столбца) ?
(в голову приходит процедура с вложенной в нее функцией.. )
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #38


Новичок
*

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

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


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


Профи
****

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

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


procedure sum_m;
function IsNegative({передаешь номер текущего столбца}): boolean;
begin
{здесь идет проверка конкретного столбца наличие отрицательных элементов.
если они есть, то функция принимает значение true, если нет - false
}
end;
begin
for j:=1 to m do
if not IsNegative(j) then
{считаешь и выводишь сумму}
end;
{это краткий набросок}



?

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


Новичок
*

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

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


а не вложенной можно сделать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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