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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
PycuBep
Сообщений: n/a
#1

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

13.04.2014, 21:15. Просмотров 441. Ответов 0
Метки нет (Все метки)

Хелп!
На основе таблицы, содержащей следующую информацию о группе студентов некоторого вуза (фамилия, имя, отчество, пол, возраст, курс) написать программу, которая вводит эту информацию и печатает номер курса, на котором наибольший процент мужчин;

Проблема в нахождении процентного соотношения, программа выводит нулевые значения:
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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу, которая вводит информацию и печатает номер курса на котором наибольший процент мужчин (C++):

Написать программу, которая вводит информацию и печатает самое распространенное женское имя - C++
Прошу помощи, болит голова х) Задача: На основе таблицы, содержащей следующую информацию о группе студентов некоторого вуза (фамилия,...

Написать программу, которая вводит номер некоторого года и печатает его название по старояпонскому календарю - C++
16 В старояпонском календаре был принят 12-летний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона,...

найти номер курса на котором больше всего мужчин(пол указывается буквой Ч (чоловiк) или Ж (жiнка)). - C++
Всем привет! Дан файл с &quot;базой данных&quot; нужно его прочитать и найти номер курса на котором больше всего мужчин(пол указывается буквой Ч...

Используя структуру "People" найти номер курса, на котором наибольшее количество мужчин - C++
Входной файл хранит следующую информацию по студентам: &lt;Фамилия&gt;, &lt;имя&gt;, &lt;отчество&gt;, &lt;год рождения&gt;, &lt;курс&gt;, &lt;пол&gt;, причем фамилия, имя...

написать программу, которая вводит число из 4 цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга. например если введенное ч - C++
написать программу, которая вводит число из 4 цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга. например если...

Написать программу, которая по номеру квартиры определяет номер подъезда и этажа, на котором находится квартир - C++
2. В N-этажном доме M подъездов. На каждой лестничной площадке К квартир. Нумерация квартир в доме сквозная, начиная с 1. Написать...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2014, 21:15
Привет! Вот еще темы с ответами:

Из файла с информацией о студентах узнать номер курса с наибольшим процентом мужчин - C++
Здравствуйте, буду благодарен всем за помощь со следующей задачей: Дан файл, в котором содержится информацияо студентах некоторого вуза:...

Написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент положительных и отрицательных чисел и процент нулей и выводи - C++
помогите =) написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент положительных и отрицательных чисел и...

Написать функцию, которая принимает указатель на 2 последовательности и печатает номер вхождения s1 в s2 - C++
написать функцию, которая принимает указатель на 2 ленты и печатает номер вхождение с s2 в s1 для с++ пример s1: 1 2 3 4 6 7 ...

Напишите программу, которая вводит число из пяти цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга - C++
Напишите программу, которая вводит число из пяти цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга с тремя...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru