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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> cортировка студентов с++, сортировать по группе 
:(
    Опции темы
ess399
Дата 18.11.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

Репутация: -1
Всего: -2



Уважаемые программисты!!! помогите пожалуйста дописать программу. я пока еще чайник .

"Имеем в текстовом файле список студентов: фамилия, имя ,шифр группы ,оценки по экзаменам.
сформировать список по фамилии ,имени ,шифру группы и среднему балу .вывести две таблицы: данные и результат"
часть программы сделана ,а сортировать по шифру группы и среднему баллу неполучаеться.

мой код а сортировку незнаю как делать
#include <iostream.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
#include <fstream.h>
struct student{
  char name[50];
 struct{
    char egzamen[24];
}
      egz[10];
      double sredn;
} stud_[3]={
{"  :  Stepanov  :   Mihail :  ÒÈ08 ",{"matematika", "programirovanije", "statistika", "filosofija", "ruskij jazik"}, 0.0},
{"  :  Dmitrijev  :   Maksim  :  ÒÈ08" , {"matematika", "programirovanije", "statistika", "filosofija", "ruskij jazik"}, 0.0},
{"  :  Strelcov  :  Aleksandr : ÒÈ08" , {"matematika", "programirovanije", "statistika", "filosofija", "ruskij jazik"}, 0.0},

 };

int main(){
      ofstream book_file("BOOKINFO.DAT");
 int kol, i;
 cout<<"ñêîëüêî áóäåò ýêçàìåíîâ:";
   book_file <<"////////////////////////////////////////////////////////////////////////" <<endl; 
 
  book_file <<"srednij bal  : imia    :   familija      :  grupa :    rezultat.       " <<endl;  
  
  
  book_file <<"........    .......       .........        ......       .......        : " <<endl;
  
  
  
 cin>>kol;
 if(kol>5){
  return 0;
 }
 int ran; 
 double all;
  for(int p=0; p<3; p++){
   i=0; all=0;
   cout <<"vvesti ocenki po ekzamenam"<<" "<< stud_[p].name<<endl;
  
 
  while(i!=kol){
  cout <<stud_[p].egz[i].egzamen<<":";
   cin>>ran;
   i++;
   all+=ran;
  }
  stud_[p].sredn=(all/kol);
 }
 for(i=0; i<3; i++){
          
    
        
 book_file <<"ocenka"<<" "<<stud_[i].name<<" :     = " <<stud_[i].sredn<<endl;
 
book_file << "........................................................................:\n"<<endl;

 }
 getch();
 return 0;

}

пример сортировки 
#include <vcl.h>
#pragma hdrstop

/* струтура данных
        групировать с qsort
                и поиск  bsearch ir lfind
                                        
                                         воспользоваться sort_function masyv?
                                                        работа с файлами*/
//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <vcl.h>
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

const N=100;
const npav=20;
struct BOOK{
char pav[npav];
int god;
float cena;
};
void fun(BOOK *,int);

int sort_function_naz(const void *, const void *);
int sort_function_god(const void *, const void *);
int sort_function_cena(const void *, const void *);
int sort_function_all(const void *, const void *);

int main(int argc, char* argv[])
{
BOOK *x;
x=new BOOK[N];
int n;
cout <<"vvesti spisok:";
cin>>n;
cout <<"vvesti naz. god cena:";
for(int i=0;i<n;i++)
         cin>>(x[i].naz)
            >>(x[i].god)
            >>(x[i].cena);
fun(x,n);
delete x;
cin>>n;
        return 0;
}
void fun(BOOK *y,int m)
{
char *msg[]={"запись сгрупировать по названию:\n",
"запись сгрупирован по году:\n",
"запись сгрупирован по цене:\n",
"запись несгрупирована:\n"};
char *msg1[]={"запись по названию ненайден!!!\n",
"запись по году ненайден!!!\n",
"запись по цене ненайден!!!\n",
"запись  по всему полю ненайден!!!\n"};
char *msg2[]={"запиь по названию найден!\n",
"запись по году найден!\n",
"запись по цене найден!\n",
"запись по вему полю найден!\n"};
BOOK *z=y;
int jm;
int (*functor[4])( const void *, const void *)={sort_function_naz,
sort_function_god, sort_function_cena, sort_function_all};

size_t index=m;
BOOK  xx, *work;
BOOK *yf=new BOOK[m];
int *x;
FILE *fl=fopen("rez.txt","w");
for(int j=0;j<4;j++)
   {
y=z;
//Групировка
if (j<3) qsort(y,m,sizeof(BOOK),functor[j]);
cout<<msg[j];
for(int i=0;i<m;i++)
{
         cout<<y[i].naz<<" "
             <<y[i].god<<" "
             <<y[i].cena<<"\n";


/*
//отдельную запись записываем в файл
fwrite(y+i,sizeof(BOOK),1,fl);
fputs("\n",fl);
*/
}
//ве записи записываем в файл
fwrite(y,sizeof(BOOK),m,fl);
fputs("\n",fl);





//поиск
cout<<"ввести запись:";
cin>>xx.naz>>xx.god>>xx.cena;
work=y;
if (j==3) x=(int *)lfind(&xx, work, &index, sizeof(BOOK),functor[j]);
else x=(int *)bsearch(&xx, work, index, sizeof(BOOK),functor[j]);
if(x==NULL)
cout<<msg1[j];
else
cout<<msg2[j];
   }
   fclose(fl);
}
int sort_function_pav(const void *a,const void *b)
{
   BOOK *aa=(BOOK *)a;
   BOOK *bb=(BOOK *)b;
   return(strcmp(aa->naz,bb->naz));
}

int sort_function_god(const void *a, const void *b)
{
   BOOK *aa=(BOOK *)a;
   BOOK *bb=(BOOK *)b;
   return((aa->god)-(bb->god));
}

int sort_function_cena(const void *a, const void *b)
{
   BOOK *aa=(BOOK *)a;
   BOOK *bb=(BOOK *)b;
   return((aa->cena)-(bb->cena));
}

int sort_function_all(const void *a,const void *b)
{
   BOOK *aa=(BOOK *)a;
   BOOK *bb=(BOOK *)b;
   return((strcmp(aa->pav,bb->pav))+((aa->god)-(bb->god))
   +((aa->cena)-(bb->cena)));
}

PM MAIL   Вверх
Mephisto
Дата 18.11.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

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



ess399, попробуй воспользоваться тегом "Код", чтоб что-то можно было прочитать. 
Да и русские буквы у тебя потерялись. Когда нажимаешь копировать из среды убедись что включена русская раскладка, затем вставляй. Русские буквы не потеряешь!
PM   Вверх
ess399
Дата 19.11.2009, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

Репутация: -1
Всего: -2



только номера групы нехватает .

#include <iostream.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
struct student{
  char name[50];
  struct {
    char predmet[24];
     } predmets[5];
   double sr;
} stud_[3]={
   {"Ivan Petrov-Kozimirov", {"Mathematics", "Russian", "Physics", "Geometry", "Computer science"}, 0.0},
   {"Vitalik Ohlabistin-Zakidnoy", {"Mathematics", "Russian", "Physics", "Geometry", "Computer science"}, 0.0},
   {"Egor Orlov-Zaletalov", {"Mathematics", "Russian", "Physics", "Geometry", "Computer science"}, 0.0},
 };
int main(){
 int kol, i;
 cout<<"vvesti kol predmetov:";
 cin>>kol;
 if(kol>5){
  return 0;
 }
 int ran;
 double all;
  for(int p=0; p<3; p++){
   i=0; all=0;
   cout<<"Enter to ocenka for"<<" "<< stud_[p].name <<endl;
  while(i!=kol){
   cout<<stud_[p].predmets[i].predmet<<":";
   cin>>ran;
   i++;
   all+=ran;
  }
  stud_[p].sr=(all/kol);
 }
 for(i=0; i<3; i++){
  cout<<"pazymiu vidurki"<<" "<<stud_[i].name<<"="<<stud_[i].sr<<endl;
 }
 getch();
 return 0;
}
PM MAIL   Вверх
mes
Дата 19.11.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 144
Всего: 250



ess399, Вы не соизвоили прочитать одну строчку:
Цитата(Mephisto @  18.11.2009,  16:53 Найти цитируемый пост)
ess399, попробуй воспользоваться тегом "Код", чтоб что-то можно было прочитать. 

и выбрать время чтоб исправить недочеты, и думаете что кто то будет  ломать глаза и тратить время на разбор неоформленной кучи кода ?




--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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