Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<graphics.h>
- #include<iostream>
- #include<string>
- #include<sstream>
- #include<conio.h>
- #include<math.h>
- using namespace std;
- int main()
- {
- int *data;
- int dataCount;
- int dataType = 0;
- int lastSeriesRemainder;
- int dataSeriesCount = 0;
- bool hasNegativeData = false;
- string legendX,legendY;
- string *dataText;
- cout<<"Vuvedi broi danni: "; cin>>dataCount;
- data = new int[dataCount];
- if(dataCount <= 10) {
- for(int i=0;i<dataCount;i++) {
- cout<<"Data #"<<i+1<<": ";cin>>data[i];
- }
- } else {
- // Razdelq dannite na serii po 10 ako broq danni e poveche ot 10, za da moje da se predstavqt normalno v grafikata
- lastSeriesRemainder = dataCount - (dataCount/10)*10;
- dataSeriesCount = dataCount/10 + (lastSeriesRemainder > 0 ? 1 : 0);//izchislqva broq serii sprqmo broq danni.Primer:(23 danni => 3 serii)
- for(int i=0;i<dataSeriesCount;i++) {
- cout<<"Vuvedi danni za seriq #"<<i+1<<endl;
- for(int j=0;j<(i != dataSeriesCount -1 ? 10 : lastSeriesRemainder); j++) { // Vuvejda dannite za vsqka seriq.Ako e posledna vuvejda do
- cout<<"Data #"<<j+(i*10) + 1<<":"; cin>> data[j+(i*10)];//ostatuka ot poslednata seriq. Primer: 15 danni sa 2 serii, poslednata vuvejda do 5
- }
- }
- }
- for(int i = 0; i < dataCount; i++) {
- if(data[i] < 0) {
- hasNegativeData = true; // Proverqva dali ima otricatelni danni. Ako ima otricatelni ne moje da ima krugova diagrama(pie)
- break; //Otdelno se polzva v izchisleniqta po kusno
- }
- }
- do {
- cout<<"Izberi tip diagrama:\n";
- cout<<"1. Liniq\n";
- cout<<"2. Histograma\n";
- if(!hasNegativeData) cout<< "3. Krugova(Pie)\n";
- cin>>dataType;
- } while(dataType < 1 || dataType > (hasNegativeData ? 2 : 3)); // Ako ima otricatelni danni svejda izbora do 1 i 2 (bez krugova)
- if (dataType == 3) {
- dataText = new string[dataCount];
- cout<<"Vuvedi tekstova informaciq za vsichki danni:\n";
- for (int i=0;i < dataCount; i++) {
- cout<<"Data #"<<i+1<<", sus stoinost "<<data[i]<<" = "; cin>>dataText[i];
- }
- }
- int w = 1024, h = 768;
- initwindow(w,h);
- int current = 1;
- if(dataSeriesCount>0) {
- std::ostringstream oss;
- int low = current == 0 ? 1 : current * 10;
- int high = current == dataSeriesCount -1 ? current * 10 + lastSeriesRemainder : (current+1) * 10;
- oss << "Showing results from" << low << " to "<<high;
- cleardevice();
- outtextxy(768,500,strdup(oss.str().c_str()));
- }
- _getch();
- closegraph();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement