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

Mentor_Group , Classes, Constructors, Data, Methods - Exercise - Fundamentals of Programming (with C#)

9. Mentor Group, Classes, Constructors, Data, Methods

Здравейте , кодът ми дава грешка на 52-ри ред. Може ли малко помощ как да го преправя? "Object reference not sent to an instance of an object" за ред 52 ми казва конзолата. Не мога още много да ги схвана тия класове в комбинация с листове и не разбирам защо изобщо гърми.
https://pastebin.com/479NCnbb

 

Благодаря предварително !

Тагове:
1
Fundamentals of Programming (with C#) 15/05/2018 11:45:48
MartinPaunov avatar MartinPaunov 77 Точки

Здравей,

Проблема в конкретния случай идва от това, че се опитваш да добавиш елемент към пропърти на обекта student, където пропъртито ти е от тип List<string>, но никъде преди това този лист не е инициализиран. Казано иначе обекта student само знае, че има пропърти List<string>, но на практика няма такова.

Ако добавиш на горния ред инициализацията на пропъртито, кода ще върви.

Пример:

                var comments = clientInfo[1];
                student.comments = new List<string>();
                student.comments.Add(comments);

Както казах така кода ще работи и програмта няма да ти дава Object reference exception.

Горното се отнася само за конкретния проблем посочен от теб. В програмата ти има и други проблеми, но предполагам ще ти е по-полезно да ги откриеш и оправиш сама. Ако не успееш пиши коментар отново с конкретен проблем.

Поздрави

0
DidiBidi avatar DidiBidi 1 Точки

Благодаря за бързия отговор, тъкмо ми светна крушката, че не съм го инициализирала тоя лист и ти го потвърди. Сега пък съм outside the bounds of the array. Не ми хрумва засега, но ще помисля още малко и тогава ще тегля следващия жокер. Благодаря още веднъж !

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

  var comments = clientInfo[1];

това не трябва ли да е clientinfo[0]?

а и какво правим ако самия comments e null? доколкото си спомням това е съвсем възможно или пък да имаш няколко коментара не само един? подадени?

иначе проблема с листовете в класа се решава в консторуктора и няма нужда класа да се създава предварително... и тези 2 while(true)..и едно и също име на променливи ...макар и в различни scopes

0
15/05/2018 12:29:15
DidiBidi avatar DidiBidi 1 Точки

Инпутът е това :
nakov 22/08/2016,20/08/2016
simeon10 22/08/2016
end of dates
nakov-Excellent algorithmetic
thinking.
Gesh4o-Total noob.
end of comments

Аутпут:
nakov
Comments:
- Excellent algorithmetic
thinking.
Dates attended:
-- 20/08/2016
-- 22/08/2016
simeon10
Comments:
Dates attended:
-- 22/08/2016

nakov би следвало да е input[0], а коментарът да е input [1]. На мен ми трябва коментарът. Само,че сега виждам, че "thinking" e на нов ред. Сякаш нямаше в условието да се подава повече от един коментар, но пък ако няма коментар трябваше пак да сложа "Comments:". Ама първо искам да го накарам да ми запише правилно коментарите, другото ще го мисля после. /Сепараторът приема ли "/n" ?

0
MartinPaunov avatar MartinPaunov 77 Точки

Всъщност thinking само изглежда, че е на нов ред зареди форматирането в документа, ако копираш входа в един notepad ще видиш ясно, че цялото - Excellent аlgorithmetic thinking. е на един ред.

0
15/05/2018 12:54:23
DidiBidi avatar DidiBidi 1 Точки

Ами не, пак е на нов ред. И дебъгера като пусна пак ми излиза отделно от стринга "Excellent algorithmetic". Ами ще помоля за помощ наистина, че има още 100 задачи , а се пъна на тази цяла сутрин. 

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

ще си поиграя малко на dotnetfiddle и кача код след малко.

https://pastebin.com/Y6YcibTU ето минават само нулевите но никъде не гърми,честно казано като се прибера след работа мога да го до оправя,мисля че  проблема е в print метода,не е болка за умиране но dotnetfiddle ми къса нервите.А и по навик го писах като на .net core може и това да е проблема но определено в момента гърми print метода.Копирах направо твоя за по-лесно и малко го модифицирах само.

Сега като чета условието ако проверяват колко студента си запазил и това съм изгърмял но това са козметични неща  с няколко опита ще се оправят.

 https://pastebin.com/Y6YcibTU  100/100 оправих го но се наложи да сменя на речник нещо ми гърмеше с листа,а и като изгубих един тон време да проверявам глупости които не искат.. не ми се занимаваше да го оправя и него.

0
15/05/2018 22:00:59
MartinPaunov avatar MartinPaunov 77 Точки

Здравей,

Поствам едно примерно решение като съм използвал речник от имената на студентите, като ключ към самите обекти от тип Student, като стойност.

Между другото тази задача може да мине и само с използването на List<string> като колекция в която да се пазят датите, не е необходимо да е изрично List<DateTime>, но все пак някъде мернах в условието или в разясненията, че е дадено така.

Поздрави

0
ValenNEW avatar ValenNEW 51 Точки

Здравей,

Виж и това решение. Малко съм преправил логиката.

Поздрави!

https://pastebin.com/dSGPd56c

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

по- безумни неща не бях гледал скоро,заместване на input string и след това break.....и  for цикли и проверки на елемента така.. но това с подмяната на стринга ме уби.. и как настоявате всички с тоя while (true)...

-1
DidiBidi avatar DidiBidi 1 Точки

ValenNEW, провери ли си решението в judge? Дава 0/100 с 3 пъти лимит на памет. 
На Мартин решението е една идея по-дълго, но ми е по-четимо, с оглед на това, че лесно е обатачвам на този етап. Много е ускорен курсът, взехме заедно методи и класове, два дни по-рано взехме речници, на упражнението решихме една задача всичко на всичко и положението е трагично. Много благодаря на всички за съдействието !

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