Advertisement
Guest User

Untitled

a guest
May 27th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.99 KB | None | 0 0
  1. #include<windows.h>
  2. #include<GL/glut.h>
  3. #include<stdio.h>
  4. #include<string.h>
  5. struct Produs{
  6. char producator[20];
  7. char model[20];
  8. int cantitate;
  9. int pret_fara_TVA;
  10. int TVA;
  11. float pret_cu_TVA;
  12. };
  13.  
  14. //declararea variabilelor globale
  15. int i, n, flag, q;
  16. struct Produs p[20], aux;
  17. FILE *f_in, *f_out;
  18. int y, s=1;
  19.  
  20.  
  21. //declararea functiilor
  22. int Afisare(struct Produs a[]);
  23. int cantitate(struct Produs a[]);
  24. void display();
  25.  
  26. //programul MAIN
  27. int main(int argc, char** argv) {
  28. int op;
  29. float t;
  30.  
  31. f_in = fopen("date.txt", "r");
  32. fscanf(f_in,"%d",&n); //citeste nr de linii
  33. for(i=0; i<n; i++){
  34. fscanf(f_in,"%s",p[i].producator);
  35. fscanf(f_in,"%s",p[i].model);
  36. fscanf(f_in,"%d",&p[i].cantitate);
  37. fscanf(f_in,"%d",&p[i].pret_fara_TVA);
  38. fscanf(f_in,"%d",&p[i].TVA);
  39. }
  40. fclose(f_in);
  41.  
  42. printf("- 0 - STOP Program\n"
  43. "- 1 - Calculeaza Pret cu TVA\n"
  44. "- 2 - Sorteaza dupa Cantitate\n"
  45. "- 3 - Introducerea datelor in fisier nou\n"
  46. "- 4 - Grafic\n");
  47. fflush(stdout);
  48. scanf("%d",&op);
  49.  
  50. while(op != 0){
  51. switch(op){
  52. //Calculeaza Pret cu TVA
  53. case 1 :
  54. for(i=0; i<n; i++){
  55. t = 1 + (float)p[i].TVA / 100;
  56. p[i].pret_cu_TVA = (float)p[i].pret_fara_TVA * t;
  57. }
  58. break;
  59. //Sorteaza dupa Cantitate
  60. case 2 :
  61. printf("/ 1 / - cantitate max\n/ 2 / - cantitate min\n");
  62. fflush(stdout);
  63. scanf("%d", &q);
  64. y = cantitate(p);
  65. break;
  66. //Introducerea datelor in fisier nou
  67. case 3 :
  68. y = Afisare(p);
  69. break;
  70. case 4 :
  71. glutInit(&argc, argv);
  72. glutInitWindowSize(720, 720);
  73. glutInitWindowPosition(50, 50);
  74. glutCreateWindow("Grafic OpenGL ");
  75. glutDisplayFunc(display);
  76. glutMainLoop();
  77. break;
  78. }
  79. printf("- 0 - STOP Program\n"
  80. "- 1 - Calculeaza Pret cu TVA\n"
  81. "- 2 - Sorteaza dupa Cantitate\n"
  82. "- 3 - Introducerea datelor in fisier nou\n"
  83. "- 4 - Grafic\n");
  84. fflush(stdout);
  85. scanf("%d",&op);
  86. }
  87.  
  88. printf("\n!!! SFIRSIT PROGRAM !!!");
  89. fflush(stdout);
  90. return 0;
  91. }
  92.  
  93. //scrierea datelor in fisier nou
  94. int Afisare(struct Produs a[]){
  95. f_out = fopen("date_out.txt", "w");
  96. for(i=0; i<n; i++){
  97. fprintf(f_out,"%s ",a[i].producator);
  98. fprintf(f_out,"%s ",a[i].model);
  99. fprintf(f_out,"%d ",a[i].cantitate);
  100. fprintf(f_out,"%d ",a[i].pret_fara_TVA);
  101. fprintf(f_out,"%d ",a[i].TVA);
  102. fprintf(f_out,"%.2f ",a[i].pret_cu_TVA);
  103. fprintf(f_out,"\n");
  104. }
  105. fclose(f_out);
  106. return s;
  107. }
  108. //sortare dupa cantitate
  109. int cantitate(struct Produs a[]){
  110. if(q==1){
  111. do{
  112. flag=0;
  113. for(i=0; i<n-1; i++){
  114. if(a[i].cantitate < a[i+1].cantitate){
  115. aux = p[i];
  116. p[i] = p[i+1];
  117. p[i+1] = aux;
  118. flag=1;
  119. }
  120. }
  121. }
  122. while(flag != 0);
  123. }
  124. if(q==2){
  125. do{
  126. flag=0;
  127. for(i=0; i<n-1; i++){
  128. if(a[i].cantitate > a[i+1].cantitate){
  129. aux = p[i];
  130. p[i] = p[i+1];
  131. p[i+1] = aux;
  132. flag=1;
  133. }
  134. }
  135. }
  136. while(flag != 0);
  137. }
  138. return s;
  139. }
  140.  
  141. //Grafica
  142. void display(){
  143. char text[10], numar[10];
  144. int i, j;
  145. float dx, ky, max;
  146. dx = 1.9 / n;
  147.  
  148. max = p[0].pret_cu_TVA;
  149. for(i = 1; i < n; i++){
  150. if(max < (p[i].pret_cu_TVA))
  151. max = (p[i].pret_cu_TVA);
  152. }
  153.  
  154. ky = 1.5 / max;
  155.  
  156. glClearColor(1.0f, 1.0f, 1.0f, 0.5f);
  157. glClear(GL_COLOR_BUFFER_BIT);
  158.  
  159. for(i = 0; i < n; i++){
  160. glBegin(GL_TRIANGLES);
  161. glColor3f(1.0f, 0.0f, 0.0f);
  162. glVertex2f(-0.95 + i * dx, -0.85);
  163. glVertex2f(-0.95 + (i + 1) * dx - 0.02, -0.85);
  164. glVertex2f(((-0.95 + i * dx)+(-0.95 + (i + 1) * dx - 0.02))/2, -0.9 + (p[i].pret_cu_TVA) * ky );
  165. glEnd();
  166.  
  167. sprintf(text,"%s", p[i].model);
  168. glRasterPos2f(-0.95 + i * dx + dx / 5, -0.9);
  169. for(j = 0; j < strlen(text); j++){
  170. glutBitmapCharacter(GLUT_BITMAP_8_BY_13, text[j]);
  171. }
  172. sprintf(numar,"%.2f",p[i].pret_cu_TVA);
  173. glRasterPos2f(-0.95 + i * dx + dx / 5, -0.9 + p[i].pret_cu_TVA * ky + 0.05);
  174. for(j = 0; j < strlen(numar); j++){
  175. glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_10, numar[j]);
  176. }
  177. }
  178. glFlush();
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement