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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2014, 21:59   #1
MyLifeStyle
Пользователь
 
Регистрация: 29.04.2014
Сообщений: 25
По умолчанию Сортировка массива структур

Помогите с сортировкой(имён).

Долго мучился но что то не получаться.
Функция
Код C++
1
void BubbleSort
Функция не работает!Помогите с кодом.


Код:
#include <iostream>
#include <fstream>   
#include <string>
 
using namespace std;
struct Student{
    char Name_Stu [20];
    char Surname_Stu [20];
    char Code_Stu [10];
    char Groupe_Stu[10];
    
};
 
void serch_Student();
void see_Student();
void add_Student();
void Remove();
void Sort();      
int r;
 
int main()
 
{ setlocale(LC_ALL, "Russian");
{
system ("Pause");
add_Student();
see_Student();
serch_Student();
add_Student();
Remove();   
Sort();
}
system ("Pause");
return 0;
}
 
void add_Student()
 
{cout<<" Ведите количество студентов: ";
int r;
cin>>r;
Student * Students= new Student[r];
memset(Students,0,sizeof(Student)*r);
for(int i=0; i<r; i++)
 
{cout<<"---------Студент под номером----------["<<i+1<<"] "<<endl;
cout<<"\t1.Имя: ";
cin>>Students[i].Name_Stu;
cout<<"\t2.Фамилия: ";
cin>>Students[i].Surname_Stu;
cout<<"\t3.Код: ";
cin>>Students[i].Code_Stu;
cout<<"\t4.Група: ";
cin>>Students[i].Groupe_Stu;
 
}
 
ofstream fo("Students.txt", ios::app|ios::binary);
if(!fo)
fo.open("Students.txt", ios::out|ios::binary);
for(int i=0; i<r; i++)
fo.write((char*)&Students[i], sizeof(Student));
cout<<"Инфармация балы записана (Students.txt)\n\n";
fo.close();
delete [] Students;
system("Pause");
}
void see_Student()
{
ifstream fi("Students.txt", ios::binary);
if(!fi) cout<<"Error with file\n";
else {fi. seekg(0,ios::end);
int size=fi.tellg();
size=size/sizeof(Student);
Student * Students_1= new Student[size];
fi.seekg(0, ios::beg);
fi.read ((char*)Students_1,sizeof(Student)*size);
for(int i=0; i<size; i++)
cout<<"\n\tИмя студента: "<<Students_1[i].Name_Stu<<"\n\tФамилия студента: "<<Students_1[i].Surname_Stu
<<"\n\tКод: "<<Students_1[i].Code_Stu<<"\n\tГрупа: "<<Students_1[i].Groupe_Stu<<"\n";
delete [] Students_1;
system("Pause");
}}
void serch_Student()
    
{
ifstream fi("Students.txt", ios::binary);
if(!fi) cout<<"Error with file\n";
else {fi. seekg(0,ios::end);
int size=fi.tellg();
size=size/sizeof(Student);
Student * Student_1= new Student[size];
fi.seekg(0, ios::beg);
fi.read ((char*)Student_1,sizeof(Student)*size);
Student findStudent;
cout<<"---------Name_Student----------"<<endl;
cout<<"\t1.Имя студента: ";
cin>>findStudent.Name_Stu;
for(int i=0; i < size; i++)
{
if(!strncmp(Student_1[i].Name_Stu, findStudent.Name_Stu,sizeof(findStudent.Name_Stu)/sizeof(char)))
{
 
cout<<"\t| Имя студента:"<<Student_1[i].Name_Stu<<;
cout<<"\t| Фамилия студента:"<<Student_1[i].Surname_Stu;
cout<<"\t| Код:"<<Student_1[i].Code_Stu;
cout<<"\t| Група:"<<Student_1[i].Groupe_Stu;
 
 
 
}}}
system("pause");
}
void Remove(){
int del;
cout << "Enter the number(remove)\n";
cin>>del; 
ifstream fi("Students.txt", ios::binary);
if(!fi) 
cout<<"Error with file\n";
else 
{
fi. seekg(0,ios::end);
int size=fi.tellg();
size=size/sizeof(Student);
Student * Students_1= new Student[size];
 
 
fi.seekg(0, ios::beg);
fi.read ((char*)Students_1,sizeof(Student)*size);
fi.close();
ofstream fo("Students.txt", ios::binary);
for(int i = 0; i < size; i++)
{
if(i != del)
fo.write((char*)&Students_1[i], sizeof(Student));
}
cout<<"All information has been written in file Students.txt\n\n";
fo.close();
 
}
}
 
void Sort(struct Student Name_Stu[], int left, int right)
{
  int i, j;
  char *Student_2;
  struct Student temp;
 
  i = left; j = right;
  Student_2 = Name_Stu[(left+right)/2].NW;
 
  do {
    while((strcmp(Name_Stu[i].NW,Student_2) < 0) && (i < right)) i++;
    while((strcmp(Name_Stu[j].NW,Student_2) > 0) && (j > left)) j--;
    if(i <= j) {
      temp = Name_Stu[i];
      Name_Stu[i] = Name_Stu[j];
      Name_Stu[j] = temp;
      i++; j--;
    }
  } while(i <= j);
 
  if(left < j) Sort(Name_Stu, left, j);
  if(i < right) Sort(Name_Stu, i, right);
}

Последний раз редактировалось Stilet; 14.05.2014 в 08:10.
MyLifeStyle вне форума Ответить с цитированием
Старый 08.05.2014, 17:12   #2
MyLifeStyle
Пользователь
 
Регистрация: 29.04.2014
Сообщений: 25
По умолчанию

Помогите (
MyLifeStyle вне форума Ответить с цитированием
Старый 14.05.2014, 01:16   #3
pochti_poluchilos
Пользователь
 
Регистрация: 04.12.2011
Сообщений: 14
По умолчанию

В классе student допиши char NW[10];
cout<<"\t| Имя студента:"<<Student_1[i].Name_Stu<<; удали после Name_Stu "<<"
там еще есть ошибки, но пока не могу найти...
pochti_poluchilos вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива структур fonRocki Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 24.04.2012 23:00
Сортировка массива структур ZevS13 Visual C++ 0 14.04.2011 23:42
Си : сортировка массива структур Чубрик Общие вопросы C/C++ 5 23.01.2010 22:02
Сортировка массива структур. nec117 Общие вопросы C/C++ 5 22.02.2009 18:01
Сортировка массива структур arturka Помощь студентам 1 21.06.2008 14:15