Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Antoniya86 avatar Antoniya86 0 Точки

Graduation pt.3* C#

Здравейте!

Предварително благодаря за всяка помощ/идея.

Условие:

Напишете програма, която чете информация за много ученици и изчислява средната оценка за всеки ученик,
докато не се получи командата "END". За всеки ученик първият ред от конзолата ще бъде неговото име, а
всеки следващ неговите годишни оценки. Ученикът преминава в следващия клас, ако годишната му оценка е
по-голяма или равна на 4.00. Ако ученикът бъде скъсан повече от един път бива изключен и четенето на
информация за него приключва, като се отпечатва името на ученика и в кой клас бива изключен. При
успешно завършване на 12-ти клас да се отпечата неговата средна оценка за цялостното му обучение, като се
взимат само успешните оценки. За успешни оценки се считат всички оценки, които са по-големи или равни
на 4.00. Стойността трябва да бъде форматирана до втория знак след десетичната запетая.

Мое решение :

https://pastebin.com/988Tra1w

Проверка с дебъг и примерния input : уж всичко си върви

Мнение на judge:

50/100

1 до 4 тест - верни, 5, 6 и 7 - грешни, 8 - верен, 9 и 10 - грешни;

 

 

EDIT: Намерих си грешка. Не се нулираха notPassingYears. Поправено е. Продължава да дава 50/100;

 

Тагове:
0
Programming Basics 16/07/2018 10:01:12
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки
Best Answer

https://pastebin.com/fshgxFCm така много е коварно условието не знам дали ще се справите. Ето го минава 100/100

значи за всеки ученик ще ви дадат достатъчно оценки за да завърши или да го скъсат. Сега особенноста идва че ако получите една ниска оценка и не намалите i-- поредното завъртане на цикъла ще изгърмите в един момент,защото реално ако тои получи една оценка ниска и после няма друга трябва да завърши а с for цикъл до 12 завъртания ще излезете извън цикъла така. Другото е че аз малко си обърках и проверката с bool. И реално какво се случва, при първата ниска оценка влиза и си променя bool на false ако влезе 2 път вече чупи целия цикъл и изписва какво е станало. накрая проверката е за shoolyears-1=12 защото почваме от 1 клас и ако завъртя до 12 и има  поне едно повтаряне това ще е 13,та ако имам 13-1 години = 12 клас значи е завършил и влизаме там ако не значи се е прецакал. Сорри малко се забавих но докато се усетя че първоналчалната ми проверка за bool ми чупи кода при вариант  може след това да завърши ми отне няколко събмита и да пренапиша логиката.

0
Antoniya86 avatar Antoniya86 0 Точки

В крайна сметка изоставих for идеята и стана с два while един в друг.

Наистина е интересно как го реши с for и директно си го записвам за преразглеждане на свежа глава. :)

Много благодаря, че отдели време! Лека и спокойна вечер и спорна работа!

0
SimeonKV avatar SimeonKV 55 Точки
  1.   if (yearGrade < 4 )

  2.                     {

  3.                         if (!isStuding)

  4.                         {

  5.                             break;

  6.                         }

  7.                         isStuding = false;

  8.                         i--;

  9.                     }

Приятел може ли пак малко пояснение на тази част от твоя код. isStudying = true, после в if - проверките го правиш false, на първия if има break; какво трябва при false и break; да продължи или да се break-не!? а после i -- как се намалява и до колка, като е със стойност true? е как програмата разбира да се break-не като i-- просто декрементира дадена стойнст! Мерси предварително :) :)

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

значи при първата оценка <4  ще влезеш вътре и ще провериш ако досега не е имало ниска оценка пропускаш if-в него очакваш isstuding=false и ще го пропуснеш ,но вече имаш една ниска оценка и затова isstuding ти става false,и тъй като тази година е нулева си намаляш i-- с 1.

ако не влезеш 2ри път тук ученика завършва и всичко е ок. Ако влезеш 2ри път  if- проверката ще върне true и ще прекъснеш цикъла.и ще се върнеш в while.

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