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

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

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

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


Новичок
*

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

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


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


Профи
****

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

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


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

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


Новичок
*

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

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


спаси меня, Айра, умоляю
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 9.01.2009 3:28
Сообщение #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 во вводе поправь, я единицу прибавляла для проверки, теперь не надо.. а то даже нулей в массиве не будет..

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


Новичок
*

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

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


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


Профи
****

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

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


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


Новичок
*

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

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


четкого требования нет, но, наверное, удобнее для просмотра будет же сумма кождого столбца... blush.gif blush.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 9.01.2009 3:49
Сообщение #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.


Все, я ушла..

Сообщение отредактировано: Айра - 9.01.2009 13:13
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
NiMfetKa
сообщение 9.01.2009 4:47
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.01.2009 5:29
Сообщение #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 
 К началу страницы 
+ Ответить 
NiMfetKa
сообщение 9.01.2009 12:56
Сообщение #31


Новичок
*

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

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


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


Профи
****

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

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


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

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

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

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


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

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

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


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

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


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


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

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

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


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


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


Профи
****

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

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


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

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


Новичок
*

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

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


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

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


Профи
****

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

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


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

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


Новичок
*

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

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


ХМ, нет, не вложенный... процедурка же должна знать сумму какого столбца ей определять...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 10.01.2009 19:09
Сообщение #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;
{это краткий набросок}



?

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


Новичок
*

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

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


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

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

 



- Текстовая версия 9.08.2025 19:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"