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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2011, 19:14   #1
Sergey240892
Пользователь
 
Регистрация: 28.02.2011
Сообщений: 33
По умолчанию Классы

Подскажите пожалуйста как мне можно отсортировать класс по росту, весу, году рождения, добавить или удалить человека?
Код:
#include "iostream"
#include <stdio.h> 
#include <string>
#include <conio.h> 

using namespace std ;

class Person
  {
  public:
	  string name;
	  string adres;
	  int god_rojdeniya;
	  string telefon;
	  float rost;
	  float ves;
	  
	  void print()
	  {
		cout<<"\nname: "<<name
			<<"\nadres: "<<adres
			<<"\ngod_rojdeniya: "<<god_rojdeniya
			<<"\ntelefon: "<<telefon
			<<"\nrost: "<<rost
			<<"\nves: "<<ves<<endl;
	 	  }
  };
  int main ()
	  {
	  Person a;
      Person b;
	  Person c;
	  Person d;
	  Person e;

	  a.name ="Stepanuk Dmitriy Yurievih";
	  a.adres ="Dneproprtrovsk";
	  a.god_rojdeniya = 1992;
	  a.telefon = "64-25-06";
	  a.rost= 175;
	  a.ves = 60.5;

	  b.name ="Ivanhenko Larisa Ivanovna";
	  b.adres ="Zaporoge" ;
	  b.god_rojdeniya =1965;
	  b.telefon ="64-21-41";
	  b.rost= 168.8;
	  b.ves = 85.3;

	  c.name ="Abramhuk Maksim Viktorovih";
	  c.adres ="Zaporoge" ;
	  c.god_rojdeniya =1994;
	  c.telefon ="764-46-15";
	  c.rost= 180.8;
	  c.ves = 99.9;

	  d.name ="Lukah Ivan Ivanovih";
	  d.adres ="Kiev" ;
	  d.god_rojdeniya =1989;
	  d.telefon ="228-16-01 ";
	  d.rost= 170.2;
	  d.ves = 62.3;

	  e.name ="Ivanova Cvitlana Petrovna";
	  e.adres ="Doneck" ;
	  e.god_rojdeniya =1978;
	  e.telefon ="787-45-57 ";
	  e.rost= 166.8;
	  e.ves = 79.3;

      a.print();
	  b.print();
	  c.print();
	  d.print();
	  e.print();
	      getch();
      }
Sergey240892 вне форума Ответить с цитированием
Старый 18.05.2011, 19:44   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Неправильно это -- делать переменные-члены класса открытыми.
Открытыми надо делать методы доступа к переменным, а сами переменные поместить в раздел private...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 18.05.2011, 19:48   #3
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

для начала массив объектов сделайте, а то нечего сортировать. юзайте qsort().
можно вектор - тогда std::sort.
onewho вне форума Ответить с цитированием
Старый 18.05.2011, 20:15   #4
Sergey240892
Пользователь
 
Регистрация: 28.02.2011
Сообщений: 33
По умолчанию

Но когда я их так делаю выскакивают ошибки
Код:
#include "iostream"
#include <stdio.h> 
#include <string>
#include <conio.h> 

using namespace std ;

class Person
  {
      public:
             private:   string name;
	       private:     string adres;
	  private: int god_rojdeniya;
	         private:   string telefon;
	          private:  float rost;
	          private:  float ves;
	  
	  void print()
	  {
		cout<<"\nname: "<<name
			<<"\nadres: "<<adres
			<<"\ngod_rojdeniya: "<<god_rojdeniya
			<<"\ntelefon: "<<telefon
			<<"\nrost: "<<rost
			<<"\nves: "<<ves<<endl;
	 	  }
  };
  int main ()
	  {
	  Person a;
      Person b;
	  Person c;
	  Person d;
	  Person e;

	  a.name ="Stepanuk Dmitriy Yurievih";
	  a.adres ="Dneproprtrovsk";
	  a.god_rojdeniya = 1992;
	  a.telefon = "64-25-06";
	  a.rost= 175;
	  a.ves = 60.5;

	  b.name ="Ivanhenko Larisa Ivanovna";
	  b.adres ="Zaporoge" ;
	  b.god_rojdeniya =1965;
	  b.telefon ="64-21-41";
	  b.rost= 168.8;
	  b.ves = 85.3;

	  c.name ="Abramhuk Maksim Viktorovih";
	  c.adres ="Zaporoge" ;
	  c.god_rojdeniya =1994;
	  c.telefon ="764-46-15";
	  c.rost= 180.8;
	  c.ves = 99.9;

	  d.name ="Lukah Ivan Ivanovih";
	  d.adres ="Kiev" ;
	  d.god_rojdeniya =1989;
	  d.telefon ="228-16-01 ";
	  d.rost= 170.2;
	  d.ves = 62.3;

	  e.name ="Ivanova Svitlana Petrovna";
	  e.adres ="Doneck" ;
	  e.god_rojdeniya =1978;
	  e.telefon ="787-45-57 ";
	  e.rost= 166.8;
	  e.ves = 79.3;

      a.print();
	  b.print();
	  c.print();
	  d.print();
	  e.print();

	  //sortirovka
	
	      getch();
      }
