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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2010, 03:44   #1
Link12
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 12
По умолчанию Проблема с сортирвкой

Нужно чтобы записи в структуре были упорядочены по фамилии
Код:
main()
{
  const g=2, t=1;
  int s, b, i, k=0, j;
  struct s_name
  {
    char fam[20];
    char initiali[20];   // инициалы
  };
  struct worker
  {
   s_name name[t];
   char pos [20];
   int year;
  };
  worker Tabl[g], bufData;
  for (i=0; i<g; i++)
  {
   rus("Работник № "); cout<<i+1<<'\n';
   rus("Фамилия и инициалы: ");
   for (j=0; j<t; j++)
   {
     cin>>Tabl[i].name[j].fam;
     cin>>Tabl[i].name[j].initiali;
   }
   rus("Название должности: ");
   cin>>Tabl[i].pos;
   rus("год начала работы: ");
   cin>>Tabl[i].year; cout<<"\n";
  }
//-----------------------------------------------------------------------
   bool Sort;
   do
   {
     Sort = false;
     for ( int i=1; i < g; i++ )
     for ( j=0; j < t; j++ )
       if ( strcmp(Tabl[i-1].name[j].fam, Tabl[i].name[j].fam)>0 )
       {
         Sort = true;
         bufData = Tabl[i-1].name[j].fam;
         Tabl[i-1].name[j].fam = Tabl[i].name[j].fam;
         Tabl[i].name[j].fam   = bufData;
       }
   } while (Sort);
//-----------------------------------------------------------------------
   // вывод отсортированного списка
   rus ("\n\n отсартированный список :\n ");

     for ( int i = 0; i < g; i++ )
     {
       rus("Работник № "); cout<<i+1<<'\n';
       rus("Фамилия и инициалы: ");
       for (j=0; j<t; j++)
        {
         cin>>Tabl[i].name[j].fam;
         cin>>Tabl[i].name[j].initiali;
        }
       rus("Название должности: ");
       cin>>Tabl[i].pos;
       rus("год начала работы: ");
       cin>>Tabl[i].year; cout<<"\n";
     }


  rus("Введите стаж работы сотрудника: ");
  cin>>b; cout<<"\n";
  for(i=0; i<g; i++)
  for(j=0; j<t; j++)
   {
   int s=0;
   s=2010-Tabl[i].year;
   if (s > b)
    {
     rus("работники стаж которых больше необходимого стажа:\n");
     rus("Фамилия и инициалы: "); cout<<Tabl[i].name[j].fam<<Tabl[i].name[j].initiali<<'\n';
     rus("Название должности: ");  cout<<Tabl[i].pos<<'\n';
     rus("год начала работы: "); cout<<Tabl[i].year<<'\n';
     k++;
    }
   }
  if (k==0)
   rus("данных работников нет\n");
  getch();
}
При запуске выдаёт ошибку:
[C++ Error] t_1.cpp(46): E2034 Cannot convert 'char *' to 'worker'
[C++ Error] t_1.cpp(47): E2277 Lvalue required
[C++ Error] t_1.cpp(48): E2277 Lvalue required
[C++ Warning] t_1.cpp(89): W8004 'k_mas' is assigned a value that is never used

Подскажите пожалуйста в чём проблема? (Как я понял проблема в том, что я структуре пытаюсь присвоить char. Тоесть одному типу, другой. )

Последний раз редактировалось Link12; 04.05.2010 в 03:49.
Link12 вне форума Ответить с цитированием
Старый 04.05.2010, 04:02   #2
Link12
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 12
По умолчанию

Нашёл ошибку. Тема закрыта.
Link12 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37