Advertisement
Guest User

Untitled

a guest
May 21st, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. ///Subiectul 2 de la verificare
  6.  
  7. ///punctul a
  8. typedef struct Produs
  9. {
  10. char c[101];
  11. double pret;
  12. double cantitate;
  13.  
  14.  
  15. }Produs;
  16.  
  17. void Ieftinire(Produs t[], int n, double s)
  18. {
  19. double stoc;
  20. int i;
  21. for(i=1;i<=n;i++)
  22. {
  23. stoc=t[i].pret*t[i].cantitate;
  24. if(stoc>s)
  25. {
  26. t[i].pret=0.9*t[i].pret;
  27. }
  28. }
  29. }
  30.  
  31. int compara_produse(const void *A,const void *B)
  32. {
  33. ///( *(int*)a - *(int*)b )
  34. Produs *p1, *p2;
  35. p1 = (Produs*)A;
  36. p2 = (Produs*)B;
  37.  
  38. /**
  39. Functia compara_produse va returna o valoare val
  40. Daca:
  41. val==0, atunci A este egal cu B
  42. val < 0, atunci nu se schimba ordinea lui A si B
  43. val > 0, atunci se schimba ordinea lui A si B
  44.  
  45. */
  46.  
  47. ///ordine descrescatoare a preturilor
  48. double stoc1, stoc2;
  49. stoc1 = p1->pret * p1->cantitate;
  50. stoc2 = p2->pret * p2->cantitate;
  51. if(stoc1 != stoc2)
  52. {
  53. return (stoc2 - stoc1);
  54. ///daca vrei sa le sortezi crescator dupa un anumit criteriu, 4
  55. ///returnezi primul minus al doilea
  56. ///daca descrescator, al doilea minus primul
  57. }
  58. else
  59. return strcmp(p1->c, p2->c);
  60. }
  61.  
  62. int main()
  63. {
  64. Produs t[100];
  65. int n;
  66.  
  67.  
  68. FILE *f;
  69. f=fopen("date.in","r");
  70. fscanf(f,"%d",&n);
  71.  
  72. char cr[2];
  73. fgets(cr, 2, f);//trecem cursorul pe linia urmatoare
  74. for(int i=1;i<=n;i++)
  75. {
  76. printf("i=%d\n", i);
  77.  
  78. fgets(t[i].c, 100, f);
  79. printf("\tt[i].c == %s\n", t[i].c);
  80. fscanf(f, "%lf",&t[i].pret);
  81. fscanf(f, "%lf",&t[i].cantitate);
  82. fgets(cr, 2, f);//asta o apelam ca sa trecem cursorul
  83. //pe linia urmatoare
  84. }
  85.  
  86. qsort(t+1,n, sizeof(Produs), compara_produse);
  87.  
  88. for(int i=1;i<=n;i++)
  89. printf("%s %lf %lf\n",t[i].c,t[i].pret,t[i].cantitate);
  90. return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement