Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #define PUTANJA "C:\\Podaci\\DatotekaBassicB2.dat"
- #define PUTANJA2 "C:\\Podaci\\DatotekaBassicT2.txt"
- typedef struct proizvod{
- char nazivProizvoda[50];
- double cenaProizvoda;
- }PROIZVOD;
- void punjenjeBinarneDatotekeBrojevima(){
- FILE * datoteka;
- int broj,odgovor;
- datoteka = fopen(PUTANJA, "wb");
- if (datoteka == NULL){
- printf("Doslo je do greske!!!");
- }
- do{
- printf("Unesite broj:\t");
- scanf("%d", &broj);
- fwrite(&broj, sizeof(int), 1, datoteka);
- printf("0/1\t\t");
- scanf("%d", &odgovor);
- } while (odgovor == 0);
- fclose(datoteka);
- }
- void unosUBinarnuDatoteku(){
- FILE * datoteka = fopen(PUTANJA,"wb");//w/r/wb/rb/a/r+b
- int kraj,broj;
- if (datoteka == NULL){
- return;
- }
- do{
- printf("Unesite broj: ");
- scanf("%d", &broj);
- //UNOS U DATOTEKU
- fwrite(&broj, sizeof(int), 1, datoteka);
- printf("Da li zelite da nastavite:(0-DA/1-NE) ");
- scanf("%d", &kraj);
- } while (kraj == 0);
- fclose(datoteka);
- }
- void citanjeIzBinarnuDatoteku(){
- FILE * datoteka = fopen(PUTANJA, "rb");//w/r/wb/rb/a/r+b
- int broj;
- if (datoteka == NULL){
- return;
- }
- printf("Prikaz datoteke: ");
- while (fread(&broj,sizeof(int),1,datoteka)!=0)
- {
- printf("%d\t", broj);
- }
- fclose(datoteka);
- }
- void citanjeCelihBrojevaIzBinarneDatoteke(){
- int broj;
- FILE *datoteka;
- printf("Sadrzaj binarne datoteke: \n");
- datoteka = fopen(PUTANJA, "rb"); //rb-read/binary
- if (datoteka == NULL){
- printf("Dogodila se greska prilikom otvaranja binarne datoteke za citanje!\n");
- return;
- }
- while (fread(&broj, sizeof(int), 1, datoteka) != 0){ //fread(adresa broja koji citamo,velicina,koliko,odakle)
- printf("%d\t", broj); //funkcija sama menja kursor za 1
- }
- fclose(datoteka);
- }
- void citanjeUNiz(){
- int niz[3];
- FILE *datoteka;
- printf("Sadrzaj binarne datoteke: \n");
- datoteka = fopen(PUTANJA, "rb"); //rb-read/binary
- if (datoteka == NULL){
- printf("Dogodila se greska prilikom otvaranja binarne datoteke za citanje!\n");
- return;
- }
- while (fread(&niz, sizeof(int), 3, datoteka) != 0){ //fread(adresa broja koji citamo,velicina,koliko,odakle)
- printf("%d\t", niz[0]); //funkcija sama menja kursor za 1
- }
- fclose(datoteka);
- }
- void maximum(){
- FILE * datoteka;
- int maximum, broj;
- datoteka = fopen(PUTANJA, "rb");
- if (datoteka == NULL){
- printf("Greska.\n");
- return;
- }
- fread(&maximum, sizeof(int), 1, datoteka);//UCITAN PRVI BROJ IZ DATOTEKE!!!
- while (fread(&broj, sizeof(int), 1, datoteka) != 0){
- if (broj > maximum) {
- maximum = broj;
- }
- }
- printf("\nMaksimum u datoteci je %d\n", maximum);
- fclose(datoteka);
- }
- void aritmetickaSredina(){
- FILE * datoteka;
- int suma = 0, broj, brel;
- double as;
- datoteka = fopen(PUTANJA, "rb");
- if (datoteka == NULL){
- printf("Greska.\n");
- return;
- }
- while (fread(&broj, sizeof(int), 1, datoteka) != 0){
- suma = suma + broj;
- }
- fseek(datoteka, 0, SEEK_END);
- brel = ftell(datoteka) / sizeof(int);//RACUNANJE KOLIKO IMA ELEMENATA U DATOTECI!
- as = (double)suma / brel;
- printf("\nAritmeticka sredina je: %.2lf", as);
- fclose(datoteka);
- }
- void ispisiZadatuPoziciju(int poz){
- FILE * datoteka = fopen(PUTANJA, "r+b");
- int broj;
- if (datoteka == NULL){
- printf("Greska.\n");
- return;
- }
- fseek(datoteka, (poz-1)*sizeof(int), SEEK_SET);
- fread(&broj, sizeof(int), 1, datoteka);
- printf("\nBroj na poziciji %d je %d.\n", poz, broj);
- fclose(datoteka);
- }
- void povecajParneElemeneteUDatoteci(){
- FILE *datoteka = fopen(PUTANJA, "r+b");
- int broj;
- if (datoteka == NULL){
- printf("Doslo je do greske!\n");
- return;
- }
- while (fread(&broj, sizeof(int), 1, datoteka) != 0) {
- if (broj % 2 == 0) {
- broj++;
- fseek(datoteka,(signed)sizeof(int)*(-1),SEEK_CUR);//proveri da li ce da radi bez signed kod mene
- fflush(datoteka);
- fwrite(&broj,sizeof(int),1,datoteka);
- fflush(datoteka);
- }
- }
- fclose(datoteka);
- }
- void povecajDeljiveSaTri(int vrednost){
- FILE * datoteka = fopen(PUTANJA, "r+b");
- int broj;
- if (datoteka == NULL){
- printf("Greska.\n");
- return;
- }
- while (fread(&broj, sizeof(int), 1, datoteka) != 0){
- if (broj % 3 == 0){
- broj += vrednost;
- fseek(datoteka,(signed)sizeof(int)*(-1), SEEK_CUR);
- fwrite(&broj, sizeof(int), 1, datoteka);
- }
- }
- fclose(datoteka);
- }
- void povecajParneZaZadatuVrednost(int vrednost){
- FILE * datoteka;
- int kraj, broj;
- datoteka = fopen(PUTANJA, "r+b");
- if (datoteka == NULL){
- printf("Doslo je do greske pri otvaranju datoteke!\n\n");
- return;
- }
- while (fread(&broj,sizeof(int),1,datoteka)!=0)
- {
- if (broj % 2 == 0){
- broj += vrednost;
- fseek(datoteka,(signed)sizeof(int)*(-1),SEEK_CUR);//SIGNED MOZDA NE MORA U VISUAL STUDIO 10
- fwrite(&broj, sizeof(int), 1, datoteka);
- }
- }
- fclose(datoteka);
- }
- void sortirajDatoteku(){
- int i, j;
- int brEl, br1, br2;
- FILE * datoteka = fopen(PUTANJA, "r+b");
- if (datoteka == NULL){
- printf("Greska.\n");
- return;
- }
- fseek(datoteka, 0, SEEK_END); //STAVI NA KRAJ
- brEl = ftell(datoteka) / sizeof(int);//RACUNA KOLIKO IMA ELEMENEATA
- rewind(datoteka);//VRACA NA POCETAK
- for (i = 0; i < brEl - 1; i++){
- for (j = i + 1; j < brEl; j++){
- fseek(datoteka, sizeof(int)*i, SEEK_SET);
- fread(&br1, sizeof(int), 1, datoteka);
- fseek(datoteka, sizeof(int)*j, SEEK_SET);
- fread(&br2, sizeof(int), 1, datoteka);
- if (br1 > br2){
- fseek(datoteka, sizeof(int)*i, SEEK_SET);
- fwrite(&br2, sizeof(int), 1, datoteka);
- fflush(datoteka);
- fseek(datoteka, sizeof(int)*j, SEEK_SET);
- fwrite(&br1, sizeof(int), 1, datoteka);
- fflush(datoteka);
- }
- }
- }
- fclose(datoteka);
- }
- void sortiranje(){
- FILE * datoteka = fopen(PUTANJA, "r+b");
- int i,j,brEl,broj1,broj2;
- if (datoteka == NULL){
- printf("Greska.\n");
- return;
- }
- fseek(datoteka, 0, SEEK_END);
- brEl = ftell(datoteka) / sizeof(int);
- rewind(datoteka); //fseek(datoteka,0,SEEK_SET);
- for ( i = 0; i < brEl-1; i++)
- {
- fseek(datoteka, sizeof(int)*i, SEEK_SET);
- fread(&broj1, sizeof(int), 1, datoteka);
- for (j = i+1; j < brEl; j++)
- {
- fseek(datoteka, sizeof(int)*j, SEEK_SET);
- fread(&broj2, sizeof(int), 1, datoteka);
- if (broj1>broj2){
- fseek(datoteka, sizeof(int)*i, SEEK_SET);
- fwrite(&broj2, sizeof(int), 1, datoteka);
- fflush(datoteka);
- fseek(datoteka,sizeof(int)*j, SEEK_SET);
- fwrite(&broj1, sizeof(int), 1, datoteka);
- fflush(datoteka);
- }
- }
- }
- fclose(datoteka);
- }
- int main(void){
- //unosUBinarnuDatoteku();
- //citanjeIzBinarnuDatoteku();
- printf("\n\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement