3

Click here to load reader

Labos05

Embed Size (px)

DESCRIPTION

još labosa

Citation preview

Page 1: Labos05

Laboratorijske vježbe iz predmeta Programiranje

5-1

5. Laboratorijske vježbe

U rješenjima zadataka nije dozvoljeno koristiti standardne C funkcije čiji se prototipovi nalaze u

header datoteci STRING.H.

5.1. Zadaci za pripremu Na osnovu matičnog broja riješite jedan od sljedećih zadataka: 1. a) Napisati općenitu funkciju kojom se računaju aritmetičke sredine redaka dvodimenzionalnog

realnog polja proizvoljnih dimenzija. Funkcija treba izračunati i vratiti polje aritmetičkih sredina. U glavnom je programu potrebno: učitati dimenzije dvodimenzionalnog polja M x N (broj redaka M i broj stupaca N se učitavaju sve

dok se ne učitaju vrijednosti iz intervala od [1, 10]) učitati članove polja, a zatim članove polja ispisati kao dvodimenzionalnu tablicu izračunati aritmetičke sredine redaka korištenjem funkcije, te ispisati izračunate vrijednosti b) Napisati funkciju za kopiranje niza znakova, čiji je prototip:

char * kopiniz(char *odr, char *izv);

Funkcija treba kopirati sadržaj niza izv u niz odr, te vratiti pokazivač na rezultat (odr). U glavnom je programu potrebno učitati jedan niz, te njegov sadržaj iskopirati u drugi niz korištenjem funkcije kopiniz, a zatim oba niza ispisati.

2. a) Napišite potprogram kojim se pronalaze vrijednosti najvećih članova u pojedinim recima nekog dvodimenzionalnog realnog polja od M x N članova. U glavnom programu treba učitati dimenzije(M, N) i vrijednosti polja, pozvati potprogram, te ispisati dobiveni rezultat na zaslon. U potrprogramu ništa ne ispisivati.

b) Napisati funkciju za zamjenu malih slova u velika u nizu znakova (znakovi koji nisu mala slova ostaju nepromijenjeni). Izgled prototipa funkcije je:

int nizuvel(char * niz);

Funkcija kao rezultat vraća broj promijenjenih znakova.

3. a) Napišite potprogam koji računa sumu elemenata gornje (desne) trokutaste matrice koja je nastala od zadane matrice ranga N. U glavnom programu treba učitati rang matrice(N) i elemente matrice, pozvati potprogram, te ispisati dobiveni rezultat na zaslon. U potprogramu ništa ne ispisivati.

b) Napisati funkciju za traženje prvog pojavljivanja zadanog znaka u nizu počevši s (desnog) kraja niza. Izgled prototipa funkcije je:

int trazidesno(char * niz, char znak);

Funkcija kao rezultat vraća mjesto (indeks znaka u polju) na kojem je nađen znak, ili vrijednost -1 ukoliko se znak ne nalazi u nizu.

4. a) Napišite funkciju koja se pronalaze vrijednosti najmanjih članova u pojedinim recima te najvećih članova u pojedinim stupcima nekog dvodimenzionalne matrice ranga N. Funkcija preko argumenata prima 1D polja u koja će spremiti rezultat. Prototip funkcije je:

void f(int *m, int rang, int maxStup, int *minr, int *maxs);

U glavnom programu treba učitati rang matrice N (N < 100) i vrijednosti polja, pozvati funkciju te ispisati dobiveni rezultat na zaslon. b) Napisati funkciju koja će sva pojavljivanja zadanog znaka u nizu zamijeniti drugim znakom. Prototip funkcije je:

int zamznak(char * niz, char novi, char stari);

Funkcija kao rezultat vraća broj zamjena. 5. a) Napišite općeniti potprogram kojim se pronalaze indeksi najmanjih članova u pojedinim recima

nekog dvodimenzionalnog cjelobrojnog polja. Potprogram treba vratiti polje pronađenih indeksa. U glavnom programu je potrebno: učitavati dimenzije polja (broj redaka m i broj stupaca n) sve dok se ne učitaju vrijednosti iz

intervala 10,1m i 20,1n

Page 2: Labos05

Laboratorijske vježbe iz predmeta Programiranje

5-2

učitati članove polja, a zatim članove polja ispisati kao tablicu uporabom napisane funkcije ispisati indekse i vrijednosti najmanjih članova u svim recima zadanog

polja

b) Napisati funkciju za traženje zadanog znaka u nizu počevši s lijevog kraja niza. Prototip funkcije:

int trazilznak(char * niz, char znak);

