You are on page 1of 6

UNIVERZITET U SARAJEVU ELEKTROTEHNIKI FAKULTET

Laboratorijska vjeba 13
OSNOVE RAUNARSTVA

CILJ VJEBE
Cilj ove vjebe je savladavanje osnovnih operacija u radu sa formatiranim tekstualnim datotekama. Takoer se obrauje modifikovanje i sortiranje datoteka. Konkretno, naglasak je na unosu podataka iz datoteke u niz struktura i ispisu u datoteku.

1. UVOD
Potrebno je napraviti program koji uitava podatke iz dateoteke ih ispisuje u datoteku , sortira ih, i potom . Rjeenje ovog zadatka je dato ispod. Napravite

novi projekat i unesite kod rjeenja u glavnu datoteku projekta.


#include <stdio.h> #include <stdlib.h> struct Student { char prezime[20]; char ime[15]; int broj_bodova; }; int main() { struct Student studenti[300], temp; FILE *ulaz, *izlaz; int i, j, k; //Datoteka za ulaz ulaz = fopen("C:\\ispit.txt", "r"); if(ulaz == NULL) { printf("Greska pri otvaranju datoteke ispit.txt \n"); exit(1); }

//Datoteka za ispis izlaz = fopen("C:\\ispit_sortiran.txt", "w"); if(izlaz == NULL) { fclose(ulaz); printf("Greska pri otvaranju datoteke ispit_sortiran.txt \n"); exit(1); }
//Unos podataka iz datoteke i = 0; while(fscanf(ulaz, "%20s%15s%2d\n", studenti[i].prezime, studenti[i].ime, &studenti[i].broj_bodova) == 3 && i < 300) i++; //Sortiranje niza po broju bodova //Varijabla i sadri duinu niza for(j = 0; j < i - 1; j++) for(k = j + 1; k < i; k++) if(studenti[k].broj_bodova > studenti[j].broj_bodova) { temp = studenti[j]; studenti[j] = studenti[k]; studenti[k] = temp; }

//Ispis niza u dateoteku for(j = 0; j < i; j++) fprintf(izlaz, "%-20s%-15s%2d\n", studenti[j].prezime, studenti[j].ime, studenti[j].broj_bodova);
fclose(ulaz); fclose(izlaz); printf("Izlazna datoteka ispit_sortiran.txt je kreirana. \n"); return 0; }

Potom: 1. Analizirajte program. 2. Kompajlirajte program. 3. Testirajte program tako to dete unositi razliite ulazne vrijednosti.

TESTIRANJE PROGRAMA
Da biste testirali program, potrebno je da napravite datoteku sljededi nain: formatiranu na

Pri tome: Kolona Kolona Kolona zauzima 15 mjesta. zauzima 10 mjesta. zauzima 2 mjesta

Pazite da svaki podatak u datoteci zauzima predvieni broj mjesta! Za prezime je potrebno rezervirati tano mjesta. Ako je prezime krade od slova, dopuniti ostatak prostora

razmacima. Ako je due, skratite ga. Pokrenite program. Ako ste sve dobro uradili (i postavili datoteku u odgovarajudi direktorij), na ekranu dete dobiti poruku da je kreirana izlazna datoteka. Potraite izlaznu datoteku otvorite je u tekst editoru i pogledajte njen sadraj. Otvorite datoteku pogledajte izlaznu datoteku i dodajte jo . studenata. Ponovo pokrenite program i

2. ZADACI ZA PROVJERU RAZUMIJEVANJA PRVOG ZADATKA


2.1. U datoteku dodati kolonu koja predstavlja broj bodova na drugom parcijalnom ispitu, dok predstavlja bodove na prvom parcijalnom ispitu. Datoteka de sada imati sljededu strukturu:

Potom je potrebno prepraviti program tako da: Struktura U datoteku sadri oba podatka za bodove. (obratite panju da se datoteka sada zove drugaije) upisuju

se studenti koji su poloili oba parcijalna ispita (na oba imaju 10 ili vie bodova). Datoteka ima sljededu strukturu:

Ova datoteka treba biti sortirana prema koloni vrijednostima.

, od vedih prema manjim

3. ZADACI ZA SAMOSTALNU VJEBU


3.1. Napraviti program za unos podataka putem tastature u datoteku specificiranu u prethodnom zadatku. Ovaj program ne smije da brie postojedu datoteku nego treba dodavati nova polja u nju. Program treba da vri kontrolu ispravnosti podataka i trai ponovan unos ako su podaci neispravni. 3.2. Dopuniti program iz prethodnog zadatka tako da podrava sljedede funkcije: Dodavanje studenata. Brisanje studenata. Izmjena studenata. Ispis sadraja datoteke. u svakom trenutku bude sortirana.

Takoer je potrebno pobrinuti se da datoteka

Napomena: Najlaki nain za rjeavanje ovog zadatka je da se pri prvom pokretanju uita kompletan sadraj datoteke u niz struktura, a zatim se pri svakoj operaciji ispie nova datoteku preko postojede. 3.3. Dopuniti program sa tutorijala tako da podatke dri u datoteci. Cilj ove dopune je da se imena ne moraju ponovo unositi svaki put kada se pokrene program, nego da program pamti imena unesena posljednji put.

You might also like