КИТА unofficial

Учебный отдел => АСУ => Тема начата: Артем от Март 04, 2008, 05:02:27



Название: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 04, 2008, 05:02:27
Частенько в лабораторных работах встречаеться ДВОЯКОЕ условие, то бишь, ПОНИМАЙ КАК ХОЧЕШЬ !!! И кажый преподаватель ТРАКТУЕТ условие ПО-СВОЕМУ !!! Надеюсь, что эта тема все таки прольет свет на ИСТИННОЕ условие наших лаб !!!


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: transformator от Март 04, 2008, 05:06:21
artem90, ну хотя бы пример привел бы...Вынес так сказать на суд общественности :)

Да, и еще: надо правила форума почитать;) Не стоит капсить в названиях тем.


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 04, 2008, 05:25:26
ПРИМЕР: неделю назад я сдавал 1-ый выч по ООП. В условие выча было 2 структуры составления программы (для четных и для нечетных вариантов).

Для НЕчетных вариантов:

  Нужно было сделать один класс "Матрица", свойствами которого должны быть: размерность матрицы, одномерный массив - вектор, размерность вектора.

Для четных вариантов:

  Нужно было сделать 2 класса. Отдельно класс "Матрица" и отдельно "Вектор".  В принципе ну НЕМНОГО сложнее и все.
  НО ПРЕПОДАВАТЕЛЬ который у нас принимал, трактовал условие для ЧЕТНЫХ вариантов иначе: объект класса "Вектор" должен быть свойством объекта класса "Матрица". То есть получаеться "класс в классе". И где после этого справедливость ???????????

Задания у четных вариантов на порядок сложнее чем у НЕчетных !!!!!!

Но дело еще в том, что составлял задание другой преподаватель, который скорее всего имел ввиду просто 2 отдельных класса, а не "класс в классе".  Вот такая неразбериха !!! 


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: zer_owlet от Март 04, 2008, 05:46:14
Ну на сколько я понимаю у вектора должны были быть свои методы....
и в этом случае это действительно класс в классе.... не вижу что ж тут сложного то.... и это логично, т.к. получается что матрица -- это массив векторов с указанием размера вектора и количества векторов... и у каждого вектора есть свои методы... все вполне логично и понятно вроде как...

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

ЗЫ: но тема создана правильно и я ее полностью поддерживаю. т.к. она позволит разобрать все обиды и не мучатсья от того что "а меня завалили несправедливо"

ЗЗЫ: была и у меня такая ситуевина -- сдавал лабу 4 раза и каждый раз Фонотов находил такие входные данные чтобы прога не сработала (нужно было проверить правильность мат выражения и адекватность расставленных скобок)... в результате таки Поляков сказал что и так все нормально и что новые требования не для моего уровня... но мне было интересно поразбираться. правда, потом этот долбаный разбор мат выражений (который делал Лазарус, например) меня не интересовал... было просто не интересно ковыряться... но это так... лирика...


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: LazarusLong от Март 04, 2008, 09:44:13

ПРИМЕР: неделю назад я сдавал 1-ый выч по ООП. В условие выча было 2 структуры составления программы (для четных и для нечетных вариантов).

Для НЕчетных вариантов:

  Нужно было сделать один класс "Матрица", свойствами которого должны быть: размерность матрицы, одномерный массив - вектор, размерность вектора.

Для четных вариантов:

  Нужно было сделать 2 класса. Отдельно класс "Матрица" и отдельно "Вектор".  В принципе ну НЕМНОГО сложнее и все.
  НО ПРЕПОДАВАТЕЛЬ который у нас принимал, трактовал условие для ЧЕТНЫХ вариантов иначе: объект класса "Вектор" должен быть свойством объекта класса "Матрица". То есть получаеться "класс в классе". И где после этого справедливость

Я бы попросил задание в студию. Полный текст - дословно. А то мы пока судим о задании только со слов студента. Может он сам его не правильно понял.



Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 04, 2008, 10:25:03
Я бы попросил задание в студию. Полный текст - дословно. А то мы пока судим о задании только со слов студента. Может он сам его не правильно понял.

Дело в том, что этот выч я уже сдал, а его условие привел только в качестве примера. Но я уже убедился, что я сам не правильно его понял. В данный момент меня больше интересует следующий вопрос, он даже больше не по условию, а по реализации. Но условие напишу, чтобы был понятен мой вопрос:

Требуеться создать класс "Вектор", "Матрица", и класс "Обработчик".

При создании вектора необходимо выполнить следующие требования:

- определить конструктор для создания вектора заданного размера;
- определить метод вывода на экран;
- данные вектора должны размещаться в динамической памяти;
- обеспечить корректное освобождение памяти;
- все поля вектора должны быть закрытыми, и доступ к данным должен осуществляться только с   помощью селекторов и модификаторов;

При создании матрицы необходимо выполнить требования:

-определить конструктор для создания матрицы заданной размерности;
-обеспечить корректное освобождение памяти в деструкторе;
-определить метод вывода матрицы на экран;
-ДАННЫЕ МАТРИЦЫ ДОЛЖНЫ ХРАНИТЬСЯ КАК ДИНАМИЧЕСКИЙ МАССИВ ВЕКТОРОВ С ЗАКРЫТЫМ ДОСТУПОМ, ПРИ ЭТОМ РАЗМЕРНОСТЬ МАССИВА И РАЗМЕРНОСТЬ ВЕКТОРОВ ОПРЕДЕЛЯЕТСЯ ТРЕБУЕМОЙ РАЗМЕРНОСТЬЮ МАТРИЦЫ;
- доступ к данным векторов, из кот-ых сформирована матрица, должен быть выполнен внутренней обработкой информации только с помощью селекторов и модификаторов класса "Вектор"

В классе-обработчике требуеться определить:
 
- конструктор, деструктор;
- поле для хранения указателя на исходную матрицу;
- метод заполнения матрицы по формуле;
- метод обработки матрицы;
- если результат - новая матрица млм вектор, то класс--обработчик должен содержать закрытое поле-указатель на матрицу-результат, и соответственно, иметь селектор доступа к ней;


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: LazarusLong от Март 04, 2008, 10:46:32
Ну и что тут не понятного? Все предельно ясно и четко изложено. Хоть бери и по пунктам пиши программу. ???


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 04, 2008, 10:47:34
Когда нам объясняли условие этой лабы, то сделали акцент на то, что в класее "Вектор" должно быть 2 конструктора: по умолчанию и с параметром. Причем конструктор по умолчанию должен ВЫДЕЛЯТЬ ПАМЯТЬ ДЛЯ 1-МЕРНОГО ВЕКТОРА ПОД 0 ЭЛЕМЕНТОВ. А уже потом с помощью конструктора с параметром выделить память для нужного кол-ва элементов.

МОЙ ВОПРОС:  если мы сразу создадим объект класса "Вектор"  конструктором по умолчанию и выделим память под 0 элементов, то потом что нам нужно ПЕРЕСОЗДАВАТЬ объект с помощью  конструктора с параметром, чтобы установить нужную размерность???? или как???? 


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: LazarusLong от Март 04, 2008, 10:54:59
Фактически, каждый конструктор который ты создаешь описывает способ создания объекта. Используй каждый конструктор по необходимости. Но в любом случае это мнэ... странно создавать объект сперва конструктором по умолчанию, а затем пересоздавать его же параметризованным конструктором. Сразу создавай объект нужным конструктором.


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: EvilMax от Март 04, 2008, 10:55:08
Читаю условие и в упор не вижу конструктора по умолчанию, переотведения памяти и т.п.

-ДАННЫЕ МАТРИЦЫ ДОЛЖНЫ ХРАНИТЬСЯ КАК ДИНАМИЧЕСКИЙ МАССИВ ВЕКТОРОВ С ЗАКРЫТЫМ ДОСТУПОМ, ПРИ ЭТОМ РАЗМЕРНОСТЬ МАССИВА И РАЗМЕРНОСТЬ ВЕКТОРОВ ОПРЕДЕЛЯЕТСЯ ТРЕБУЕМОЙ РАЗМЕРНОСТЬЮ МАТРИЦЫ;

Код: (cpp)
class Vector {
  int * data;
  int size;
public:
  Vector(int s)
 { //Create vector of size 's' here
 }
 // Think by yourself what else...
};

class Matrix {
  Vector ** rows;
  int m, n;
public:
  Matrix(int m, int n)
  {//Create matrix of size m x n here
  }
 // Think by yourself what else...
};


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 04, 2008, 10:57:03

Читаю условие и в упор не вижу конструктора по умолчанию, переотведения памяти и т.п.
Нам сказали что в условии этого нет, и поэтому передали на словах


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: EvilMax от Март 04, 2008, 11:03:22
Жаль.. Ну что ж, тогда придется делать метод, нечто вроде SetSize, в нем делать новую матрицу/вектор (точно так же как в конструкторе), копировать туда старые данные и старую память освобождать. Итого: повторение кода конструктора, но c учетом новой переменной-указателя, копирование данных в цикле и освобождение старой памяти. ИМХО, не страшно. Главное - внимательно следить за работой с динамической памятью.


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 04, 2008, 11:07:10
Возможно это и не страшно, но нам это еще не дали на лекции по моему, и не сильно ли это сложновато для 2-ой лабы????

(Отправлено в: 04 Марта 2008, 22:06:32)

