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

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

+ Нов въпрос
AnaYaneva avatar AnaYaneva 2 Точки

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

Здравейте,

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

 

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

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

 

https://pastebin.com/pKPpSsAS

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

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

Здравей,

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

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

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

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

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

Поздрави,

Жоро

1
AnaYaneva avatar AnaYaneva 2 Точки

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

 

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

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

Проблемът с нулевият резултат е от ред 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 2 Точки

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

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

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

0