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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Хочу понять ООП. есть задача, что нужно делать и как правильно нужно делать
сообщение
Сообщение #1


Новичок
*

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

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


Сама задача выглядит вот так:
Дан файл "Багаж пассажиров", который содержит данные о количестве вещей и их общем весе для каждого пассажира. Выделить пассажиров, данные которых превышают средние показатели файла.
Объясните пожалуста... код мне впринципе ненужен!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

Только при чем здесь ООП? Оно только мешать будет, не того уровня задача, чтоб решать Объектно-Ориентированно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


у меня такое задание в методичке по ООП)) а это нужно что б информация о каждом багаже хранилась в Массиве объектов?

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


Гость






У тебя по условию информация в файле хранится, а не в массиве. А уж куда ты ее прочитаешь - дело твое...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


А считать с помощью метода который будет в объекте?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Опять же, смотря что за объект... Можно сделать объект - Пассажир, который будет хранить только информацию об одном пассажире + массив таких объектов, тогда можно читать файл и не из метода, а простой функцией.

Можно сделать Массив в виде объекта, тогда читать файл можно будет из метода этого объекта.

Ты определись, что именно ты будешь делать, а потом вопросы задавай.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


Вот если я начал где то так, что б лучше всего делать дальеш?
   
uses crt;
type
OO = object
kolv : byte;
oves : integer;

// constructor init;
procedure sves;
procedure openbogag;
end;
{------------------------------------}
procedure OO.sves;
Begin
writeln('Сдесь будет считаться общий вес');
End;
{------------------------------------}
procedure oo.openbogag;
var f : text;
i,b : byte;
Begin
assign(f,'bagag.txt');
reset(f);
while not eof (f) do
begin
read(f,b);
writeln(b);
end;
close(f);
End;
{------------------------------------}
var
BP : OO;
BEGIN
clrscr;
BP.sves;
BP.openbogag;
readln;

END.





Добавлено через 1 мин.
Только оно выдает ошибку и я непойму что оно хочет.

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


Гость






Цитата
Только оно выдает ошибку и я непойму что оно хочет.
Какую ошибку оно выдает? Когда? На этапе компиляции ошибки быть не должно, а уж при запуске - я не знаю, что там у тебя творится, тебе виднее. Ты видишь свой монитор, а не я...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


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


Гуру
*****

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

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


Цитата(noskovgleb @ 16.12.2009 22:33) *

С памятью ошибка

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


Новичок
*

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

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


Неповерите... ошибки нет...
Так вот... правильно я начал делать? Общий вес вещей всех пассажиров или общий вес вещей одного пассажира? вот непонятно...

Добавлено через 2 мин.
Наверно всего скорей вес вещей именно одного человека...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

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

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


вот сделал так. Хочу спросить как можно процедуре sves дать массив мой?



Добавлено через 5 мин.
   
uses crt;
type
OO = object
kolv : byte;
oves : integer;

// constructor init;
procedure sves;
procedure openbogag;
procedure createmassiv;
end;
{------------------------------------}
procedure OO.sves;
Begin
writeln('Сдесь будет считаться общий вес');
End;
{------------------------------------}
procedure oo.openbogag;
var f : text;
i : byte;
b : byte;
Begin
i:=0;
assign(f,'bagag.txt');
reset(f);
while not eof (f) do
begin
i:=i+1;
read(f,b);
write(b:2,' ');
if i=2 then
begin
writeln;
i:=0;
end;
end;
close(f);
End;
{------------------------------------}
procedure oo.createmassiv;
var j : integer;
i : integer;
f : text;
b : byte;
m : array[1..5] of integer;
Begin
writeln;
i:=0;
j:=1;
assign(f,'bagag.txt');
reset(f);
while not eof (f) do
begin
i:=i+1;
read(f,b);
// write(b:2,' ');
if i=2 then
begin
m[j]:=b;
writeln(m[j]);
inc(j);
i:=0;
end;
end;
close(f);
End;
{------------------------------------}
var
BP : OO;
m : array[1..5] of integer;
BEGIN
clrscr;
BP.sves;
BP.openbogag;
BP.createmassiv;
readln;

END.




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


Гость






Никак... У тебя данные читаются в ЛОКАЛЬНЫЙ массив, описанный в методе createmassiv. Чтобы получить к нему доступ из любого другого метода этого объекта - просто перенеси его описание:
type
OO = object
kolv : byte;
oves : integer;
// constructor init;
procedure sves;
procedure openbogag;
procedure createmassiv;

private // пусть будет приватным членом
m : array[1..5] of integer;
end;
, а ВСЕ остальные описания массива M убери...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

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

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


ии... у меня получилось что то такое...

uses crt;
type
OO = object
kolv : byte;
oves : integer;

// constructor init;
procedure sves;
procedure openbogag;
procedure createmassiv;
private
m : array[1..5] of integer;
end;
{------------------------------------}
procedure OO.sves;
var
i :byte;
summa:integer;
j :byte;
Begin
j:=0;
writeln('Сдесь будем определять кто взял большой вес одежды) ');
writeln;
for i:=1 to 5 do
begin
summa:=summa+m[i];
inc(j);
end;
for i:=1 to 5 do
if m[i] > (summa/j)
then writeln(i,'-й пассажир превысил средний вес вещей.');

