Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 158312 Details for
Bug 246394
Auto detect encoding: CP-1251 is taken as KOI8-R
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
cp-1251 encoded file
Laba.cpp (text/x-c++src), 9.22 KB, created by
The Source
on 2007-07-01 18:02:44 UTC
(
hide
)
Description:
cp-1251 encoded file
Filename:
MIME Type:
Creator:
The Source
Created:
2007-07-01 18:02:44 UTC
Size:
9.22 KB
patch
obsolete
>/* >Íàïèñàòü ïðîãðàììó äëÿ ðàáîòû ñ ïðîñìàòðèâàåìîé òàáëèöåé ïî çàïðîñàì îïåðàòîðà. >Ïðîñìàòðèâàåìàÿ òàáëèöà îðãàíèçîâàíà ñïèñêîì, êàæäûé ýëåìåíò ñïèñêà èìååò ñëåäóþùóþ >ñòðóêòóðó: > struct Item > { > int key; //êëþ÷ ýëåìåíòà > char *info; //óêàçàòåëü íà èíôîðìàöèþ > Item *next; //óêàçàòåëü íà ñëåäóþùèé ýëåìåíò > }; >Ïðåäóñìîòðåòü ñëåäóþùèå îïåðàöèè: >- âêëþ÷åíèå íîâîãî ýëåìåíòà â òàáëèöó ïðè óñëîâèè, ÷òî â òàáëèöå ìîãóò íàõîäèòñÿ äâà > ýëåìåíòà ñ îäèíàêîâûìè êëþ÷àìè ; >- ïîèñê â òàáëèöå ýëåìåíòà, çàäàíîãî ñâîèì êëþ÷îì.  ñëó÷àå, åñëè çàïðîøåííûå > ýëåìåíòû â òàáëèöå îòñóòñòâóþò, âûâåñòè íà ýêðàí ñîîáùåíèå îá îøèáêå; >- "÷èñòêà òàáëèöû" (èëè ðåîðãàíèçàöèÿ òàáëèöû) - óäàëåíèå èç òàáëèöû ýëåìåíòîâ è âûâîä ñîäåðæèìîãî òàáëèöû íà ýêðàí. > > >*/ >//----------------------------------------------------------------------------------------- > >#include <iostream.h> >#include <ctype.h> >#include <string.h> > >struct item >{ > int key; //êëþ÷ ýëåìåíòà > char *info; //óêàçàòåëü íà èíôîðìàöèþ > item *next; //óêàçàòåëü íà ñëåäóþùèé ýëåìåíò >}; //struct > >//----------------------------------------------------------------------------------------- > >item *table=NULL; >int n=1; > >//----------------------------------------------------------------------------------------- >//Äèàëîãîâàÿ ôóíêöèÿ >void d_insert(), //âñòàâèòü > d_find_all(), //íàéòè â òàáëèöå âñå ýëåìåíòû, çàäàííûå ñâîèì êëþ÷îì > d_clear(); /*"÷èñòêà òàáëèöû" (èëè ðåîðãàíèçàöèÿ òàáëèöû) - óäàëåíèå èç > òàáëèöû ýëåìåíòîâ è âûâîä > ñîäåðæèìîãî òàáëèöû íà ýêðàí.*/ > >const int sz=81; //Îïðåäåëåíèå äëèíû ñòðîêè äëÿ ââîäà (80 ñèìâîëîâ + ñèìâîë êîíöà ñòðîêè) > >//----------------------------------------------------------------------------------------- >/* > > Ñèòóàöèÿ rc Êîä îïåðàöèè > - OK - 0; - äîáàâëåíèå ýëåìåòà - 0; > - êëþ÷ íå íàéäåí - 1; - ïîèñê ïî êëþ÷ó - 1; > - êëþ÷ óæå åñòü - 2; > - ïåðåïîëíåíèå òàáëèöû - 3; > - òàáëèöà ïóñòà - 4; > - îøèáêà - 5; >*/ > >//----------------------------------------------------------------------------------------- > >//Ìàññèâ ñîîáùåíèé îá îøèáêå >char *errors[]= >{ > " OK", > " Key not found", > " Duplicate key", > " Overflow", > " Table empty", > " Error" >}; //*error > >//----------------------------------------------------------------------------------------- > >char *msg[]= >{ > " 1. Insert new item", > " 2. Find all item (require enter key)", > " 3. Clear table (delete all versions, except for the last)", > " 4. Show table", > " 0. Exit", > "", > "Information must be less or equal 80 char (spesial for)" >}; //*msg[] > >const int N=sizeof(msg)/sizeof(msg[0]); //Îïðåäåëÿåò ñêîëüêî áàéòîâ ïîä ìàññèâ msg > >//----------------------------------------------------------------------------------------- > >//Ïðîòîòèïû ôóíêöèé >int t_insert(int, char*); >int adding(item *&, int, char *); >int t_find(item *&, int, int); >int t_show(item *, int &); //Âûâîä íà ýêðàí âñåõ çíà÷åíèé òàáëèöû >void printstring(char *); //Âûâîä èíôîðìàöèè íà ýêðàí >int t_clear(); > >//----------------------------------------------------------------------------------------- > >void d_insert() >{ > int key; //Ïîëå êëþ÷à > char str[sz]; //ïîëå èíôîðìàöèè > int rc; //Êîä çàâåðøåíèÿ > cout << "Enter key: "; > cin >> key; > cin.ignore(sz,'\n'); //Î÷èñòêà áóôåðà ââîäà, íåîáõîäèì ò.ê. ïîñëå êîìàíäû cin << rc > //â áóôåðå îñòà¸òñÿ êîä çàâåðøåíèÿ ââîäà ('\n') > cout << "Enter information: \n"; > cin.getline(str,sz); > rc=t_insert(key, str); > cout << endl << errors [rc] << endl; >} //d_insert() > >//----------------------------------------------------------------------------------------- > >int adding(item *&tbl, int key, char *str) >{ > tbl->key=key; > tbl->info=new char[strlen(str)+1]; > strcpy(tbl->info,str); > n++; > return 0; >} >//----------------------------------------------------------------------------------------- > >int t_insert(int key, char *str) >{ > item *tbl=table; > item *add; //Äîáàâëåíèå íîâîãî ýëåìåíòà > int rcode=t_find(tbl, key, 0); > switch(rcode) > { > case 1: //Òàáëèöà íå ïóñòà, êëþ÷ íå íàéäåí > { > add=new item; > adding(add, key, str); > add->next=table; > table=add; > return 0; >// n++; > } > case 2: //Êëþ÷ íàéäåí > { > add=new item; > adding(add, key, str); > add->next=table; > table=add; > return 0; >// n++; > } > case 4: //Òàáëèöà ïóñòà > { > table=new item; > adding(table, key, str); > table->next=NULL; > return 0; >// n++; > } > } //switch(rcode) > return 5; >} //t_insert > >//----------------------------------------------------------------------------------------- > >//Ïåðåáîð ýëåìåíòîâ â ôóíêöèè >int t_find(item *&tbl, int key, int op) >{ > int i=0; > int rc=1; //Êîä çàâåðøåíèÿ > item *t=NULL, *tmp=NULL; > if (tbl==NULL) > return 4; > do > { > switch(op) //Êîä îïåðàöèè > { > case 0: > { > if (key==tbl->key) > return 2; > } //case 0 > case 1: > { > > if (tbl->key==key) > { > t_show(tbl, i); > rc=0; > } //if (tbl->key==key) > > else > { > if ((tbl->key==key)) > { > t_show(tbl, i); > rc=0; > } //if ((tbl->key==key) && (tbl->release==rel)) > } //else > } //case 1 > case 2: > { > > if (tbl->key==key) > { > tmp=new item; > adding(tmp, tbl->key,tbl->info); > if (t==NULL) > { > tmp->next=NULL; > t=tmp; > } > else > { > tmp->next=t; > t=tmp; > } > rc=0; > } > > else > { > if ((tbl->key==key)) > { > tmp=new item; > adding(tmp, tbl->key,tbl->info); > if (t==NULL) > { > tmp->next=NULL; > t=tmp; > } > else > { > tmp->next=t; > t=tmp; > } > rc=0; > } //if ((tbl->key==key) > } > } //case > } //switch(op) > tbl=tbl->next; > } ///do > while (tbl); > tbl=t; > return rc; >} //t_find(); > >//----------------------------------------------------------------------------------------- > >void d_show() >{ > int i=0; > item *tbl=table; > do > { > t_show(tbl, i); > tbl=tbl->next; > } > while (tbl); >} //d_find_all() > >//----------------------------------------------------------------------------------------- > >void printstring(char *s) >{ > int i=0; > if (s!=NULL){ > do > { > cout << *(s+i); > i++; > } > while (*(s+i)!='\0'); > } >} //void printstring(char *s) > >//----------------------------------------------------------------------------------------- >//Âûâîä íà ýêðàí âñåõ ýëåìåíòîâ òàáëèöû >int t_show(item *tbl, int &i) >{ > if (tbl==NULL) > return 4; > i=i+1; > cout<<endl<<i<<". "; > cout<<" Key="<<tbl->key; > cout<<" Inf="; > printstring(tbl->info); > return 0; >} > >//----------------------------------------------------------------------------------------- >//Ïîèñê â òàáëèöå âñå ýëåìåíòû, çàäàííûå ñâîèì êëþ÷îì >void d_find_all() >{ > item *tbl=table; > int key; //Ïîëå êëþ÷à > int rc; //Êîä çàâåðøåíèÿ > cout << "Enter key: "; > cin >> key; > if (tbl==NULL) > rc=4; > else > rc=t_find(tbl, key, 1); > cout << endl << errors [rc] << endl; >} //d_find_all() > >//----------------------------------------------------------------------------------------- > >void d_clear() //"÷èñòêà òàáëèöû" (èëè ðåîðãàíèçàöèÿ òàáëèöû) - óäàëåíèå èç òàáëèöû âñåõ > //âåðñèé ýëåìåíòîâ, êðîìå ïîñëåäíèõ, è âûâîä ñîäåðæèìîãî òàáëèöû íà ýêðàí. >{ > int rc; //Êîä çàâåðøåíèÿ > rc=t_clear(); > cout << endl << errors [rc] << endl; >} //d_clear() > >//----------------------------------------------------------------------------------------- > >int t_clear() >{ > int rc, a; //a-ïðèçíàê íàëè÷èÿ îáðàáàòûâàåìîãî êëþ÷à â òàáëèöå, > //åñëè a=0 - ýëåìåíòà ñ òàêèì êëþ÷îì â î÷èùåííîé òàáëèöå íåò > int k, i=0; > item *tmp, *t=table, *t1,*add, *clear=NULL; > if (t==NULL) > return 4; > do > { > a=0; >//Ïðîâåðêà íà íàëè÷èå òàêîãî æå êëþ÷à > k=t->key; > tmp=clear; > while (tmp) > { > if (tmp->key==k) > a=1; > tmp=tmp->next; > } > if (a==0) > { >//Ïîäãîòîâèòåëüíûå îïåðàöèè > t1=table; > rc=t_find(t1, k, 2); > tmp=t1; > >//Ñîçäàíèå î÷èùåííîãî ñïèñêà > t1=table; > rc=t_find(t1, k, 2); > tmp=t1; > add=new item; > adding(add, k, tmp->info); > if (clear==NULL) > { > add->next=NULL; > clear=add; > } > else > { > adding(add, k, tmp->info); > add->next=clear; > clear=add; > } > } //if (a==0) >//Ïåðåõîä ê ñëåäóþùåìó ýëåìåíòó òàáëèöû > t=t->next; > } > while (t); >//Ñîõðàíÿåì î÷èùåííóþ òàáëèöó, êàê îñíîâíóþ > table=clear; >//Âûâîäèì íà ýêðàí > tmp=table; > while (tmp) > { > t_show(tmp, i); > tmp=tmp->next; > } > return rc; >} > >//----------------------------------------------------------------------------------------- > >int menu() >{ > int ans; > char *promt=""; > do > { > cout << endl << promt; > for (int i=0;i<N;i++) > cout << msg [i] << endl; > cout << endl << "Enter choise: "; > cin >> ans; > promt="You are wrong. Repeate! \n"; > } > while (ans<0 || ans>=N); > cin.ignore(sz,'\n'); > return ans; >} //menu() > >//----------------------------------------------------------------------------------------- > >void (*fptr[])()= //ìàññèâ óêàçàòåëåé íà ôóíêöèè >{ > NULL, d_insert, d_find_all, d_clear, d_show >}; //(*fptr[])() > >//----------------------------------------------------------------------------------------- > >int main() >{ > int rc; > while (rc=menu()) //Âûïîëíÿåì òðåáóåìóþ îïåðàöèþ > fptr[rc](); > cout << " That's all. Bye" << endl; > return 0; >} //main()
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 246394
: 158312