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

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

Войти
Регистрация
Восстановить пароль
 
 
lady.ulumba
2 / 0 / 1
Регистрация: 14.06.2012
Сообщений: 7
#1

Какое количество отличных оценок получено студентами по всем предметам - C++

14.06.2012, 17:15. Просмотров 903. Ответов 15
Метки нет (Все метки)

Пожалуйста помогите! Программа работает, но только для одного студента. Как сделать для нескольких студентов?
Задание: Опишите запись СТУДЕНТ и поместите в нее следующую информацию: Ф.И.О., оценки (математика, физика, черчение, химия, сопромат). Какое количество отличных оценок получено студентами по всем предметам.
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
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <math.h>
#include <conio.h>
#pragma argsused
 
class Student // имя класса
{
 private:
 char fio[30]; //ФИО
 int Math; // оценки
 int Phith; 
 int Plotting; 
 int Chemistry;  
 int Sopromat; 
 
 public:
 char* getFio() {
        return fio; }
 
 void setFio(const char* str) {
                       strcpy(fio, str); }
void setMark( int mark_math, int mark_phith, int mark_plotting, int mark_chemistry, int mark_sopromat)// инициализация
    {
        Math = mark_math;
        Phith = mark_phith;
        Plotting  = mark_plotting;
        Chemistry = mark_chemistry;
        Sopromat = mark_sopromat;
    }
    void getMark() // отображение данных
    {
        cout << "Mathematics: " << Math << "\n";
        cout << "Phithics: " << Phith << "\n";
        cout << "Plotting: " << Plotting << "\n";
        cout << "Chemistry: " << Chemistry << "\n";
        cout << "Sopromat: " << Sopromat << "\n";
    }
    void exelent(int mark_math, int mark_phith, int mark_plotting, int mark_chemistry, int mark_sopromat) // функция, вычисляющая кол-во отличных оценок
    {   int k=0;
        Math = mark_math;
        Phith = mark_phith;
        Plotting  = mark_plotting;
        Chemistry = mark_chemistry;
        Sopromat = mark_sopromat;
        if(Math==5) k++;
        if(Phith==5) k++;
        if(Plotting==5)k++;
        if(Chemistry==5)  k++;
        if(Sopromat==5) k++;
        cout << "Kol otlichnix ocenok: " << k;}
}; // конец описания класса Student
 
