Professional Documents
Culture Documents
Laboratorijska vježba 9
Zadatak 1
Napisati program za zbrajanje dvije matrice proizvoljnih dimenzija. Dimenzije matrica ko-
risnik određuje tijekom izvođenja programa. Zbrajanje matrica izvršiti u funkciji prototipa
int ** zbrmat(int **, int **, int, int); koja za argumente prima pokazivače na po-
kazivače preko kojih se pristupa matricama koje zbrajaju te broj redaka i stupaca. Funkcija
vraća adresu koja pokazuje na polje pokazivača koji pokazuju na vrijednosti rezultata zbraja-
nja. Unos podataka vršiti pozivom na funkciju prototipa void unmat(int **, int, int);,
koja za argumente prima pokazivač na pokazivač, te broj redaka i stupaca. Ispis rezultata
izvršiti u glavnoj funkciji. Zadatak riješiti primjenom aritmetike pokazivača.
Zadatak 2
Napisati program u kojem korisnik sa standardnog ulaza unosi proizvoljan broj riječi i jedan
znak. Program treba ispisati onu riječ u kojoj se uneseni znak pojavljuje najviše puta. Koris-
titi funkciju prototipa int brzn(char **, int, char); koja za argument prima pokazivač
na polje znakovnih nizova, broj znakovnih nizova u nizu, te slovo koje se ispituje. Funkcija
vraća indeks znakovnog niza s najviše pojavljivanja traženog znaka. Najveća dužina jednog
niza znakova neka je 80. Znakovni nizovi se unose sve dok se ne unese prazni redak. Unesene
znakovne nizove kopirati u polje znakovnih nizova koje treba zauzeti memorije točno koliko
ima znakova i pojedinom nizu.
Napomena: Za određivanje duljine znakovnog niza koristiti funkciju int strlen(char *);
koja za argument prima pokazivač na znakovni niz, te vraća broj znakova u nizu. Funkcija se
nalazi u biblioteci string.h.
Rješenja
Zadatak 1
#include<s t d i o . h>
#include<m a l l o c . h>
unmat ( a , rd , s t ) ;
unmat ( b , rd , s t ) ;
c = zbrmat ( a , b , rd , s t ) ;
Zadatak 2
#include<s t d i o . h>
#include<s t d l i b . h>
#include<s t r i n g . h>
i f ( b r s == 0 )
break ;
b r r ++;
r n i z [ b r r − 1 ] = ( char ∗) m a l l o c ( ( b r s + 1 ) ∗ s i z e o f ( char ) ) ;
j = 0;
while ( r e c [ j ] != ’ \n ’ ) {
rniz [ brr − 1 ] [ j ] = rec [ j ] ;
j ++;
}
} while ( b r s != 0 ) ;
p r i n t f ( " U n e s i t e ␣ j e d n o ␣ s l o v o : ␣" ) ;
s c a n f ( "␣%c " , &z ) ;
r e d = brzn ( r n i z , brr , z ) ;
p r i n t f ( "U␣znakovnom␣ n i z u ␣(%s ) ␣ i n a ␣ n a j v i s e ␣ p o j a v l j i v a n j a ␣ t r a z e n o g ␣"
" znaka . \ n" , ∗( r n i z + r ed ) ) ;
return 0 ;
}
int brzn ( char ∗∗ n i z , int n , char c )
{
int i , j , br , bmax = 0 , imax ;
br++;
}
j ++;
}
i f (bmax < br ) {
bmax = br ;
imax = i ;
}
}
return imax ;
}