Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2012, 16:50   #1
lady.ulumba
Пользователь
 
Регистрация: 08.09.2011
Сообщений: 39
По умолчанию Класс "Студенты" в С++

Пожалуйста помогите! Программа работает, но только для одного студента. Как сделать для нескольких студентов?
Задание: Опишите запись СТУДЕНТ и поместите в нее следующую информацию: Ф.И.О., оценки (математика, физика, черчение, химия, сопромат). Какое количество отличных оценок получено студентами по всем предметам.

Код:
#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;
}

Последний раз редактировалось lady.ulumba; 14.06.2012 в 16:56.
lady.ulumba вне форума Ответить с цитированием
Старый 14.06.2012, 17:05   #2
Npwas
Форумчанин
 
Аватар для Npwas
 
Регистрация: 26.09.2011
Сообщений: 158
По умолчанию

Я в С++ не очень, то и разбираюсь, но могу сказать, что тебе нужно почитать про динамические структуры(списки) и указатели. Я приведу пример на языке Delphi, как описать запись, надеюсь суть поймешь:
Пример описания типа записи и типа списка:
PUkazatel = ^TList; //тип нашего списка, ^-так обозначается указатель в Delphi
TList = Record // тип записи
поля определенных типов;
указатель на следующий эл-т типа PUkazatel;
end;
<----Весы Там.
Npwas вне форума Ответить с цитированием
Старый 14.06.2012, 19:36   #3
lady.ulumba
Пользователь
 
Регистрация: 08.09.2011
Сообщений: 39
По умолчанию

А как будет, если нужно посчитать количество студентов, получивших отлично по всем предметам?
Код:
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;
}
Не могу сообразить, как вывести общее количество
lady.ulumba вне форума Ответить с цитированием
Старый 14.06.2012, 20:37   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
получивших отлично по всем предметам?
Код:
int main(int argc, char* argv[])
{
    int Math,Phith,Plotting,Chemistry,Sopromat,cnt=0,iss; char Fio[30];
 
    Student* objStud=new Student[3];
    for(int i=0;i<3;i++)    {iss=0;
    cout << "\nVvedite dannie!\n";
    cout << "Student: " << "\n";
    cin >> Fio;
    cout << "Mathematics: ";     cin >> Math; iss+=(Math==5)?1:0;
    cout << "Phithics: ";            cin >> Phith; iss+=(Phith==5)?1:0;
    cout << "Plotting:";            cin >> Plotting ;iss+=(Plotting ==5)?1:0;
    cout << "Chemistry: ";        cin >> Chemistry;iss+=(Chemistry==5)?1:0;
    cout << "Sopromat:";         cin >> Sopromat ;iss+=(Sopromat ==5)?1:0;
    cnt+=(iss==5)?1:0;
    objStud[i].setMark( Math, Phith, Plotting, Chemistry, Sopromat);
  //  objStud[i].getMark();
    objStud[i].exelent(Math, Phith, Plotting, Chemistry, Sopromat);
   }
   cout<<"Кол-во мегакрутых ботанов:\t"+cnt;
   for(int i=0;i<3;i++)
   objStud[i].fun(Math, Phith, Plotting, Chemistry, Sopromat);// функция
   // delete [] objStud;
    getch();
        return 0;
}
Видишь идею?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать количество букв "й", "ы" и "я", содержащихся в заданной строке. VoltZZZ Помощь студентам 2 01.03.2012 23:39
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04