Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. #include<graphics.h>
  2. #include<iostream>
  3. #include<string>
  4. #include<sstream>
  5. #include<conio.h>
  6. #include<math.h>
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.  
  13.  
  14. int *data;
  15. int dataCount;
  16. int dataType = 0;
  17.  
  18. int lastSeriesRemainder;
  19. int dataSeriesCount = 0;
  20. bool hasNegativeData = false;
  21. string legendX,legendY;
  22. string *dataText;
  23. cout<<"Vuvedi broi danni: "; cin>>dataCount;
  24. data = new int[dataCount];
  25.  
  26. if(dataCount <= 10) {
  27. for(int i=0;i<dataCount;i++) {
  28. cout<<"Data #"<<i+1<<": ";cin>>data[i];
  29. }
  30. } else {
  31. // Razdelq dannite na serii po 10 ako broq danni e poveche ot 10, za da moje da se predstavqt normalno v grafikata
  32. lastSeriesRemainder = dataCount - (dataCount/10)*10;
  33. dataSeriesCount = dataCount/10 + (lastSeriesRemainder > 0 ? 1 : 0);//izchislqva broq serii sprqmo broq danni.Primer:(23 danni => 3 serii)
  34.  
  35. for(int i=0;i<dataSeriesCount;i++) {
  36. cout<<"Vuvedi danni za seriq #"<<i+1<<endl;
  37. for(int j=0;j<(i != dataSeriesCount -1 ? 10 : lastSeriesRemainder); j++) { // Vuvejda dannite za vsqka seriq.Ako e posledna vuvejda do
  38. 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
  39. }
  40. }
  41. }
  42. for(int i = 0; i < dataCount; i++) {
  43. if(data[i] < 0) {
  44. hasNegativeData = true; // Proverqva dali ima otricatelni danni. Ako ima otricatelni ne moje da ima krugova diagrama(pie)
  45. break; //Otdelno se polzva v izchisleniqta po kusno
  46. }
  47. }
  48.  
  49. do {
  50. cout<<"Izberi tip diagrama:\n";
  51. cout<<"1. Liniq\n";
  52. cout<<"2. Histograma\n";
  53. if(!hasNegativeData) cout<< "3. Krugova(Pie)\n";
  54. cin>>dataType;
  55. } while(dataType < 1 || dataType > (hasNegativeData ? 2 : 3)); // Ako ima otricatelni danni svejda izbora do 1 i 2 (bez krugova)
  56.  
  57.  
  58. if (dataType == 3) {
  59. dataText = new string[dataCount];
  60. cout<<"Vuvedi tekstova informaciq za vsichki danni:\n";
  61. for (int i=0;i < dataCount; i++) {
  62. cout<<"Data #"<<i+1<<", sus stoinost "<<data[i]<<" = "; cin>>dataText[i];
  63. }
  64. }
  65.  
  66.  
  67. int w = 1024, h = 768;
  68. initwindow(w,h);
  69.  
  70.  
  71. int current = 1;
  72.  
  73. if(dataSeriesCount>0) {
  74.  
  75.  
  76. std::ostringstream oss;
  77. int low = current == 0 ? 1 : current * 10;
  78. int high = current == dataSeriesCount -1 ? current * 10 + lastSeriesRemainder : (current+1) * 10;
  79. oss << "Showing results from" << low << " to "<<high;
  80.  
  81. cleardevice();
  82.  
  83. outtextxy(768,500,strdup(oss.str().c_str()));
  84. }
  85.  
  86.  
  87.  
  88.  
  89. _getch();
  90. closegraph();
  91. return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement