![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ess399 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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))); } |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
ess399, попробуй воспользоваться тегом "Код", чтоб что-то можно было прочитать.
Да и русские буквы у тебя потерялись. Когда нажимаешь копировать из среды убедись что включена русская раскладка, затем вставляй. Русские буквы не потеряешь! |
|||
|
||||
| ess399 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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; } |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |