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

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

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

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


Новичок
*

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

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


вот задание:
Заданы 3 матрицы действительных чисел 5х6, 10х8, 8х7. Определить сумму элементов в тех столбцах, которые не содержат отрицательных элементов. Сравнить результаты обработки матриц.

вот мой листинг:
Program pr7;
uses crt;
type matr=array [1..10,1..10] of integer;
ooo = object;
n,m:byte;
a:matr;
procedure Vvod(n,m:byte);
procedure vivod;
function sum_m: integer;
end;

var x,y,z:ooo;


procedure ooo.vvod;
var i,j:byte;
begin
for i:=1 to n do
for J;=1 to m do
a[i,j]:=random(20);
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:0);
end;
end;


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

for j := 1 to n do
begin
IsNegative := false;
Summ := 0;
i := 0;
while (i < m) or 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;



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


но почему-то после
Код
ooo = object;
выбивает 2 ошибку wacko.gif wacko.gif nea.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 9.01.2009 1:20
Сообщение #2


Профи
****

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

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


Точку с запятой убери после object smile.gif Он разве тебе не пишет, что хочет увидеть идентификаторы, а не ";" ?
(дальше не смотрела)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
NiMfetKa
сообщение 9.01.2009 1:51
Сообщение #3


Новичок
*

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

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


теперь 4 ошибка после
Код
procedure ooo.vvod;
var i,j:byte;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.01.2009 2:04
Сообщение #4


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

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

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


Цитата(NiMfetKa @ 9.01.2009 1:51) *
теперь 4 ошибка после
Код
procedure ooo.vvod;
var i,j:byte;
После объявления процедуры? Параметры вставь, как выше.

Ты лучше приводи сам текст ошибки тоже..


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


Профи
****

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

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


а вызываешь как ooo.vvod(5,6)? на так нужно ж указать программе, что у процедуры есть параметры.. В выложенном здесь коде у тебя это было..

Из замеченного далее:
есть проблема с выводом (тут тоже нужно указывать значения m и n) и с sum_m.. Указывать второй раз ее тип не нужно, опять же значение m и n откуда программе брать? и обрати внимание на i и j, точнее на то, какие они принимают значения и существуют ли элементы массивов с такими номерами..



Добавлено через 1 мин.
Да.. сумма должна считаться отдельно по каждому столбцу, неимеющему отрицательных, или на всю матрицу?

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


Новичок
*

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

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


ему не нра вар почему-то...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 9.01.2009 2:14
Сообщение #7


Профи
****

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

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


И еще:
0. в цикле while нужно не or а and и (j <= m) smile.gif
1. у тебя значения элементов массива всегда будут >=0..

Цитата
ему не нра вар почему-то...

покажи описательную часть.. ты что-то изменила относительно варианта из 1го поста?

Добавлено через 4 мин.
Цитата
сумма должна считаться отдельно по каждому столбцу, неимеющему отрицательных, или на всю матрицу?

к чему я это.. если второй вариант, то отдельные вызовы функции sum_m можно убрать и оставить только writeln'ы..

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


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

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

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


Цитата(NiMfetKa @ 9.01.2009 2:11) *
ему не нра вар почему-то...
Слушай, NiMfetKa, а какой у тя компилятор, если не секрет?


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


Профи
****

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

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


Ошибка 4 - duplicate identifier (сорри, не то скопировала, теперь исправила) - дублированны\двойной идентификатор.. [telepathy_on] проверь, не описала ли ты переменные i и j где-нибудь вне процедуры.. [telepathy_off]

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


Гость






Цитата
теперь 4 ошибка после
procedure ooo.vvod;
var i,j:byte;
Прав компилятор на все 100%... У тебя уже есть N, как член объекта, ты еще и как параметр метода хочешь использовать N? Нельзя. Давай другое имя либо параметру, либо члену класса...
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.01.2009 2:32
Сообщение #11


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

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

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


Цитата(volvo @ 9.01.2009 2:27) *
Прав компилятор на все 100%...
Ну, на 99%.. smile.gif
Turbo этого не требует.


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


Гость






Турбо как раз и требует, чтобы не было повторений в именах параметров... А вот FPC компилирует нормально...
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.01.2009 2:33
Сообщение #13


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

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

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


NiMfetKa, скажи, чем компилируешь!

Добавлено через 5 мин.
Цитата(volvo @ 9.01.2009 2:33) *

Турбо как раз и требует, чтобы не было повторений в именах параметров... А вот FPC компилирует нормально...

Хм, да, забавно...
А FP в моде TP - вроде, кушает..


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


Новичок
*

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

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


и что должно долучиться ? huh.gif huh.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.01.2009 2:40
Сообщение #15


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

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

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


Хотя в моде FP - не пропускает. Причем, раньше


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


Новичок
*

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

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


TURBO PASCAL 7.1
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.01.2009 2:41
Сообщение #17


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

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

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


Цитата(NiMfetKa @ 9.01.2009 2:39) *
и что должно долучиться ? huh.gif huh.gif

Хороший вопрос.. smile.gif
Думаю - прогресс!

Добавлено через 2 мин.
Мне кажется, параметры у Vvod можно просто убрать... smile.gif


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


Профи
****

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

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


Тоже проверила, fpc все равно, tp7.0 ругается..
А я решила проблему изгнанием n и m из членов объекта и принятием в ряды параметров процедур\функций smile.gif

В общем, у меня получились такие бредни (оставляю возможность не смотреть)))
Спойлер (Показать/Скрыть)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
NiMfetKa
сообщение 9.01.2009 2:59
Сообщение #19


Новичок
*

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

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


а где третий массив? и надо искать сумму строк...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 9.01.2009 3:07
Сообщение #20


Профи
****

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

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


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

к тому же:

пост #1
Цитата
Определить сумму элементов в тех столбцах

теперь
Цитата
и надо искать сумму строк...


в такой ситуации моя телепатия бессильна..

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

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

 



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