Loading...
Redeemer avatar Redeemer 1 Точки

[C++ Programming] Exam Prep - Matrix

Привет хора, цял ден се занимавам с тази задача и почти до никъде не успявам да я докарам. Пробвах доста неща.

Ето кода https://pastebin.com/q0REEnia, ако някой има идея къде греша да пише.

 

Поздрави.

Тагове:
0
C++ Programming 27/05/2017 12:38:04
Wanker avatar Wanker 15 Точки
Best Answer

Здравей,

Жоро е качил авторските решения на задачите в http://tinyurl.com/cpp-softuni-shared. Ако имаш проблеми, първо би трябвало да погледнеш там.

Не съм ти гледал кода, но ето какво ми помогна на мен да реша задачата без да гледам авторското решение:

  • Разучи main-а какво прави. Аз например run-вах всяка тест фунцкия като закоментирах останалите.
  • Дебъгвай. Слагай breakpoints и влизай във функциите, които си написал, да видиш какво не работи както трябва. 
  • Напиши си помощна функция за принтиране на expected вектора и викай нея и toString()-а на actual матрицата (assert-ва срещу expected и actual) на ключови места в кода, за да видиш визуално с какви стойности са.

Надявам се съм помогнал.

Поздрави.

0
27/05/2017 00:28:46
georgi.stef.georgiev avatar georgi.stef.georgiev 921 Точки

Здравей,

За съжаление нямам много време за детайлен преглед, но ето какво забелязах набързо:

1. Най-вероятно това, което ти чупи нещата (в copyData() ):

for(int j = 0; j < sourceColumns && i < destColumns; j++)

Аз няколко пъти съм ви казвал, като имате вложени цикли да не ползвате i и j за контролни променливи, щото много си приличат една на друга... Ако ги беше кръстил row и col щеше да е доста по-лесно да го забележиш. Не съм сигурен, че това ти създава проблеми, но ми изглежда че би ти създало.

2. Не триеш данните консистентно. На някои места delete[]-ваш всеки един ред с for цикъл, на други места delete[] ваш само this->data. Правилното е първо да пуснеш цикъла, след това да delete-неш и data. Затова съм ви сложил free метода, за да го напишете това нещо веднъж и после да си викате този метод - така си намаляте шанса за грешки.

Иначе на колегата Wanker (още не знам защо си се писал така, брат, ама май и не искам да знам :D) съветите са доста добри, пробвай ги и тях :)

Поздрави,

Жоро

 

P.S.: Не губи твърде много време с тази задача, най-добре прегледай и изреши изпита от 21-ви, той е по-близък до това, което ще бъде дадено на 28-ми.

0
27/05/2017 01:04:47
Wanker avatar Wanker 15 Точки

Не питай..  цъкане на CS.. аз 7-ми клас и избиране на як nickname. :D 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.