EvilMax - Максим Владимирович, а это случайно не вы???


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: EvilMax от Март 04, 2008, 11:10:48
но нам это еще не дали на лекции по моему
То, что у класса может быть поле любого типа? В т.ч. и типа "класс"? Дали-дали ;) Причём давненько. Уже лекции далеко вперёд ушли. Еще 1-2 и можно 3-ю выдавать ;)

Цитата: artem90
Максим Владимирович, а это случайно не вы???
Нет, не я, конечно  :D


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: KyDECHuK от Март 04, 2008, 11:14:12
Off-Topic - помечено автором как "не соответствует обсуждаемой теме"
EvilMax - Максим Владимирович, а это случайно не вы???
Случайно не он! :D
artem90 - а ты случайно не студент первого-второго курса?

Возможно это и не страшно, но нам это еще не дали на лекции по моему, и не сильно ли это сложновато для 2-ой лабы????
Рассинхрон между лекциями и практическими занятиями будет всегда.
То, что какой-то материал не давали на лекции, не повод бросать лабу - это на будущее :)


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 04, 2008, 11:16:46
EvilMax, Хорошо, а как Вы думаете :D, что все таки хотел от нас М.В :D. чтобы мы делали все это:

"повторение кода конструктора, но c учетом новой переменной-указателя, копирование данных в цикле и освобождение старой памяти. "

Или все таки один конструктор создать и сразу выделить память под нужное кол-во???


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: EvilMax от Март 04, 2008, 11:21:11
Я хотел от вас ровно то, что написано в условии. Без переотведения памяти. Оно выброшено намеренно, чтобы снизить объём работы по Л/р №2. Как показала практика, несмотря на ранее изученный  материал по работе с динамической памятью, при изменении размера ломают очень много дров, и часто из-за невнимательности. Но задача курса - научить вас ООП а не просто усилить знания по работе с указателями - это еще успеете сделать, и не раз.

К сожалению, я положился только на письменный вариант задания, и не предупредил некоторых преподавателей. Завтра я этот вопрос решу.


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 04, 2008, 11:22:15
EvilMax, Спасибо!!!!!


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: EvilMax от Март 04, 2008, 11:25:25
Пока еще не за что.


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 04, 2008, 11:30:44
EvilMax, Вы не могли бы примерчик на вот это: МАТРИЦА ДОЛЖНА ХРАНИТЬСЯ КАК ДИНАМИЧЕСКИЙ МАССИВ ВЕКТОРОВ . Буду очень благодарен !!!


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: EvilMax от Март 04, 2008, 11:38:56
Я буквально полчаса назад в этой теме примерчик писал, см. выше. Без подробностей, естесственно, лишь основную идею. Подробности - с вас ;) 

Поповоду двойного указателя - не опечатка. Каждую строку придется создавать отдельно, так как нельзя создать массив объектов, используя конструктор с параметрами.


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 04, 2008, 11:41:04
EvilMax Спасибо за помощь, спокойной ночи !


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: zer_owlet от Март 04, 2008, 11:45:47
примерчик на вот это: МАТРИЦА ДОЛЖНА ХРАНИТЬСЯ КАК ДИНАМИЧЕСКИЙ МАССИВ ВЕКТОРОВ
а думать кто за тебя будет? ? ? ? меньше бухай и больше читай!!! гуглить блин тебя шеф еще не учил? ? ?


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Март 05, 2008, 05:05:32
Мне нужно создать динамический массив объектов, и сделать это нужно с помощью конструктора с параметром. Но ведь в С++ нельзя создать динамический массив объектов с помощью конструктора с праметорм. Как быть, может есть другой способ??? Помогите пожалуста, кто знает !!!


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: zer_owlet от Март 05, 2008, 08:38:16
Off-Topic - помечено автором как "не соответствует обсуждаемой теме"
а давайте все же писать вопросы по крестам в другой теме. имхо, это не относится к непониманию условий лабораторных...


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: LazarusLong от Апрель 30, 2008, 09:40:29
Обсуждение перегрузки операторов переехало в раздел Программирование (http://kita.org.ua/index.php/board,20.0.html)


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Сис_Одмин от Май 12, 2008, 09:45:53
(B<<(A<<(C & (~B)))
М3=М1<<М2 - циклический сдвиг строк двух матриц вниз на 1 позицию, М3 = результату (двойная матрица)
.....
далее все понятно, не понятно что такое двонйная матрица, с какой стороны соеденять матрицы ?

(Отправлено в: 11 Мая 2008, 13:12:50)

и еще сразу вопрос, немного не по непонятию условия, но что такое логическое умножение двух матриц ??
нагуглил: Логическое умножение, или пересечение, или конъюнкция, выполняется над пометками матриц для выделения общей части пометок и соответствующих этой части подматриц, которые даль­ше можно суммировать, накапливая таким образом информацию. Но что это значит так и не понял


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: zer_owlet от Май 13, 2008, 01:19:16

но что такое логическое умножение двух матриц

случаем, не логическое И это? в вики этого сайта найти матрицу для логичекого И можно, если не помнишь )

мож не прав, но мож $k[$i][$j] = $a[$i][$j] & $b[$i][$j];


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Kenny от Июль 07, 2008, 05:42:55
Была тема о непонятных заданиях,но ее не нашел. Так вот…
Что означает >= в присвоение A (i j)
(http://i063.radikal.ru/0807/38/b96d7fdfda2e.jpg)


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Артем от Июль 07, 2008, 10:31:10
Kenny, а ты разобрался что вообще здесь означают символы  ^ и  V ?
Ну ^ например можно трактовать как исключающее ИЛИ или инверсию, или же как простое возведение в степень. Но запись этого символа в нижнем регистре все равно несколько смущает, поэтому и спрашиваю. А на счет V вообще догадок никаких. Может когда с этими символами все станет понятно, то и с >= тож что то прояснится.


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Kenny от Июль 07, 2008, 11:06:32
^ и V это конъюнкция и дизъюнкция, дискретная математика вам еще предстоит ;) Вообщем распределив "это" по мозгам 3 форумов, таки разобрались, это :
«Имелось ввиду, что на значения элементов матрицы накладывается это условие.
Когда ты будешь заполнять матрицу значениями, записывай в нее только те значения, которые удовлетворяют сабж.»


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: LazarusLong от Июль 08, 2008, 12:09:03
Результатом операции >= является "истина" либо "ложь". Если по условию матрица бинарная - в ячейку записывается 1 если условие выполняется и 0 в противном случае. ИМХО.


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Kenny от Июль 08, 2008, 12:51:20
вот, этот вариант еще ближе к истине.


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: LazarusLong от Июль 08, 2008, 12:54:03
Если по условию матрица бинарная - то это 100% то что я сказал. И к бабке не ходи. Иначе - только у преподавателя нужно узнавать


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Kenny от Сентябрь 23, 2008, 01:07:00
лаба работы со структурами. Что от меня хотят:
Функции,возвращающие значения полей. Это как?
PS длины полей? функция делающая поля пустыми?


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: vimmax от Сентябрь 23, 2008, 08:23:00
Kenny может что-то похожее на это:

Код:
class tempA
{
private:
int flag;
public:
int getFlag() {return flag; }
void setFlag(int i) {flag = i; }
}

Правда это для класса, но для структуры тоже можно такое сделать.
Только смысла нету, т.к. поля структуры всегда public.


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: ermolina от Июнь 13, 2009, 12:24:53
Такое задание: Подсчитать число значащих единиц каждого элемента массива А.Из полученных чисел сформировать массив и найти количество четных элементов в этом массиве. Ввод выполнить с использованием функции 08h, вывод с использованием функции 02h.Вопрос: подскажите, пожалуйста, что представляет собой "число значащих единиц" и как его посчитать? :o


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: Магнетон Бора от Июль 15, 2009, 01:20:46
Kenny, а ты разобрался что вообще здесь означают символы  ^ и  V ?
Ну ^ например можно трактовать как исключающее ИЛИ или инверсию, или же как простое возведение в степень. Но запись этого символа в нижнем регистре все равно несколько смущает, поэтому и спрашиваю. А на счет V вообще догадок никаких. Может когда с этими символами все станет понятно, то и с >= тож что то прояснится.

Ну не гоните... V - скорее всего дизъюнкция, ^ скорее всего имелось в виду исключающее ИЛИ ... позновато, но не удержался :)


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: SPL от Сентябрь 24, 2009, 08:29:20
Лаба по структурам данных.
"Циклически сдвинуть "внешний слой" элементов матрицы на одну позицию влево".
wtf? ???


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: tos от Сентябрь 24, 2009, 08:33:45
ну наверно говорится про элементы первой и последней строки и первого и последнего столбца

х х х х х
х о о о х
х о о о х
х х х х х


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: SPL от Сентябрь 24, 2009, 08:51:29
Хм, вроде похоже. Будем надеяться что это так :)
Жаль, что Lazaruslong'a нет онлайн..


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: LazarusLong от Сентябрь 24, 2009, 09:11:15
Да, это так. tos правильно ответил :)


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: SPL от Сентябрь 24, 2009, 11:33:56
И, как я понял, должно получиться как-то так:
 х х х х x
 о о о х x
 о о о х x
 х х х х x


Название: Re: Не понятно условие лабы? Тебе сюда
Отправлено: LazarusLong от Сентябрь 25, 2009, 08:11:29
Нет. Должно получится так:

До преобразования

0 1 2 3 4
5 6 7 8 9
0 1 2 3 4
5 6 7 8 9

После преобразования

1 2 3 4 9
0 6 7 8 4
5 1 2 3 9
0 5 6 7 8