End;
{------------------------------------}
procedure oo.openbogag;
var f : text;
i : byte;
b : byte;
Begin
i:=0;
assign(f,'bagag.txt');
reset(f);
while not eof (f) do
begin
i:=i+1;
read(f,b);
write(b:2,' ');
if i=2 then
begin
writeln;
i:=0;
end;
end;
close(f);
End;
{------------------------------------}
procedure oo.createmassiv;
var j : integer;
i : integer;
f : text;
b : byte;
Begin
writeln;
i:=0;
j:=1;
assign(f,'bagag.txt');
reset(f);
while not eof (f) do
begin
i:=i+1;
read(f,b);
// write(b:2,' ');
if i=2 then
begin
m[j]:=b;
writeln(m[j]);
inc(j);
i:=0;
end;
end;
close(f);
End;
{------------------------------------}
var
BP : OO;
BEGIN
clrscr;
BP.openbogag;
BP.createmassiv;
BP.sves;
readln;

END.

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


Новичок
*

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

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


А как бы тут можно добавить наследование и полиморфизм?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Во первых, "Это" надо сначала причесать, чтоб оно хотя бы без наследования и полиморфизма на что-то было похоже... А во-вторых, ну пойми же ты: не нужно на такой простой задаче ни полиморфности, ни дерева наследования, ни вообще ООП. Она элементарно решатся другими средствами, и решение получается ПРОЩЕ, чем с Объектами. Это - главный признак того, надо тебе ООП или нет. Ну ладно, допустим, задание такое. Ну хорошо, сделал "ООП" (будем считать наличие слова Object в программе достаточным для того, чтоб она стала Объектно-Ориентированной), остановись на этом. Ты уже и так кашу заварил, потом долго расхлебывать будешь (если конечно, тебе не сдать и забыть) - надо ж будет научиться писать программы с ООП правильно, а не просто чтоб было слово Object...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






На всякий случай, чтоб было понятнее, что такое наследование и полиморфизм -

вот решение твоей задачи (Показать/Скрыть)


А теперь скажи, оно тебе надо, на простейшем примере так извращаться?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

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

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


Задача была в том что бы реализовать эту прогу сначала просто с объектами, потом с наследованием а потом еще и с полиморфизмом...

Добавлено через 1 мин.
Да преподаватель такой попался ничего нехочет слушать, вот то что в методичке есть то и делай...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

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

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


вот вообщем получилось зделать уже и наследование, осталось зделать полиморфизм.... и каким образом его втыкнуть? и что он должен делать)?
 
program laba13;
type
tm = array[1..5] of integer;
OO = object
m : tm; { object }
kolv : byte; { count of things }
oves : integer; { weight of things }
constructor init(var im:tm);
procedure openbogazh; { open list of thing }
procedure createmassiv(var cm:tm);{ mas of things }
end;
tves = object(OO)
procedure sves(var sm:tm); { find max weight }
end;
{---------------------------------------------------------------}
constructor OO.init;
begin
im:=m;
end;
{---------------------------------------------------------------}


{---------------------------------------------------------------}
procedure tves.sves(var sm:tm);
var
i :byte;
summa:integer;
j :byte;
Begin
j:=0;
writeln;
writeln('3десь будем определять кто взял большой вес одежды) ');
writeln;
for i:=1 to 5 do
begin
summa:=summa+sm[i];
inc(j);
end;
for i:=1 to 5 do
if sm[i] > (summa/j)
then writeln(i,'-й пассажир превысил средний вес вещей.');

End;
{---------------------------------------------------------------}
procedure OO.openbogazh;
var f : text;
i : byte;
b : byte;
Begin
i:=0;
assign(f,'bagag.txt');
reset(f);
while not eof (f) do
begin
i:=i+1;
read(f,b);
write(b:2,' ');
if i=2 then
begin
writeln;
i:=0;
end;
end;
close(f);
End;
{---------------------------------------------------------------}
procedure oo.createmassiv(var cm:tm);
var j : integer;
i : integer;
f : text;
b : byte;
y : byte;
xm: tm;
Begin
writeln;
i:=0;
j:=1;
y:=0;
assign(f,'bagag.txt');
reset(f);
while not eof (f) do
begin
i:=i+1;
read(f,b);
if i=2 then
begin
xm[j]:=b;
inc(y);
writeln('ves veshei ',y,
'-ogo passagira ',xm[j],' kg');
cm[y]:=xm[j];
inc(j);
i:=0;
end;
end;
close(f);
End;
(*-------------------- --------------*)
var
BP : OO;
ves:tves;
BEGIN
writeln('--------------------------------------------------');
BP.openbogazh;
BP.createmassiv(BP.m);
ves.sves(BP.m);
readln;
END.




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


Гость






Давай начнем с малого: Что такое вообще "полиморфизм", ты понимаешь?
 К началу страницы 
+ Ответить 

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

 





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