Advertisement
Guest User

DATOTEKE DRUGI PROJEKAT

a guest
Aug 22nd, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.75 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <ctype.h>
  7.  
  8. #define PUTANJA "C:\\Podaci\\DatotekaBassicB2.dat"
  9. #define PUTANJA2 "C:\\Podaci\\DatotekaBassicT2.txt"
  10.  
  11. typedef struct proizvod{
  12.     char nazivProizvoda[50];
  13.     double cenaProizvoda;
  14. }PROIZVOD;
  15.  
  16. void punjenjeBinarneDatotekeBrojevima(){
  17.     FILE * datoteka;
  18.     int broj,odgovor;
  19.  
  20.     datoteka = fopen(PUTANJA, "wb");
  21.  
  22.     if (datoteka == NULL){
  23.         printf("Doslo je do greske!!!");
  24.     }
  25.  
  26.     do{
  27.         printf("Unesite broj:\t");
  28.         scanf("%d", &broj);
  29.  
  30.         fwrite(&broj, sizeof(int), 1, datoteka);
  31.    
  32.         printf("0/1\t\t");
  33.         scanf("%d", &odgovor);
  34.     } while (odgovor == 0);
  35.  
  36.     fclose(datoteka);
  37. }
  38.  
  39. void unosUBinarnuDatoteku(){
  40.     FILE * datoteka = fopen(PUTANJA,"wb");//w/r/wb/rb/a/r+b
  41.     int kraj,broj;
  42.  
  43.     if (datoteka == NULL){
  44.         return;
  45.     }
  46.  
  47.     do{
  48.         printf("Unesite broj: ");
  49.         scanf("%d", &broj);
  50.  
  51.         //UNOS U DATOTEKU
  52.         fwrite(&broj, sizeof(int), 1, datoteka);
  53.    
  54.         printf("Da li zelite da nastavite:(0-DA/1-NE) ");
  55.         scanf("%d", &kraj);
  56.     } while (kraj == 0);
  57.  
  58.     fclose(datoteka);
  59. }
  60. void citanjeIzBinarnuDatoteku(){
  61.     FILE * datoteka = fopen(PUTANJA, "rb");//w/r/wb/rb/a/r+b
  62.     int broj;
  63.  
  64.     if (datoteka == NULL){
  65.         return;
  66.     }
  67.  
  68.     printf("Prikaz datoteke: ");
  69.     while (fread(&broj,sizeof(int),1,datoteka)!=0)
  70.     {
  71.         printf("%d\t", broj);
  72.     }
  73.  
  74.     fclose(datoteka);
  75. }
  76.  
  77. void citanjeCelihBrojevaIzBinarneDatoteke(){
  78.     int broj;
  79.     FILE *datoteka;
  80.  
  81.     printf("Sadrzaj binarne datoteke: \n");
  82.  
  83.     datoteka = fopen(PUTANJA, "rb");            //rb-read/binary
  84.  
  85.     if (datoteka == NULL){
  86.         printf("Dogodila se greska prilikom otvaranja binarne datoteke za citanje!\n");
  87.         return;
  88.     }
  89.  
  90.     while (fread(&broj, sizeof(int), 1, datoteka) != 0){        //fread(adresa broja koji citamo,velicina,koliko,odakle)
  91.         printf("%d\t", broj);                               //funkcija sama menja kursor za 1
  92.     }
  93.     fclose(datoteka);
  94. }
  95.  
  96. void citanjeUNiz(){
  97.     int niz[3];
  98.     FILE *datoteka;
  99.  
  100.     printf("Sadrzaj binarne datoteke: \n");
  101.  
  102.     datoteka = fopen(PUTANJA, "rb");            //rb-read/binary
  103.  
  104.     if (datoteka == NULL){
  105.         printf("Dogodila se greska prilikom otvaranja binarne datoteke za citanje!\n");
  106.         return;
  107.     }
  108.  
  109.     while (fread(&niz, sizeof(int), 3, datoteka) != 0){     //fread(adresa broja koji citamo,velicina,koliko,odakle)
  110.         printf("%d\t", niz[0]);                             //funkcija sama menja kursor za 1
  111.     }
  112.     fclose(datoteka);
  113.  
  114. }
  115.  
  116. void maximum(){
  117.     FILE * datoteka;
  118.     int maximum, broj;
  119.  
  120.     datoteka = fopen(PUTANJA, "rb");
  121.  
  122.     if (datoteka == NULL){
  123.         printf("Greska.\n");
  124.         return;
  125.     }
  126.  
  127.     fread(&maximum, sizeof(int), 1, datoteka);//UCITAN PRVI BROJ IZ DATOTEKE!!!
  128.  
  129.     while (fread(&broj, sizeof(int), 1, datoteka) != 0){
  130.         if (broj > maximum) {
  131.             maximum = broj;
  132.         }
  133.     }
  134.  
  135.     printf("\nMaksimum u datoteci je %d\n", maximum);
  136.  
  137.     fclose(datoteka);
  138. }
  139.  
  140. void aritmetickaSredina(){
  141.     FILE * datoteka;
  142.     int suma = 0, broj, brel;
  143.     double as;
  144.  
  145.     datoteka = fopen(PUTANJA, "rb");
  146.  
  147.     if (datoteka == NULL){
  148.         printf("Greska.\n");
  149.         return;
  150.     }
  151.  
  152.     while (fread(&broj, sizeof(int), 1, datoteka) != 0){
  153.         suma = suma + broj;
  154.     }
  155.  
  156.     fseek(datoteka, 0, SEEK_END);
  157.  
  158.     brel = ftell(datoteka) / sizeof(int);//RACUNANJE KOLIKO IMA ELEMENATA U DATOTECI!
  159.  
  160.     as = (double)suma / brel;
  161.  
  162.     printf("\nAritmeticka sredina je: %.2lf", as);
  163.  
  164.     fclose(datoteka);
  165. }
  166.  
  167. void ispisiZadatuPoziciju(int poz){
  168.     FILE * datoteka = fopen(PUTANJA, "r+b");
  169.     int broj;
  170.  
  171.     if (datoteka == NULL){
  172.         printf("Greska.\n");
  173.         return;
  174.     }
  175.  
  176.     fseek(datoteka, (poz-1)*sizeof(int), SEEK_SET);
  177.  
  178.     fread(&broj, sizeof(int), 1, datoteka);
  179.  
  180.     printf("\nBroj na poziciji %d je %d.\n", poz, broj);
  181.  
  182.     fclose(datoteka);
  183. }
  184.  
  185. void povecajParneElemeneteUDatoteci(){
  186.     FILE *datoteka = fopen(PUTANJA, "r+b");
  187.     int broj;
  188.  
  189.     if (datoteka == NULL){
  190.         printf("Doslo je do greske!\n");
  191.         return;
  192.     }
  193.     while (fread(&broj, sizeof(int), 1, datoteka) != 0) {
  194.         if (broj % 2 == 0) {
  195.             broj++;
  196.  
  197.             fseek(datoteka,(signed)sizeof(int)*(-1),SEEK_CUR);//proveri da li ce da radi bez signed kod mene
  198.            
  199.             fflush(datoteka);
  200.             fwrite(&broj,sizeof(int),1,datoteka);
  201.             fflush(datoteka);
  202.         }
  203.     }
  204.     fclose(datoteka);
  205. }
  206.  
  207. void povecajDeljiveSaTri(int vrednost){
  208.     FILE * datoteka = fopen(PUTANJA, "r+b");
  209.     int broj;
  210.  
  211.     if (datoteka == NULL){
  212.         printf("Greska.\n");
  213.         return;
  214.     }
  215.  
  216.     while (fread(&broj, sizeof(int), 1, datoteka) != 0){
  217.         if (broj % 3 == 0){
  218.             broj += vrednost;
  219.  
  220.             fseek(datoteka,(signed)sizeof(int)*(-1), SEEK_CUR);
  221.             fwrite(&broj, sizeof(int), 1, datoteka);
  222.         }
  223.     }
  224.  
  225.     fclose(datoteka);
  226. }
  227.  
  228. void povecajParneZaZadatuVrednost(int vrednost){
  229.     FILE * datoteka;
  230.     int kraj, broj;
  231.  
  232.     datoteka = fopen(PUTANJA, "r+b");
  233.  
  234.     if (datoteka == NULL){
  235.         printf("Doslo je do greske pri otvaranju datoteke!\n\n");
  236.         return;
  237.     }
  238.  
  239.     while (fread(&broj,sizeof(int),1,datoteka)!=0)
  240.     {
  241.         if (broj % 2 == 0){
  242.             broj += vrednost;
  243.  
  244.             fseek(datoteka,(signed)sizeof(int)*(-1),SEEK_CUR);//SIGNED MOZDA NE MORA U VISUAL STUDIO 10
  245.             fwrite(&broj, sizeof(int), 1, datoteka);
  246.         }
  247.     }
  248.  
  249.     fclose(datoteka);
  250. }
  251.  
  252. void sortirajDatoteku(){
  253.     int i, j;
  254.     int brEl, br1, br2;
  255.  
  256.     FILE * datoteka = fopen(PUTANJA, "r+b");
  257.  
  258.     if (datoteka == NULL){
  259.         printf("Greska.\n");
  260.         return;
  261.     }
  262.  
  263.     fseek(datoteka, 0, SEEK_END);   //STAVI NA KRAJ
  264.  
  265.     brEl = ftell(datoteka) / sizeof(int);//RACUNA KOLIKO IMA ELEMENEATA
  266.  
  267.     rewind(datoteka);//VRACA NA POCETAK
  268.  
  269.     for (i = 0; i < brEl - 1; i++){
  270.         for (j = i + 1; j < brEl; j++){
  271.             fseek(datoteka, sizeof(int)*i, SEEK_SET);
  272.             fread(&br1, sizeof(int), 1, datoteka);
  273.            
  274.             fseek(datoteka, sizeof(int)*j, SEEK_SET);
  275.             fread(&br2, sizeof(int), 1, datoteka);
  276.  
  277.             if (br1 > br2){
  278.                 fseek(datoteka, sizeof(int)*i, SEEK_SET);
  279.                 fwrite(&br2, sizeof(int), 1, datoteka);
  280.                 fflush(datoteka);
  281.  
  282.                 fseek(datoteka, sizeof(int)*j, SEEK_SET);
  283.                 fwrite(&br1, sizeof(int), 1, datoteka);
  284.                 fflush(datoteka);
  285.             }
  286.         }
  287.     }
  288.     fclose(datoteka);
  289. }
  290.  
  291. void sortiranje(){
  292.     FILE * datoteka = fopen(PUTANJA, "r+b");
  293.     int i,j,brEl,broj1,broj2;
  294.  
  295.     if (datoteka == NULL){
  296.         printf("Greska.\n");
  297.         return;
  298.     }
  299.  
  300.     fseek(datoteka, 0, SEEK_END);
  301.     brEl = ftell(datoteka) / sizeof(int);
  302.     rewind(datoteka);   //fseek(datoteka,0,SEEK_SET);
  303.  
  304.     for ( i = 0; i < brEl-1; i++)
  305.     {
  306.         fseek(datoteka, sizeof(int)*i, SEEK_SET);
  307.         fread(&broj1, sizeof(int), 1, datoteka);
  308.  
  309.         for (j = i+1; j < brEl; j++)
  310.         {
  311.             fseek(datoteka, sizeof(int)*j, SEEK_SET);
  312.             fread(&broj2, sizeof(int), 1, datoteka);
  313.  
  314.             if (broj1>broj2){
  315.                 fseek(datoteka, sizeof(int)*i, SEEK_SET);
  316.                 fwrite(&broj2, sizeof(int), 1, datoteka);
  317.                 fflush(datoteka);
  318.  
  319.                 fseek(datoteka,sizeof(int)*j, SEEK_SET);
  320.                 fwrite(&broj1, sizeof(int), 1, datoteka);
  321.                 fflush(datoteka);
  322.             }
  323.  
  324.         }
  325.     }
  326.  
  327.     fclose(datoteka);
  328. }
  329.  
  330. int main(void){
  331.     //unosUBinarnuDatoteku();
  332.     //citanjeIzBinarnuDatoteku();
  333.  
  334.     printf("\n\n");
  335.     return 0;
  336. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement