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;
В крайна сметка изоставих for идеята и стана с два while един в друг.
Наистина е интересно как го реши с for и директно си го записвам за преразглеждане на свежа глава. :)
Много благодаря, че отдели време! Лека и спокойна вечер и спорна работа!
if (yearGrade < 4 )
{
if (!isStuding)
{
break;
}
isStuding = false;
i--;
}
Приятел може ли пак малко пояснение на тази част от твоя код. isStudying = true, после в if - проверките го правиш false, на първия if има break; какво трябва при false и break; да продължи или да се break-не!? а после i -- как се намалява и до колка, като е със стойност true? е как програмата разбира да се break-не като i-- просто декрементира дадена стойнст! Мерси предварително :) :)
значи при първата оценка <4 ще влезеш вътре и ще провериш ако досега не е имало ниска оценка пропускаш if-в него очакваш isstuding=false и ще го пропуснеш ,но вече имаш една ниска оценка и затова isstuding ти става false,и тъй като тази година е нулева си намаляш i-- с 1.
ако не влезеш 2ри път тук ученика завършва и всичко е ок. Ако влезеш 2ри път if- проверката ще върне true и ще прекъснеш цикъла.и ще се върнеш в while.