PROGRAMIRANJE (C)

10. srpnja 2002.

1. Napišite program koji učitava dvije matrice A i B dimenzija mxn ( max{m, n} ≤ 20) i provjerava da li je A^{T} B = B^{T} A. Ne smijete koristiti dodatna polja.

2. Napišite funkciju čiji je prototip: char* nadjiZnak(char *niz, char z, int *br);

Funkcija treba vratiti pokazivač na prvo pojavljivanje znaka z u nizu niz, te odrediti br - broj pojavljivanja zadanog znaka u nizu niz. Ako se znak z ne pojavljuje u nizu niz, funkcija treba vratiti NULL pokazivač. Nije dozvoljeno korištenje funkcija iz <stdio.h>.

3. Napišite funkciju čiji je prototip:

void prepisi (char *imeUlazneDatoteke, char *imeIzlazneDatoteke);

Vaš potprogram treba iz ulazne datoteke u izlaznu datoteku prepisati sve znakove, ali na način da sva mala slova pretvori u velika i obrnuto te umjesto svakog procitanog broja u izlaznu datoteku napise broj uvecan za zbroj njegovih znamenki. Napomena: Brojevi u ulaznoj datoteci ne moraju biti prazninom odvojeni od ostalih znakova. Predznak broja možete zanemariti. Npr. ako se u ulaznoj datoteci nalazio tekst ”Ab!cDe.F251 G-22f”, u izlaznoj datoteci treba biti zapisano ”aB!CdE.f259 g-26F”. (Dodatnih 10 bodova dobit ćete ako ne koristite funkcije iz <ctype.h>. Napomena: A ima manji ASCII znak od a)

4. Definirana je struktura:

struct kompleksni broj {

float re;

float im; };

Napišite funkciju koja kao argument prima polje kompleksnih brojeva i duljinu polja te ga sortira silazno po modulu.

5. Zadana je funkcija int sumascii(char* s1, char* s2) koja vraća zbroj ASCII vrijednosti znakova u prvom i drugom nizu znakova. Napišite funkciju čiji je prototip:

struct student** makehash(struct student *lista, int n);

Funkcija kao argumente prima pokazivač na početak vezane liste studenata i broj n. Svaki element strukture student sadrzi ime, prezime te prosjek ocjena studenta. Funkcija treba vratiti pokazivač na polje pokazivaca velicine n. Povratno polje treba biti ovako oblikovano: Na i-tom mjestu u povratnom polju bit će adresa početka nove vezane liste koja će sadržavati sve one studente iz početne liste čiji je ostatak pri dijeljenju sume ascii vrijednosti znakova u imenu i prezimenu brojem n jednak i. Ako nema takvih studenata na i-tom mjestu u polju pokazivač mora biti NULL. (Dodatnih 10 bodova dobit ćete ako elementi u pojedinoj vezanoj listi budu složeni po prosjeku.)

NAPOMENA: Dozvoljeno je korištenje logaritamskih tablica, Matematičkog priručnika i kalkulatora.

REZULTATI: danas, 10. srpnja 2002., u 18h.

Boris Milašinović