int main(int argc, char* argv[])
{
    int Math,Phith,Plotting,Chemistry,Sopromat;
    Student objStud, stud[15]; // объявление объекта
 
    cout << "Student: " << "\n";
    stud[1].setFio("Firstname Lastname");
    cout<<stud[1].getFio()<<"\n"; // выводит ФИО
 
    cout << "Vvedite dannie!\n"; //ввести данные
 
    cout << "Mathematics: ";     cin >> Math;
    cout << "Phithics: ";        cin >> Phith;
    cout << "Plotting:";         cin >> Plotting ;
    cout << "Chemistry: ";       cin >> Chemistry;
    cout << "Sopromat:";         cin >> Sopromat ;
 
    
    objStud.setMark( Math, Phith, Plotting, Chemistry, Sopromat);
   // objStud.getMark();
    objStud.exelent(Math, Phith, Plotting, Chemistry, Sopromat);
    getch();
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2012, 17:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Какое количество отличных оценок получено студентами по всем предметам (C++):

Воспользовавшись записью СТУДЕНТ определите количество отличных оценок, полученных группой по всем предметам - C++
Привет. Прощу помочь с решением задачи на структуру. Я нашел тут на форуме схожую задачу, но она определяет количество отличников, а не...

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

Известны оценки двух учеников по четырём предметам Определить сумму оценок каждого ученика - C++
Известны оценки двух учеников по четырём предметам Определить сумму оценок каждого ученика

Удалить студентов, у которых по всем предметам 2 - C++
Нужно удалить студентов, у которых по всем предметам 2. Затем вывести новый список на экран. Какие=-то косяки опять начались. Может...

Какое количество деталей может быть получено из имеющегося N кг сплава? - PascalABC.NET
Добрый день! Помогите, пожалуйста, решить задачу: &quot;&quot;Детали&quot; Имеется N кг металлического сплава. Из него изготавливают заготовки массой...

Подсчитать количество удовлетворительных оценок, хороших, отличных и средний балл в группе. - C (СИ)
Дан список студентов и оценка каждого на экзамене (оценки на N экзаменах). Подсчитать количество удовлетворительных оценок, хороших,...

15
Andrey.K
344 / 265 / 15
Регистрация: 14.11.2010
Сообщений: 482
14.06.2012, 17:45 #2
В main() сделай так, это у тебя будет массив из 10 объектов класса Student.
C++
1
Student* objStud=new Student[10];
Далее работаешь как с массивом.
C++
1
2
3
4
for(int i=0;i<10;i++)
{
objStud[i]....любой твой метод.
}
2
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
14.06.2012, 17:56 #3
Цитата Сообщение от Andrey.K Посмотреть сообщение
Student* objStud=new Student[10];
И в конце программы прописать:
C++
1
delete [] objStud;
1
lady.ulumba
2 / 0 / 1
Регистрация: 14.06.2012
Сообщений: 7
14.06.2012, 19:29  [ТС] #4
А как будет, если нужно посчитать количество студентов, получивших отлично по всем предметам?

Добавлено через 29 минут
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
void fun(int mark_math, int mark_phith, int mark_plotting, int mark_chemistry, int mark_sopromat)
        {int sum=0;
         if((Math==5)&&(Phith==5)&&(Plotting==5)&&(Chemistry==5)&&(Sopromat==5))
         sum++;
         cout << "\nKol otlichnicov: " << sum; }//создала новую функцию в классе
int main(int argc, char* argv[])
{
    int Math,Phith,Plotting,Chemistry,Sopromat; char Fio[30];
 
    Student* objStud=new Student[3];
    for(int i=0;i<3;i++)
    {
    cout << "\nVvedite dannie!\n";
    cout << "Student: " << "\n";
    cin >> Fio;
    cout << "Mathematics: ";     cin >> Math;
    cout << "Phithics: ";        cin >> Phith;
    cout << "Plotting:";         cin >> Plotting ;
    cout << "Chemistry: ";       cin >> Chemistry;
    cout << "Sopromat:";         cin >> Sopromat ;
 
    objStud[i].setMark( Math, Phith, Plotting, Chemistry, Sopromat);
  //  objStud[i].getMark();
    objStud[i].exelent(Math, Phith, Plotting, Chemistry, Sopromat);
   }
   for(int i=0;i<3;i++)
   objStud[i].fun(Math, Phith, Plotting, Chemistry, Sopromat);// функция
   // delete [] objStud;
    getch();
        return 0;
}
Не могу сообразить, как вывести общее количество
0
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
14.06.2012, 19:29 #5
Цитата Сообщение от lady.ulumba Посмотреть сообщение
А как будет, если нужно посчитать количество студентов, получивших отлично по всем предметам?
C++
1
2
3
for (int i=0; i<10; i++)
   if ( objStud[i]->Math == 5 && objStud[i]->Phith == 5 && objStud[i]->Plotting == 5 && objStud[i]->Chemistry == 5 && objStud[i]->Sopromat == 5 )
      ...
Правда, здесь все эти данные имеют тип private (закрытые). Они недоступны. Это надо какие-то функции прописать, которые возвращают оценки. Но смысл думаю понятен.
0
lady.ulumba
2 / 0 / 1
Регистрация: 14.06.2012
Сообщений: 7
14.06.2012, 19:39  [ТС] #6
Цитата Сообщение от g-h Посмотреть сообщение
C++
1
2
3
for (int i=0; i<10; i++)
   if ( objStud[i]->Math == 5 && objStud[i]->Phith == 5 && objStud[i]->Plotting == 5 && objStud[i]->Chemistry == 5 && objStud[i]->Sopromat == 5 )
      ...
Правда, здесь все эти данные имеют тип private (закрытые). Они недоступны. Это надо какие-то функции прописать, которые возвращают оценки. Но смысл думаю понятен.
Спасибо, но я как раз не могу понять, какую именно функцию нужно сделать.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7772 / 4808 / 747
Регистрация: 29.11.2010
Сообщений: 13,127
14.06.2012, 19:50 #7
C++
1
2
3
4
5
public:
    bool goodStudent()
    {
        return Math + Phith + Plotting + Chemistry + Sopromat == 25;
    }
0
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
14.06.2012, 19:52 #8
Цитата Сообщение от lady.ulumba Посмотреть сообщение
Спасибо, но я как раз не могу понять, какую именно функцию нужно сделать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Student
{
public:
   int getMath() const  { return Math; }
   int getPhith() const  { return Phith; }
 
private:
  int Math; // оценки
  int Phith; 
};
 
int main()
{
   Student* objStud=new Student[10];
 
   for (int i=0; i<10; i++)
      if (objStud->getMath() == 5 && objStud->getPhith() == 5)
         ...
 
 
   delete [] objStud;
   return 0;
}
1
lady.ulumba
2 / 0 / 1
Регистрация: 14.06.2012
Сообщений: 7
14.06.2012, 19:53  [ТС] #9
Знаете, что я сделала? Я переместила оценки в public и написала функцию в main()
Код
if((Math==5)&&(Phith==5)&&(Plotting==5)&&(Chemistry==5)&&(Sopromat==5))
    sum++;
Иначе не знаю как.
0
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
14.06.2012, 19:56 #10
Цитата Сообщение от lady.ulumba Посмотреть сообщение
if((Math==5)&&(Phith==5)&&(Plotting==5)&&(Chemistry==5)&&(Sopromat==5))
sum++;
Так нельзя.
C++
1
2
if((objStud->Math==5)&&(objStud->Phith==5)&&(objStud->Plotting==5)&&(objStud->Chemistry==5)&&(objStud->Sopromat==5))
    sum++;
1
MrGluck
Модератор
Эксперт CЭксперт С++
7772 / 4808 / 747
Регистрация: 29.11.2010
Сообщений: 13,127
14.06.2012, 19:57 #11
Цитата Сообщение от g-h Посмотреть сообщение
Так нельзя.
C++
1
2
if((objStud->Math==5)&&(objStud->Phith==5)&&(objStud->Plotting==5)&&(objStud->Chemistry==5)&&(objStud->Sopromat==5))
    sum++;
И так нельзя. Для чего, по вашему придумали инкапсуляцию? Класс должен скрыть свои члены и предоставить интерфейс для работы с ними.
0
lady.ulumba
2 / 0 / 1
Регистрация: 14.06.2012
Сообщений: 7
14.06.2012, 19:57  [ТС] #12
g-h
О, спасибо Вам огромное! Думаю, Ваш вариант правильный.
0
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
14.06.2012, 19:59 #13
Цитата Сообщение от MrGluck Посмотреть сообщение
И так нельзя. Для чего, по вашему придумали инкапсуляцию? Класс должен скрыть свои члены и предоставить интерфейс для работы с ними.
Она сама эти данные перенесла в public
0
MrGluck
Модератор
Эксперт CЭксперт С++
7772 / 4808 / 747
Регистрация: 29.11.2010
Сообщений: 13,127
14.06.2012, 20:01 #14
Цитата Сообщение от g-h Посмотреть сообщение
Она сама эти данные перенесла в public
Да, а можно еще массивы понасоздавать глобальных переменных и работать с ними. Писать надо сразу хорошо и не быдлокодить, это в будущем убережет от ошибок.
2
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
14.06.2012, 20:29 #15
Переделал. Забыл что objStud это массив.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Student
{
public:
   int getMath() const  { return Math; }
   int getPhith() const  { return Phith; }
 
private:
  int Math; // оценки
  int Phith; 
};
 
int main()
{
   Student* objStud=new Student[10];
 
   for (int i=0; i<10; i++)
      if (objStud[i]->getMath() == 5 && objStud[i]->getPhith() == 5)
         ...
 
 
   delete [] objStud;
   return 0;
}
0
14.06.2012, 20:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2012, 20:29
Привет! Вот еще темы с ответами:

Определить средний балл и подсчитать количество удовлетворительных, хороших и отличных оценок - Pascal
ввести оценки студента по 5 экзаменам. Определить средний балл и подсчитать кол-во удовлетворительных, хороших и отличных оценок. Написать...

Определить средний балл оценок по предметам - C#
Помогите с заданием, пожалуйста Даны: Фамилия, Группа, Информатика, История, Физика. Задание: Определить средний балл оценок по физике,...

Найти наивероятнейшее число отличных оценок. - Теория вероятностей
вероятность получения отличной оценки на экзамене равна 0,2. Найти наивероятнейшее число отличных оценок, если сдают экзамен 50 студентов.

Исходя из массива оценок по предметам найти студентов, имеющих право на получение стипендии - Turbo Pascal
Есть задача - Написать программу, используя массив. Описание задачи: Имеем оценки m студентов по n предметам, m=6, n=3. Узнать количество...


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

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

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