Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка структуры по убыванию члена (int) 
V
    Опции темы
oshilan
Дата 21.3.2010, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 21.3.2010

Репутация: нет
Всего: 0



Дана структура, где поля: name - имя ученика, mark[0], mark[1], mark[2], mark[3] - оценки по 4-м предметам, mark[4] - сумма балов ученика. Данные вводятся вручную. Нужно вывести на екран отсортированную таблицу учеников с их оценками по убыванию суммы балов. Закоментированный отрывок - неотсортированная таблица. Текст удачно проходит компиляцию в BorlandC++. Зараннее спасибо!
Код
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
main()
{ clrscr();
  struct str
    { char name[16];
      int mark[5];
    } str_i[4];
  int i, n=1;
  for(i=0;i<4;i++)
    { cout<<"Enter name of the "<<n<<"-st pupil: ";
      cin>>str_i[i].name;
      cout<<"Marks:"<<endl;
      cout<<"Math.: "; cin>>str_i[i].mark[0];
      cout<<"Phys.: "; cin>>str_i[i].mark[1];
      cout<<"Geog.: "; cin>>str_i[i].mark[2];
      cout<<"Lang.: "; cin>>str_i[i].mark[3];
      cout<<endl;
      n++;
    }
  for(i=0;i<4;i++)
    { str_i[i].mark[4]=str_i[i].mark[0]+str_i[i].mark[1]+str_i[i].mark[2]+str_i[i].mark[3];
    }
  printf("%18s%7s%7s%7s%7s%7s\n","Pupil's name","Math.","Phys.","Geog.","Lang.","Amount");
/*for(i=0;i<4;i++)
    { printf("%d%s",i+1,".");
      printf("%16s",str_i[i].name);
      printf("%6d",str_i[i].mark[0]);
      printf("%7d",str_i[i].mark[1]);
      printf("%7d",str_i[i].mark[2]);
      printf("%7d",str_i[i].mark[3]);
      printf("%7d\n",str_i[i].mark[4]);
    }*/
  getch();
  return 0;
}

PM MAIL   Вверх
Ozerich
Дата 21.3.2010, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 2.8.2009
Где: Минск, Беларусь

Репутация: 4
Всего: 5



Код

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <algorithm.h>

using namespace std;

struct str
{ 
    char name[16];
    int mark[5];
} str_i[4];

bool cmp(const str &a, const str &b)
{
    return a.mark[4] > b.mark[4];
}

int main()
{ 


  int i, n=1;
  for(i=0;i<4;i++)
    { cout<<"Enter name of the "<<n<<"-st pupil: ";
      cin>>str_i[i].name;
      cout<<"Marks:"<<endl;
      cout<<"Math.: "; cin>>str_i[i].mark[0];
      cout<<"Phys.: "; cin>>str_i[i].mark[1];
      cout<<"Geog.: "; cin>>str_i[i].mark[2];
      cout<<"Lang.: "; cin>>str_i[i].mark[3];
      cout<<endl;
      n++;
    }
  for(i=0;i<4;i++)
    str_i[i].mark[4]=str_i[i].mark[0]+str_i[i].mark[1]+str_i[i].mark[2]+str_i[i].mark[3];
  sort(str_i, str_i + 4, cmp);
  printf("%18s%7s%7s%7s%7s%7s\n","Pupil's name","Math.","Phys.","Geog.","Lang.","Amount");
for(i=0;i<4;i++)
    { printf("%d%s",i+1,".");
      printf("%16s",str_i[i].name);
      printf("%6d",str_i[i].mark[0]);
      printf("%7d",str_i[i].mark[1]);
      printf("%7d",str_i[i].mark[2]);
      printf("%7d",str_i[i].mark[3]);
      printf("%7d\n",str_i[i].mark[4]);
    }
  getch();
  return 0;
}


--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
oshilan
Дата 21.3.2010, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 21.3.2010

Репутация: нет
Всего: 0



Большое спасибо! Но я работаю с BorlandC++, а он не дружит с algorithm. Но это я виноват, что не так уточнил вначале.
Теперь у меня 2 вопроса:
1. Можно ли подружить BorlandC++ с библиотекой algorithm?
2. Кто-нибудь может решить эту задачу, например, методом пузырька?
PM MAIL   Вверх
Ozerich
Дата 21.3.2010, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 2.8.2009
Где: Минск, Беларусь

Репутация: 4
Всего: 5



Код

#include <iostream>
#include <stdio.h>
#include <conio.h>

using namespace std;
struct str
{ 
    char name[16];
    int mark[5];
} str_i[4];

void sort()
{
    int used[4];
    str res[4];
    int mi,mii;
    for(int i = 0; i < 4; i++)
        used[i] = 0;
    for(int i = 0; i < 4; i++)
    {
        mi = -1;
        for(int j = 0; j < 4; j++)
            if(!used[j] && str_i[j].mark[4] > mi)
            {
                mi = str_i[j].mark[4];
                mii = j;
            }
        res[i] = str_i[mii];
        used[mii] = 1;
    }
    for(int i = 0; i < 4; i++)
        str_i[i] = res[i];


    
}

int main()
{ 
  int i, n=1;
  for(i=0;i<4;i++)
    { cout<<"Enter name of the "<<n<<"-st pupil: ";
      cin>>str_i[i].name;
      cout<<"Marks:"<<endl;
      cout<<"Math.: "; cin>>str_i[i].mark[0];
      cout<<"Phys.: "; cin>>str_i[i].mark[1];
      cout<<"Geog.: "; cin>>str_i[i].mark[2];
      cout<<"Lang.: "; cin>>str_i[i].mark[3];
      cout<<endl;
      n++;
    }
  for(i=0;i<4;i++)
    str_i[i].mark[4]=str_i[i].mark[0]+str_i[i].mark[1]+str_i[i].mark[2]+str_i[i].mark[3];
  sort();
  printf("%18s%7s%7s%7s%7s%7s\n","Pupil's name","Math.","Phys.","Geog.","Lang.","Amount");
for(i=0;i<4;i++)
    { printf("%d%s",i+1,".");
      printf("%16s",str_i[i].name);
      printf("%6d",str_i[i].mark[0]);
      printf("%7d",str_i[i].mark[1]);
      printf("%7d",str_i[i].mark[2]);
      printf("%7d",str_i[i].mark[3]);
      printf("%7d\n",str_i[i].mark[4]);
    }
  getch();
  return 0;
}

--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
oshilan
Дата 21.3.2010, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 21.3.2010

Репутация: нет
Всего: 0



2 Ozerich: Быстро и оперативно, и правильно! Огромное спасибо! Дал бы плюс, но мал ещё ;)
PM MAIL   Вверх
azesmcar
Дата 21.3.2010, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(oshilan @  21.3.2010,  13:09 Найти цитируемый пост)
Дал бы плюс, но мал ещё ;) 

сделано
PM   Вверх
bsa
Дата 22.3.2010, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
oshilan, если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.