Sergey240892 вне форума Ответить с цитированием
Старый 18.05.2011, 20:19   #5
Sergey240892
Пользователь
 
Регистрация: 28.02.2011
Сообщений: 33
По умолчанию

А как сделать массив объектов?
Sergey240892 вне форума Ответить с цитированием
Старый 18.05.2011, 21:23   #6
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

ну логично предположить что Person array[5];
далее в цикле
Код:
for (int i=0; i<5; i++) {
array[i].name=... и тд
onewho вне форума Ответить с цитированием
Старый 19.05.2011, 16:38   #7
Sergey240892
Пользователь
 
Регистрация: 28.02.2011
Сообщений: 33
По умолчанию

Я сделал масив объектов но у меня что-то не выходит вывести их на экран.
Код:
#include "iostream"
#include <stdio.h> 
#include <string>
#include <conio.h> 

using namespace std ;

class Person
  {
  public:
	  string name;
	  string adres;
	  int god_rojdeniya;
	  string telefon;
	  double rost;
	  double ves;
	  
	  void print()
	  {
		cout<<"\nname: "<<name
			<<"\nadres: "<<adres
			<<"\ngod_rojdeniya: "<<god_rojdeniya
			<<"\ntelefon: "<<telefon
			<<"\nrost: "<<rost
			<<"\nves: "<<ves<<endl;
	 	  }
  };
  int main ()
	  {
	  Person a;
      Person b;
	  Person c;
	  Person d;
	  Person e;

	  a.name ="Stepanuk Dmitriy Yurievih";
	  a.adres ="Dneproprtrovsk";
	  a.god_rojdeniya = 1992;
	  a.telefon = "64-25-06";
	  a.rost= 175;
	  a.ves = 60.5;

	  b.name ="Ivanhenko Larisa Ivanovna";
	  b.adres ="Zaporoge" ;
	  b.god_rojdeniya =1965;
	  b.telefon ="64-21-41";
	  b.rost= 168.8;
	  b.ves = 85.3;

	  c.name ="Abramhuk Maksim Viktorovih";
	  c.adres ="Zaporoge" ;
	  c.god_rojdeniya =1994;
	  c.telefon ="764-46-15";
	  c.rost= 180.8;
	  c.ves = 99.9;

	  d.name ="Lukah Ivan Ivanovih";
	  d.adres ="Kiev" ;
	  d.god_rojdeniya =1989;
	  d.telefon ="228-16-01 ";
	  d.rost= 170.2;
	  d.ves = 62.3;

	  e.name ="Ivanova Svitlana Petrovna";
	  e.adres ="Doneck" ;
	  e.god_rojdeniya =1978;
	  e.telefon ="787-45-57 ";
	  e.rost= 166.8;
	  e.ves = 79.3;

      a.print();
	  b.print();
	  c.print();
	  d.print();
	  e.print();

	 
	    Person arey[5];
	    arey[5].god_rojdeniya={1992,1965,1994,1978,1989};
	    for (int i=0; i<5; i++) 
			printf("\n%d\n ",&arey[i].god_rojdeniya);
		
		 getch();
      }
Sergey240892 вне форума Ответить с цитированием
Старый 19.05.2011, 19:01   #8
Sergey240892
Пользователь
 
Регистрация: 28.02.2011
Сообщений: 33
По умолчанию

Подскажите пожалуйста как правильно сделать.
Sergey240892 вне форума Ответить с цитированием
Старый 25.05.2011, 18:49   #9
Sergey240892
Пользователь
 
Регистрация: 28.02.2011
Сообщений: 33
По умолчанию

У меня получилось отсортировать класс.
Но как мне количество персон задавать, и данные вводить из клавиатуры.
Код:
#include "iostream"
#include <stdio.h> 
#include <string>
#include <conio.h> 

using namespace std ;

class Person
  {
  public:
	  string name;
	  string adres;
	  int dat;
	  string telefon;
	  double rost;
	  double ves;
	 	  
	  void print()
	  {
		cout<<"\nname: "<<name
			<<"\nadres: "<<adres
			<<"\ngod_rojdeniya: "<<dat
			<<"\ntelefon: "<<telefon
			<<"\nrost: "<<rost
			<<"\nves: "<<ves<<endl;
	 	  }
  };
  int main ()
	  {
	  Person a;
      Person b;
	  Person c;
	  Person d;
	  Person e;

	  a.name ="Stepanuk Dmitriy Yurievih";
	  a.adres ="Dneproprtrovsk";
	  a.dat = 1992;
	  a.telefon = "64-25-06";
	  a.rost= 175;
	  a.ves = 60.5;

	  b.name ="Ivanhenko Larisa Ivanovna";
	  b.adres ="Zaporoge" ;
	  b.dat =1965;
	  b.telefon ="64-21-41";
	  b.rost= 168.8;
	  b.ves = 85.3;

	  c.name ="Abramhuk Maksim Viktorovih";
	  c.adres ="Zaporoge" ;
	  c.dat =1994;
	  c.telefon ="764-46-15";
	  c.rost= 180.8;
	  c.ves = 99.9;

	  d.name ="Lukah Ivan Ivanovih";
	  d.adres ="Kiev" ;
	  d.dat =1989;
	  d.telefon ="228-16-01 ";
	  d.rost= 170.2;
	  d.ves = 62.3;

	  e.name ="Ivanova Svitlana Petrovna";
	  e.adres ="Doneck" ;
	  e.dat =1978;
	  e.telefon ="787-45-57 ";
	  e.rost= 166.8;
	  e.ves = 79.3;

      a.print();
	  b.print();
	  c.print();
	  d.print();
	  e.print();

	  //sorting po name
	  printf("\nsortirovka po name\n");
	  Person sname[5]={a, b,c,d,e};
	    int n=5; 
	  for(int i=0;i<n-1;i++){ 
        for(int j=i+1;j<n;j++){ 
			if(sname[i].name>sname[j].name)
			{ 
				string tmp=sname[j].name; 
				sname[j].name=sname[i].name;
				sname[i].name=tmp;
            }
        }
    }
       for (int i=0;i<n;i++)
		sname[i].print();	   
 	 
	    //sorting po adresu
	  printf("\nsortirovka po adresu\n");
	  Person wadres[5]={a, b,c,d,e};
	
   for(int i=0;i<n-1;i++){ 
        for(int j=i+1;j<n;j++){ 
			if(wadres[i].adres>wadres[j].adres)
			{ 
				string tmp=wadres[j].adres; 
				wadres[j].adres=wadres[i].adres;
				wadres[i].adres=tmp;
            }
        }
    }
       for (int i=0;i<n;i++)
		wadres[i].print();	   
 	 
	  //sorting po godu rogdeniya
	     printf("\nsortirovka po date rojdeniya\n");
		 Person data[5]={a, b,c,d,e};
	   for(int i=0;i<n-1;i++){ 
        for(int j=i+1;j<n;j++){ 
			if(data[i].dat>data[j].dat)
			{ 
				int tmp=data[j].dat; 
				data[j].dat=data[i].dat;
				data[i].dat=tmp;
            }
        }
    }
       for (int i=0;i<n;i++)
		data[i].print();	   

	   	  //sorting po telefonu
	     printf("\nsortirovka po telefonu\n");
		 Person stelefon[5]={a, b,c,d,e};
	   for(int i=0;i<n-1;i++){ 
        for(int j=i+1;j<n;j++){ 
			if(stelefon[i].telefon>stelefon[j].telefon)
			{ 
				string tmp=stelefon[j].telefon; 
				stelefon[j].telefon=stelefon[i].telefon;
				stelefon[i].telefon=tmp;
            }
        }
    }
       for (int i=0;i<n;i++)
		stelefon[i].print();	   
	    
	   //sorting po rostu
	      printf("\nsortirovka po rostu\n");
		 Person srost[5]={a, b,c,d,e};
	   for(int i=0;i<n-1;i++){ 
        for(int j=i+1;j<n;j++){ 
			if(srost[i].rost>srost[j].rost)
			{ 
				double tmp=srost[j].rost; 
				srost[j].rost=srost[i].rost;
				srost[i].rost=tmp;
            }
        }
    }
       for (int i=0;i<n;i++)
		srost[i].print();	   
	    
	     //sorting po vesu
	      printf("\nsortirovka po vesu\n");
		 Person sves[5]={a, b,c,d,e};
	   for(int i=0;i<n-1;i++){ 
        for(int j=i+1;j<n;j++){ 
			if(sves[i].ves>sves[j].ves)
			{ 
				double tmp=sves[j].ves; 
				sves[j].ves=sves[i].ves;
				sves[i].ves=tmp;
            }
        }
    }
       for (int i=0;i<n;i++)
		sves[i].print();	   
	   
	  getch();
      }
Sergey240892 вне форума Ответить с цитированием
Старый 25.05.2011, 23:22   #10
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Sergey240892

Подскажите пожалуйста как мне можно отсортировать класс по росту, весу, году рождения,

std::sort + предикат

добавить или удалить человека?

std::list<> + его функции
Rififi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы с++ Blad47 Помощь студентам 11 13.10.2011 20:36
классы Blade47 Общие вопросы C/C++ 2 05.04.2011 15:29
Классы honest Помощь студентам 5 21.09.2009 21:23