Датотеке – задаци

1. Написати функцију за изостављање сваког појављивања задатог броја из низа целих бројева. Написати функцију за претварање низа целих бројева (који може да садржи и једнаке елементе) у скуп (чији су сви елементи различити). Написати програм који прочита целобројни низ, изоставља свако појављивање најмањег елемента из низа, претвори низ у скуп, испише добијени резултат и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност. Низове читати из текстуалне датотеке ulaz.txt, прочитане низове и резултујуће низове уписати у текстуалну датотеку izlaz.txt.

Датотеку ulaz.txt најпре је потребно креирати (помоћу програма notepad) у формату:

n
elementi niza razdvojeni razmakom
n
elementi niza razdvojeni razmakom
0

#include<stdio.h>
#define N 30
/* izostavljanje zadatog broja iz niza */
void izost (int a[], int *pn, int b)
{
	int i,j;
	j=0;
	for(i=0;i<*pn;i++)if(a[i]!=b)a[j++]=a[i];
	*pn=j;
}
/* pretvaranje niza u skup */
void uskup (int a[], int *pn)
{
	int i,j,k;
	j=0;
	for (i=0;i<*pn;i++)
	{
		for(k=0;k<j&&a[k]!=a[i];k++);
		if(k==j)a[j++]=a[i];
	}
	*pn=j;
}
/* nalazenje najmanjeg elementa niza */
int min (const int a[], int n)
{
	int i,m;
	m=a[0];
	for(i=0;i<n;i++)if(a[i]<m)m=a[i];
	return m;
}
int main()
{
	FILE *ul,*izl;
	int a[N],n,i,m;
	ul=fopen("ulaz.txt","r");
	izl=fopen("izlaz.txt","w");
	while(1)
	{
		fscanf(ul,"%d",&n);
		if(n<=0||n>N)break;
		fprintf(izl,"Pocetni niz: ");
		for(i=0;i<n;i++)
		{
			fscanf(ul,"%d",&a[i]);
			fprintf(izl,"%d ",a[i]);
		}
		fprintf(izl,"\n");
		m=min(a,n);
		izost(a, &n, m);
		uskup(a,&n);
		fprintf(izl,"Rezultat: ");
		for(i=0;i<n;i++)fprintf(izl,"%d ",a[i]);
		fprintf(izl,"\n");
	}
}

2. Рад са бинарним датотекама – креирање бинарне датотеке и читање бинарне датотеке

– Унос n бројева у бинарну датотеку

#include<stdio.h>
#include<stdlib.h>
int main ()
{
FILE *pok;
int broj;
int i,n;
printf("Koliko brojeva unosite?");
scanf("%d",&n);
pok=fopen("brojevi.dat","w+b");
if (pok==NULL)printf("greska");
for(i=0;i<n;i++) 
//Unos podataka u datoteku
{
printf("novi broj:");
scanf("%d",&broj);
fwrite(&broj,sizeof(int),1,pok);
}
fclose(pok);
return 0;
}

– Испис бинарне датотеке на монитору

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main ()
{
FILE *pok;
int broj;
pok=fopen("brojevi.dat","r+b");
while(fread(&broj,sizeof(int),1,pok)!=NULL)
printf("%d\n",broj);
fclose(pok);
getch();
return 0;
}

3. датотека са директним приступом – примена функције fseek

#include<stdio.h>
int main()
{
FILE *fp;
fp=fopen("izlaz.txt", "w");
fputs("This is an apple.", fp);
fseek(fp, 9, SEEK_SET);
fputs(" sam", fp);
fclose(fp);
return 0;
}

4. датотека са директним приступом – примена функције ftell

#include <stdio.h>
int main()
{
FILE *fp;
long size;
fp=fopen("ulaz.txt", "r");
if(fp==NULL){
printf("greska pri otvaranju datoteke");
return 1;
}else
{
fseek(fp, 0, SEEK_END);
size = ftell(fp);
fclose(fp);
printf("Velicina datoteke ulaz.txt: %ld bajtova \n", size);
return 0;
}
}

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се /  Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се /  Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се /  Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се /  Промени )

Повезивање са %s