Funkcija kao rezultat vraća mjesto (indeks) na kojem je nađen znak, odnosno -1 ukoliko se zadani znak ne nalazi u nizu. Napisati glavni program u kojem će se ponavljati:

učitati rečenicu i zadani znak pozvati funkcija trazilznak ispisati rezultat te funkcije

sve dok se ne učita prazna rečenica.

6. a) Napisati općeniti potprogram koji će naći najmanji i najveći element na sporednoj dijagonali matrice ranga N. U glavnom programu treba učitati rang matrice(N) i elemente matrice, pozvati potprogram, te ispisati dobiveni rezultat na zaslon.

b) Napisati općeniti potprogram za usporedbu dva znakovna niza (po abecedi odnosno ASCII vrijednostima). Izgled prototipa funkcije je:

int nizusp(char * niz1, char * niz2);

Potprogram kao rezultat vraća indeks znaka u polju gdje se nizovi razlikuju i to sa negativnim predznakom ukoliko je niz niz1 po ASCII poretku manji (ispred) od niza niz2, odnosno sa pozitivnim predznakom ukoliko je niz niz1 po ASCII poretku veći (iza) niza niz2. Ukoliko su nizovi identični funkcija vraća vrijednost 0. Primjerice, nizusp("Zagreb","Zadar") vraća +2, nizusp("Zadar","Zagreb") vraća –2, a nizusp("FER","FER") vraća 0.

7. a) Napisati općeniti potprogram koji će naći najmanji i najveći element na glavnoj dijagonali matrice ranga N. U glavnom programu treba učitati rang matrice(N) i elemente matrice, pozvati potprogram, te ispisati dobiveni rezultat na zaslon.

b) Napisati općeniti potprogram za kopiranje niza znakova. Izgled prototipa potprograma je:

char * kopinniz(char * odr, char * izv, int n);

a potprogram kopira prvih n znakova niza izv u niz odr. Potprogram kao rezultat vraća pokazivač na rezultat (odr).

8. a) Napišite potprogram kojim se računaju geometrijske sredine stupaca nekog dvodimenzionalnog realnog polja od M x N članova. U glavnom programu treba učitati dimenzije(M,N) i vrijednosti polja, pozvati potprogram, te ispisati dobiveni rezultat na zaslon.

b) Napisati funkciju za ubacivanje niza u drugi niz na zadano mjesto. Izgled prototipa funkcije je:

char * nizubaci(char * niz, char * podniz, int mjesto);

Funkcija kao rezultat vraća pokazivač na niz niz.

9. a) Napišite potprogram kojim se računaju geometrijske sredine redaka nekog dvodimenzionalnog realnog polja od M x N članova. U glavnom programu treba učitati dimenzije(M,N) i vrijednosti polja, pozvati potprogram, te ispisati dobiveni rezultat na zaslon.

b) Napisati funkciju za dodavanje praznina na početak znakovnog niza, čiji je prototip:

char * nizpomak(char * niz, int broj);

Funkcija kao rezultat vraća pokazivač na niz niz.

10. a) Napišite potprogram koji će izračunati kvadratne vrijednosti članova matrice. U glavnom programu treba učitati dimenzije(M,N) i vrijednosti polja, pozvati potprogram, te ispisati dobiveni rezultat na zaslon.

b) Napisati funkciju za dodavanje niza znakova(izv) na kraj niza znakova odr, čiji je prototip: char * dodniz(char * odr, char * izv); Funkcija kao rezultat vraća pokazivač na rezultat (odr).

11. a) Napišite potprogram koji će izračunati druge korijene članova matrice. U glavnom programu treba učitati dimenzije(M,N) i vrijednosti polja, pozvati potprogram, te ispisati dobiveni rezultat na zaslon.

b) Napisati funkciju za zamjenu dvaju nizova znakova. Izgled prototipa funkcije je:

void zamniz(char * niz1, char * niz2);

Page 3: Labos05

Laboratorijske vježbe iz predmeta Programiranje

5-3

12. a) Napišite potprogram kojim se pronalazi produkt matrice od M x N članova s vektorom od N članova. U glavnom programu treba učitati dimenzije(M,N) i vrijednosti polja, pozvati potprogram (koji vraća rezultat kao polje), te u glavnom programu ispisati dobiveni rezultat na zaslon.

b) Napisati funkciju za izbacivanje zadanog broja znakova iz znakovnog niza od zadane pozicije u nizu. Izgled prototipa funkcije je:

int nizizbaci(char * niz, int pocetak, int duljina);

Funkcija kao rezultat vraća stvarni broj izbačenih znakova. Ukoliko su zadane nepravilne vrijednosti (npr. pocetak + duljina > duljine stringa, ..) funkcija vraća -1.