Главная Рефераты по рекламе Рефераты по физике Рефераты по философии Рефераты по финансам Рефераты по химии Рефераты по хозяйственному праву Рефераты по цифровым устройствам Рефераты по экологическому праву Рефераты по экономико-математическому моделированию Рефераты по экономической географии Рефераты по экономической теории Рефераты по этике Рефераты по юриспруденции Рефераты по языковедению Рефераты по юридическим наукам Рефераты по истории Рефераты по компьютерным наукам Рефераты по медицинским наукам Рефераты по финансовым наукам Рефераты по управленческим наукам Психология и педагогика Промышленность производство Биология и химия Языкознание филология Издательское дело и полиграфия Рефераты по краеведению и этнографии Рефераты по религии и мифологии Рефераты по медицине Рефераты по сексологии Рефераты по информатике программированию Краткое содержание произведений |
Реферат: Программирование на С++Реферат: Программирование на С++МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ. МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННО-ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ им. К.Э. ЦИОЛКОВКОГО КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ Курсовая работа второго курса второго семестра. Руководитель: Чернадский Дата сдачи: _____________ Подпись: _____________Студент: Лицентов Д.Б. Группа: 3ИТ-2-26 Москва1998 Постановка задачи. Необходимо реализовать список вида:
Техническое описание программы. В программе предусмотрена работа со списком, которая включает в себя:
Спецификация программы. Ввод данных в программу может осуществляться двумя спосабами: ввод с клавиатуры или из файла. Для работы с файлом необходимо на соответствующий запрос программы ввести имя файла, из которого будут взяты данные для построения списка. Для нормальной работы программы требуется PC совместимый компьютер и компилятор Borland 3.01 и выше. При использование иного сочетая характеристик системы на которой будет тестироваться программа возможны некоторые расхождения с результатами теста, но в основном ничего страшного произойти не должно. Текст программы. #include #include class List {struct Tree {int Body; Tree *LP; Tree *RP; Tree(int Bdy=0) {Body=Bdy; LP=NULL; RP=NULL;} ~Tree() {Body=0; LP=NULL; RP=NULL;} }; public: List(int Digit=0); Tree *Root; List *LNext; List *LPrev; }; List::List(int Digit) {Root=NULL; for (int i=Digit*10; i {Tree *PTree; PTree=new Tree(i); PTree->LP=NULL; PTree->RP=NULL; if (Root==NULL) Root=PTree; else {Tree *PTree1=Root; do {if (PTree1->LP!=NULL) PTree1=PTree1->LP;} while (PTree1->LP!=NULL); PTree1->LP=PTree; PTree=NULL; PTree1=NULL; } } } class TreeWork : private List {public: void TreeWorkStart(); private: int ElementQuantity; int Mass; int i; List *BegP; List *PList; int MainMenu(); int Work(int Task); int MakeNewList(); int AddElements(); int PrintList(); void EraseList(); int DeleteElement(); int FindElement(); int SubMenu(); int SubWork(int Task); int SortByIncrease(); int SortByDecrease(); int SaveList(); int OpenList(); protected: void GoThroughTree(Tree *L); void Erase(Tree *L); }; int TreeWork::MainMenu()
cout int TreeWork::SubMenu() choice: "; int TreeWork::SubWork(int Task) {switch (Task) {case 1 : SortByIncrease(); break; //Increase case 2 : SortByDecrease(); break; //Decrease } return 0; } int TreeWork::Work(int Task) {switch (Task) {case 1 : ElementQuantity=MakeNewList(); break; //Make New List case 2 : ElementQuantity+=AddElements(); break; //Add Element case 3 : PrintList(); break; //Print List case 4 : DeleteElement(); break; //Delete Element case 5 : SaveList(); break; //Save List case 6 : ElementQuantity=0; EraseList(); break; //Erase List case 7 : OpenList(); break; //Open File case 8 : FindElement(); break; //Find Element case 9 : SubWork(SubMenu()); break; //Sort List case 0 : EraseList(); return -1; //Exit } return 0; } void TreeWork::TreeWorkStart() {ElementQuantity=0; do {} while (Work(MainMenu())!=-1); } int TreeWork::MakeNewList() {if (BegP!=NULL) {cout int Quant; cout do {cin>>Quant; if (Quant cout } while (Quant for (int i=0; i {cout int Digit; cin>>Digit; PList=new List(Digit); if (BegP==NULL) {BegP=PList; BegP->LNext=BegP; BegP->LPrev=BegP; PList=NULL;} else {List *PList1=BegP->LPrev; if (PList1==BegP) {BegP->LNext=PList; BegP->LPrev=PList; PList->LNext=BegP; PList->LPrev=BegP; PList=NULL; PList1=NULL;} else {BegP->LPrev=PList; PList1->LNext=PList; PList->LNext=BegP; PList->LPrev=PList1; PList=NULL; PList1=NULL;} } } return Quant; } int TreeWork::AddElements() {if (BegP==NULL) {MakeNewList(); return 0;} int Quant; cout do {cin>>Quant; if (Quant cout } while (Quant for (int i=0; i {cout int Digit; cin>>Digit; PList=new List(Digit); List *PList1=BegP->LPrev; if (PList1==BegP) {BegP->LNext=PList; BegP->LPrev=PList; PList->LPrev=BegP; PList->LNext=BegP; PList1=NULL; PList=NULL;} else {BegP->LPrev=PList; PList->LNext=BegP; PList->LPrev=PList1; PList1->LNext=PList; PList=NULL; PList1=NULL;} } return Quant; } int TreeWork::PrintList() {if (BegP==NULL) {cout cout PList=BegP; int i=1; do {cout GoThroughTree(PList->Root); cout i++; PList=PList->LNext;} while (PList!=BegP); return 0; } void TreeWork::GoThroughTree(Tree *L) {Tree *PL=L, *PL1; if (PL->LP!=NULL) {PL1=PL; PL=PL->LP; coutBodyBody GoThroughTree(PL);} if (PL->RP!=NULL) {PL1=PL; PL=PL->RP; coutBodyBody GoThroughTree(PL);} } void TreeWork::Erase(Tree *L) {Tree *PL=L; if (PL->LP!=NULL) {PL=PL->LP; Erase(PL);} if (PL->RP!=NULL) {PL=PL->RP; Erase(PL);} PL->LP=NULL; PL->RP=NULL; } void TreeWork::EraseList() {if (BegP!=NULL) {do {List *PList1=BegP->LNext; PList=PList1->LNext; BegP->LNext=PList; PList->LPrev=BegP; Erase(PList1->Root); delete [] PList1; } while (PList!=BegP); BegP=NULL; PList=NULL; } } int TreeWork::DeleteElement() {cout int Number=0; cin>>Number; if (Number>ElementQuantity || Number {cout Number--; PList=BegP; for (int i=0; i PList=PList->LNext; List *PList1=PList->LNext, *PList2=PList->LPrev; if (PList==BegP) {PList1->LPrev=PList2; PList2->LNext=PList1; PList->LNext=NULL; PList->LPrev=NULL; delete [] PList; BegP=PList1; PList1=NULL; PList2=NULL;} else {PList1->LPrev=PList2; PList2->LNext=PList1; PList->LNext=NULL; PList->LPrev=NULL; delete [] PList; PList1=NULL; PList2=NULL;} ElementQuantity--; return 0; } int TreeWork::FindElement() {cout int Number=0; cin>>Number; PList=BegP; do {Tree *PT=PList->Root; if (Number>PT->Body && Number Body+10) {cout GoThroughTree(PList->Root); PList=NULL; cout PList=PList->LNext; } while (PList!=BegP); cout PList=NULL; return -1; } int TreeWork::SortByIncrease() { if(BegP==NULL) {cout List *PList1=BegP; PList=BegP; do {do {if (PList1->Root->Body>PList->Root->Body) {Tree *PT; PT=PList1->Root; PList1->Root=PList->Root; PList->Root=PT; PT=NULL;} PList1=PList1->LNext; } while (PList1!=BegP); PList=PList->LNext; } while (PList!=BegP); return 0; } int TreeWork::SortByDecrease() { if(BegP==NULL) {cout List *PList1=BegP; PList=BegP; do {do {if (PList1->Root->Body Root->Body) {Tree *PT; PT=PList1->Root; PList1->Root=PList->Root; PList->Root=PT; PT=NULL;} PList1=PList1->LNext; } while (PList1!=BegP); PList=PList->LNext; } while (PList!=BegP); return 0; } int TreeWork::SaveList() {if (BegP==NULL) {cout ofstream F; char *FileName=new char[25]; cout>FileName; F.open(FileName); PList=BegP; do {i=0; Mass=PList->Root->Body; PList=PList->LNext; if (PList!=BegP) F else F } while (PList!=BegP); F.close(); delete [] FileName; return 0; } int TreeWork::OpenList() {if (BegP!=NULL) {cout cout char *FileName=new char[25]; cin>>FileName; ifstream f; ElementQuantity=0; f.open(FileName); char Next; Next=f.peek(); while (Next!=EOF) { f>>Mass; PList=new List(Mass/10); if (BegP==NULL) {BegP=PList; BegP->LNext=BegP; BegP->LPrev=BegP; PList=NULL;} else {List *PList1=BegP->LPrev; if (PList1==BegP) {BegP->LNext=PList; BegP->LPrev=PList; PList->LNext=BegP; PList->LPrev=BegP; PList=NULL; PList1=NULL;} else {BegP->LPrev=PList; PList1->LNext=PList; PList->LNext=BegP; PList->LPrev=PList1; PList=NULL; PList1=NULL;} } Next=f.peek(); ElementQuantity++; } f.close(); delete [] FileName; return 0; } TreeWork TW; void main() {TW.TreeWorkStart();} Результаты работы программы. Начало работы:
Для создания списка выбираем пункт 1:
Вводим количество элементов в списке (предположим 4):
Успешное завершение ввода списка:
После ввода списка попадаем в главное меню где выбираем пункт добавления элемента :
Программа просит ввести количечтво элементов которое мы хотим добавит к нашему списку. Вводим 1 (для примера):
Далее происходит ввод списка как было описано выше. После удачного завершения добавления элемента в список мы вновь попадаем в главное меню, где выбираем пункт вывода списка на экран монитора:
Быстро проскользнув мимо Ваших глаз непонятные данные вы снова попадаете в главное меню, где выбираете пункт удаление элемента:
После чего элемент с введённым номером удален. После удачного завершения удаления элемента Вы снова попадаете в главное меню, где выбираете пункт сохранение списка:
После ввода имени файла данные из списка попадают на диск. И вы снова в главном меню, где выбираете удаление списка:
После чего все данные в списке безвозвратно умирают и Вы опять у главного списка, и выбираете Вы – открыть файл:
После чего ваш список оживает и … не надо «и» - лучше продолжим – Вы в главном меню и Вы выбираете найти элемент:
Вы вводите то что хотели найти и – находите в строчке ХХХХХ. Главное меню/Сортировка:
Ту мы можем сортировать по возрастанию или убыванию (ведь у человека всегда должен быть выбор!). После сортировки Главное меню/Выход! Всё программа завершилась успешно! А поскольку эти тесты никто не читает, то можно сказать что компьютеры в нашем институте сделаны из дуба. МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ. МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННО-ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ им. К.Э. ЦИОЛКОВКОГО КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ Лаботраторные работы второго курса второго семестра. Руководитель: Чернадский Дата сдачи: _____________ Подпись: _____________Студент: Лицентов Д.Б. Группа: 3ИТ-2-26 Москва1998 Лабораторная работа номер 1Задание: вывести значение функции sinh(x)/sin(x) и её производно на интервале от А до Б в десяти точках. Значения производной функции должно считаться двумя способами: первое прямым вычислением и второе в помощью рядов. Значение производной функции должно считаться до машинного нуля. Текст программы. #include #include double function(double x) { return sinh(x)/sin(x);} double dir(double x) { return (cosh(x)*sin(x)-cos(x)*sinh(x))/(sin(x)*sin(x)); } double *derives( double (*f) (double),//функция double *x,//массив значений иксов double k, //кол-во точек на интервале в которос берется производная double *D,//массив дельта double a,//граница отрезка double b)//граница отрезка { x = new double [10]; D = new double [10]; double *pr = new double[10]; double s = 0; for (int i=0;i { x[i] =s+a; s = (b-a)/k; a+=s; double d = s;//дельта int m = 0; double d_pred,f_pred,f0=0; do { d = d /2; f_pred = f0; f0 = (-f(x[i])+f(x[i]+d))/(d); m++; } while (((f0!=f_pred)&&(m D[i]=d_pred;//массив значений дельта pr[i]=f_pred;//значения производной cout
cout } return pr; } void main(void) { double a , b , *x , *D, (*f)(double)=function,*result; int i ; do { i=0; cout cin >> a; cout cin >> b; if (a>b) {cout i=1;} } while (i==1); result = derives(function,x,10,D,a,b);} Результаты работы.
Сперва прога просит ввести интервал. Далее вывоти плоды своей работы:
Лабороторная работа №2Задание: написать программу которая просит ввести строку, нарезает эту строку на подстроки и выводит их в обратном порядке. Текст программы. #include #include #include class stroka { char *ch; int len; friend int operator == (stroka & a , stroka & b); friend stroka* Friend0(stroka c); friend istream& operator >>(istream & in, stroka & a ); friend ostream& operator public : stroka(int N=80) {ch = new char [N]; ch[0]='\0'; } stroka (const char *s) { int j=0; while (ch[j++]); ch = new char[len]; ch[len] = '\0'; len--; for (int i=0;i ch[i]= s[i]; } void string1(void) { int j=0; while (ch[j++]); len = j-1; } ~stroka (){delete [] ch ;} } ; void main() { stroka s0,*s1; cin >> s0; s0.string1(); cout } stroka* Friend0(stroka c) { stroka *GodDame_Mother_F_1; stroka *GodDame_Mother_F_2; stroka *GodDame_Mother_F_; GodDame_Mother_F_1 = new stroka[c.len]; GodDame_Mother_F_2 = new stroka[c.len]; GodDame_Mother_F_ = new stroka[c.len]; int i=0,j=0,k=-1,h=0,g=0,f=0; for(i=0;i if(((c.ch[i]==' '||c.ch[i]=='.')&&((c.ch[i+1]!=' ')||(c.ch[i-1]!=' ')))){ //cout k++; //j=0; g=0; for(k;k if(c.ch[k]!=' '){ //cout GodDame_Mother_F_1[0].ch[j++]=c.ch[k]; GodDame_Mother_F_2[0].ch[g++]=c.ch[k]; } } h++; //for(f=0;f //cout int s,s1; for(int d=i;d s1=0; for(f=0;f s=0; if(GodDame_Mother_F_2[0].ch[f]!=c.ch[d+f]){ //cout s=1; } if(s!=0){s1=1;} } if(s1==0&&GodDame_Mother_F_2[0].ch[f+1]==' '){ cout for(int a=0;a } } } } return GodDame_Mother_F_; } int operator == (stroka & a,stroka & b) { int k=0; a.string1(); b.string1(); if (a.len!=b.len) k--; else for (int i=0;i if (a.ch[i]!=b.ch[i]) {k--;break;} return k; } istream &operator >>(istream &in,stroka & A) { cout in.getline(A.ch,80,'\n'); return in; } ostream &operator { out return out; } Результат работы.
Лабораторная работа №3Написать программу с наследованием классов и виртуальными функциями. Текст программы. #include class complex { public : double x,y; virtual void fun (int x=0, int y=0)=0; }; class What_the_hell_we_got: public complex { public : void fun (int x, int y) {cout }; class Plusssssss: public complex { public : void fun (int x=0, int y=0) {cout }; class Umnojinia : public What_the_hell_we_got {public : void fun (int x) {cout }; class xz : public Plusssssss , public Umnojinia {public : void fun (int x) {cout }; void main (void) { What_the_hell_we_got D, *pcom1 = &D; Plusssssss C2, *pc2 = &C2; int k,x; cin>>x>>k; pcom1 -> fun(k,x); pc2 -> fun (k,x); Umnojinia C3, *pc3 = & C3; pc3 -> fun (x); pcom1=pc3; pcom1->fun(k,x); xz C4, *pc4 = & C4; pc4 -> fun (x); } Результаты работы
Вводим два числа и смотрим что получится при сложение умножении или возведение в третью степень. |
|||||||||||||||||
|