05.02.2014, 13:59. Просмотров 1357. Ответов 13
Прошу помощи, болит голова х)
Задача:
На основе таблицы, содержащей следующую информацию о группе студентов некоторого вуза (фамилия, имя, отчество, пол, возраст, курс) написать программу, которая вводит эту информацию и печатает самое распространенное женское имя.
Реализовал так:
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
| #include <conio.h>
#include <locale.h>
#include <iostream>
#include <string>
using namespace std;
struct group
{
string name;
string surname;
string father;
char sex;
int age;
int course;
};
int main()
{
int k=0, max=0, imax=0, i, j, n;
setlocale(LC_ALL, "Rus");
cout << "Введите количество студентов в группе: ";
cin >> n;
cout << endl;
group *kit = new group [n]; // Массив структур со всеми описаниями для каждого ученика
int *fnam = new int [n]; // Массив с количеством совпадений для каждого имени
for (i=0; i<n; i++)
fnam[i]=0;
string *femnames = new string [n]; // Собственно массив с женскими именами, индексы которого будут
for (i=0; i<n; i++) // совпадать с индексами количества совпадений (массив выше)
{
cout << "Введите имя " << i+1 << " студента: ";
cin >> kit[i].name;
cout << "Введите фамилию " << i+1 << " студента: ";
cin >> kit[i].surname;
cout << "Введите отчество " << i+1 << " студента: ";
cin >> kit[i].father;
cout << "Введите пол " << i+1 << " студента (м или ж): "; // Ввод данных
cin >> kit[i].sex;
cout << "Введите возраст " << i+1 << " студента: ";
cin >> kit[i].age;
cout << "Введите номер курса " << i+1 << " студента: ";
cin >> kit[i].course;
cout << endl;
system("cls");
}
for (j=0; j<n; j++) // Как бы проходимся по массиву kit с описаниями учеников
{
if (kit[j].sex=='ж') // Если особь женского пола, то...
{
if (k>0)
{
for (i=0; i<k; i++) // Проходимся по массиву с женскими именами
{
if (femnames[i]==kit[j].name) // Если очередное имя девушки из списка совпало с именем девушки в массиве "для девушек"
fnam[i]++; // То в массив, считающий совпадения, добавляем единицу
else
{
femnames[k]=kit[j].name; // Иначе, если не совпадает, то записать как новое имя в наш "женский" массив
fnam[k]=1; // И счётчику этого имени присвоить единицу
}
}
k++; // Прибавим "мнимую" размерность массиву с женскими именами
}
else
{
k=1; // Инициализация массива с женскими именами
femnames[0]=kit[j].name;
}
}
}
for (i=0; i<k; i++) // Прочёсываем массив с женскими именами до мнимой размерности k
{
if (fnam[i]>max) // Ищем индекс максимального значения
{
max=fnam[i];
imax=i;
}
}
cout << endl << "Наиболее распространённое женское имя: " << femnames[imax] << endl; // Выводим значение из масива женских имён с индексом
system("pause"); // максимального значения из массива с количеством совпадений
return 0;
} |
|
Проблема:
Программа не выводит никакого значения.