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

Принтиране на % студенти по общ признак

Здравейте,

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

 

Значи имам масив от студенти и трябва да принтирам % на студентите с фамилия "Димитров".

Последните 2 финкции преди main би трябвало да се грижат а това, но винаги  и излиза 0.

 

https://pastebin.com/pKPpSsAS

Предварително Ви благодаря!

Тагове:
0
C++ Programming 04/04/2017 22:38:47
georgi.stef.georgiev avatar georgi.stef.georgiev 921 Точки

Здравей,

С какви примери си пробвала и какво излиза?

Можеш да пробваш с някакъв пример и да проследиш изпълнението на кода за този пример - да видиш къде точно не работи както трябва. Коя конкретна функция не работи както трябва според теб? Ако ти се налага да решиш този проблем на ръка (без да пишеш програма), какво би направила, как би го пресметнала този процент?

В първите две-три лекции на курса, за който е този форум, сме покрили достатъчния материал за да решиш подобна задача. Също така правихме задача, която има общо с това в Judge Assignment 1 за курса.

Щом не си много на "ти" със C++ може би е добре да го понаучиш, за да решаваш задачи с него (макар че проблемът на кодът ти не е, че е на C++, задачата е достатъчно базова, че и на друг език да беше нямаше да има голямо значение) - един от начините да го направиш е да прегледаш лекциите от този курс.

Със сигурност начинът не е да пишеш в този форум очаквайки някой да ти дебъгне програмата вместо теб

Поздрави,

Жоро

1
AnaYaneva avatar AnaYaneva 1 Точки

Благодаря за отговора!

 

Както съм написала само последните 2 функции не работят, другите са ок, масивът се пълни и се принтира. Има грешка, която пропускам, но ще я открия, мерси.

0
05/04/2017 06:08:22
MartinBG avatar MartinBG 4803 Точки

Проблемът с нулевият резултат е от ред 78.

Там делиш цяло число (sum) на друго цяло число (N) и следователно резултатът ще e цяло число, което ще е 0 при sum < N или 1 при sum == N. Трябва да кастнеш едно от двете числа към тип double, за да ти се получи резултата.

double perc=((double)sum/N)*100;

Или

double perc=(sum/(double)N)*100;

Алтернативно, може да смениш литерала на множителя (100) от int към тип double (100.0), да махнеш скобите и да го сложиш най-отпред:

double perc = 100.0 * sum / N;

 

BTW, защо на ред 16 си дефинираш student типа като масив от N+1 елемента, след като винаги го инициализираш само с N елемента?

typedef student Tmasstud[N+1];

0
05/04/2017 11:41:27
AnaYaneva avatar AnaYaneva 1 Точки

Много благодаря,

понякога такава привидно проста грешка ти изяжда 3- 4 часа чудене.

Относно n+1 , мерси, ще го оправя. 

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