Форум программистов, компьютерный форум CyberForum.ru

Написать программу, которая вводит информацию и печатает номер курса на котором наибольший процент мужчин - C++

Восстановить пароль Регистрация
 
PycuBep
Сообщений: n/a
13.04.2014, 21:15     Написать программу, которая вводит информацию и печатает номер курса на котором наибольший процент мужчин #1
Хелп!
На основе таблицы, содержащей следующую информацию о группе студентов некоторого вуза (фамилия, имя, отчество, пол, возраст, курс) написать программу, которая вводит эту информацию и печатает номер курса, на котором наибольший процент мужчин;

Проблема в нахождении процентного соотношения, программа выводит нулевые значения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <conio.h>
#include <locale.h>
#include <iostream>
#include <string>
using namespace std;
 
struct Students
{
    string name;
    string fam;
    string otch;
    char sex;
    int age, kurs;
};
 
void Input(Students s[], int N)
{
 for (int i(0); i < N; i++)                
    {
        cout << "Заполните информацию о " << i+1 << " студенте: " << endl;
 
        cout << "Имя: ";
        cin >> s[i].name;
 
        cout << "Фамилия: ";
        cin >> s[i].fam;
 
        cout << "Отчество: ";
        cin >> s[i].otch;
 
        cout << "Пол(m - мужской, f - женский): ";
        cin >> s[i].sex;
 
        cout << "Возраст: ";
        cin >> s[i].age;
 
        cout << "Курс, на котором обучается студент: ";
        cin >> s[i].kurs;
    
        system("cls");
    }
}
int main()
{
    setlocale(LC_ALL, "Russian");
 
    cout << "Введите количество студентов: ";
    int N;
    cin >> N;
    cout << endl;
 
    Students *s = new Students [N]; 
  
   Input(s, N);
    
    int max = s[0].kurs;
    for (int i(0); i < N; i++)
    {
        if (s[i].kurs > max)   //Находим максимальный курс
        {
            max = s[i].kurs;
        }
    }
 
    int *ppc = new int [max];
     for (int i(0); i <= max; i++)
    {
        ppc[i] = 0;
    }
 
    int *mpc = new int [max];
     for (int i(0); i <= max; i++)
    {
        mpc[i] = 0;
    }
 
    for(int i(1); i <= max; i++)
    {
        for(int j(0); j < N; j++)
        {
            if(s[j].kurs == i) //считается кол-во студентов на курс
            {
                ppc[i]++;
            }
            if((s[j].kurs == i) && s[j].sex == 'm') //параллельно считается кол-во мужчин на курс
            {
                mpc[i]++;
            }
        }
    }
 
    double *pompc = new double [max];
     for (int i(1); i <= max; i++)
    {
        pompc[i] = 0;
    }
 
    for(int i(1); i <= max; i++) //в данном массиве, где номер его элемента соответствует номеру курса, считается процентная составляющая мужчин от числа студентов на курсе
    {
        if(mpc[i] != 0)         
        {
            pompc[i] = ppc[i] % mpc[i] * 100; 
        }
    }
 
    int index = 0;
    double maxpercent = pompc[1];
     for (int i = 1; i < max; i++)
    {
        if (pompc[i] > maxpercent)
        {
            maxpercent = pompc[i];
            index = i;
        }
    }
    
    cout << "Наибольший процент мужчин (" << maxpercent << ") на " << index << " курсе";
    
    getch();                                                                
    return 0;
}
Как мне кажется, вся проблема в данном участке программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for(int i(1); i <= max; i++)
{
        if(mpc[i] != 0)         
        {
            pompc[i] = ppc[i] / mpc[i] * 100; 
        }
    }
 
    int index = 0;
    double maxpercent = pompc[1];
     for (int i = 1; i < max; i++)
    {
        if (pompc[i] > maxpercent)
        {
            maxpercent = pompc[i];
            index = i;
        }
    }
p.s. еще не знаю как освободить динамическую память.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 21:15     Написать программу, которая вводит информацию и печатает номер курса на котором наибольший процент мужчин
Посмотрите здесь:

Написать функцию, которая принимает указатель на 2 последовательности и печатает номер вхождения s1 в s2 C++
C++ найти номер курса на котором больше всего мужчин(пол указывается буквой Ч (чоловiк) или Ж (жiнка)).
написать программу, которая вводит число из 4 цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга. например если введенное ч C++
Написать программу, которая вводит номер некоторого года и печатает его название по старояпонскому календарю C++
C++ Написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент положительных и отрицательных чисел и процент нулей и выводи
Написать программу, которая вводит информацию и печатает самое распространенное женское имя C++
C++ Написать программу, которая по номеру квартиры определяет номер подъезда и этажа, на котором находится квартир
Из файла с информацией о студентах узнать номер курса с наибольшим процентом мужчин C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 17:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru