Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. //1. Afisare date studenti in fisier binar organizat relativ
  5. //2. Afisare produsul cel mai profitabil pe an
  6.  
  7.  
  8. typedef struct {
  9. char denumire[20];
  10. float pret;
  11. int cant[12]; //12 luni
  12. char stare; }Produs;
  13.  
  14.  
  15. int nr_spatii_produse(FILE *f, int l)
  16. {
  17. fseek(f,0,SEEK_END);
  18. int n=ftell(f)/l;
  19. return n;
  20. }
  21.  
  22.  
  23. void main()
  24. {
  25.  
  26. //1.////////////////////////////////////////////////////////
  27.  
  28. FILE *f;
  29. int cod;
  30. Produs prod;
  31. char nume_fis[30];
  32. printf("Numele fisierului binar este: ");
  33. gets(nume_fis);
  34. f=fopen(nume_fis,"wb+");
  35.  
  36. printf("\nCodul produsului: ");
  37. scanf("%d", &cod);
  38.  
  39. while(!feof(stdin)){
  40. //se verifica daca s-a creat spatiul pana la codul introdus
  41. if(cod>= nr_spatii_produse(f, sizeof(Produs)))
  42. {
  43. prod.stare=0;
  44. fseek(f,0,SEEK_END);
  45. for(int i=nr_spatii_produse(f, sizeof(Produs));i<=cod;i++)
  46. fwrite(&prod,sizeof(Produs),1,f);
  47. }
  48.  
  49. fseek(f,cod*sizeof(Produs),SEEK_SET);
  50. fread(&prod,sizeof(Produs),1,f);
  51.  
  52. //se verifica daca produsul exista deja
  53. if(prod.stare) printf("Produsul exista deja in fisier!");
  54. else {
  55. fseek(f,cod*sizeof(Produs),SEEK_SET);
  56. printf("\nDenumire produs: "); scanf("%s",&prod.denumire);
  57. printf("Pret: "); scanf("%d",&prod.pret);
  58.  
  59. for(int j=0;j<12;j++){
  60. printf("Cantitate[%d]: ",j);
  61. scanf("%d",&prod.cant[j]);}
  62.  
  63. prod.stare=1;
  64. fwrite(&prod,sizeof(Produs),1,f);
  65. }
  66.  
  67. printf("\n\nCodul produsului: ");
  68. scanf("%d", &cod);
  69. }
  70.  
  71. fclose(f);
  72.  
  73.  
  74. //2.////////////////////////////////////////////////////////////////
  75.  
  76. FILE *g;
  77. f=fopen(nume_fis,"rb");
  78.  
  79. char nume_fis2[30];
  80. printf("Numele fisierului text este: ");
  81. gets(nume_fis2);
  82. g=fopen(nume_fis2,"w");
  83.  
  84.  
  85. if(!f) printf("Fisierul nu a putut fi deschis!");
  86. else {
  87. int max=0;
  88. int cod_max=0;
  89. char *nume_prod=NULL;
  90. //Produs p;
  91.  
  92. for(int i=0;i<nr_spatii_produse(f, sizeof(Produs));i++){
  93. int suma=0;
  94. fread(&prod,sizeof(Produs),1,f);
  95.  
  96. if(prod.stare){
  97. for(int j=0;j<12;j++)
  98. suma+=prod.pret*prod.cant[j];
  99. printf("ceva %d ",prod.pret);
  100. if(max<suma) {max=suma; cod_max=i; nume_prod=prod.denumire;}
  101. }
  102. }
  103. //rewind(f);
  104. for(int i=0;i<nr_spatii_produse(f, sizeof(Produs));i++)
  105. if(cod_max==i) fprintf(g,"Cel mai profitabil produs a strans %d lei in ultimul an si este:\n %d %s", max, cod_max, &nume_prod);
  106. }
  107.  
  108. fclose(f);
  109. fclose(g);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement