Zadatak
Program ucitava dva cijela broja, a i b.Treba ispisati sve neparne brojeve izmedju a i b.
Rješenje
int main()
{
int a, b, i;
printf("Unesite broj a: ");
scanf("%d", &a);
printf("Unesite broj b: ");
scanf("%d", &b);
printf("Svi neparni brojevi izmedu %d i %d su: ", a, b);
for (i = a; i <= b; i++)
if(i % 2 != 0)
printf("%d ", i);
return 0;
}
Zadatak
Program ucitava 10 cijelih brojeva,a zatim ispisuje njihovu srednju vrijednost i brojeve vece od
srednje vrijednosti.
Rješenje
int main()
{
int a[10], sum = 0, i;
float sr;
printf("Unesite 10 brojeva:\n");
for(i = 0; i < 10; i++)
{
printf("%d: ", i+1);
scanf("%d", &a[i]);
}
for(i = 0; i < 10; i++)
{
sum += a[i];
}
sr = (float)sum/10;
printf("Srednja vrijednost je: %.2f\n", sr);
printf("Brojevi veci od srednje vrijednosti su: ");
for (i = 0; i <= 10; i++)
if(a[i] > sr)
printf("%d ", a[i]);
return 0;
}
Zadatak
Napraviti program koji obavlja operaciju traženja srednje vrijednosti za unesenih 10 brojeva. Rezultat prikazati s dvije decimalne znamenke.
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
int main() // glavna funkcija, tipa integer, bez argumenata
{
//——— Deklaracija Varijabli ———\\
float a; // varijabla tipa float za spremanje unešenog broja
int i; // kontrolna varijabla za for petlju
float suma; // varijabla u koju ćemo spremati sumu unešenih brojeva
//——— Početak Programa ———\\
// postavimo početnu vrijednost sume na 0 (neutralni element za zbrajanje)
suma = 0;
printf("Unesite 10 brojeva!\n");
for(i = 0; i < 10; i++)
{
// ispiši korisniku koji broj se unosi (čisto radi lakšeg snalaženja)
printf(" broj %d: ", i + 1);
// očitaj broj s tipkovnice i spremi ga u polje a na mjesto 'i'
scanf("%f", &a);
// dodaj vrijednost sumi
suma += a;
}
// ispiši srednju vrijednost s dva decimalna mjesta
printf("\nSrednja vrijednost je %.2f", suma / 10);
printf("\n\n");
// pauziranje programa prije kraja
system("PAUSE");
// vraćanje vrijednosti funkcije
return 0;
}
Zadatak
Napraviti program istovjetan zadatku prije, ali se prvo treba unijeti broj n
koji govori koliko ćemo brojeva unijeti, a nakon toga unijeti n brojeva i naći
srednju vrijednost.
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
int main() // glavna funkcija, tipa integer, bez argumenata
{
//——— Deklaracija Varijabli ———\\
float a[100]; // polje tipa float za spremanje unešenih brojeva
int i; // kontrolna varijabla za for petlju
int n; // broj koji unosimo, koliko ćemo unijeti u polje
float suma; // varijabla u koju ćemo spremati sumu unešenih brojeva
//——— Početak Programa ———\\
// postavimo početnu vrijednost sume na 0 (neutralni element za zbrajanje)
suma = 0;
do {
printf("Unesite broj n: ");
scanf("%d", &n);
} while(n < 1 ||n > 100);
printf("Unesite %d brojeva!\n", n);
for(i = 0; i < n; i++)
{
// ispiši korisniku koji broj se unosi (čisto radi lakšeg snalaženja)
printf(" broj %d: ", i + 1);
// očitaj broj s tipkovnice i spremi ga u polje a na mjesto 'i'
scanf("%f", &a[i]);
}
for(i = 0; i < n; i++)
{
// dodaj vrijednost sumi
suma += a[i];
}
// ispiši srednju vrijednost s dva decimalna mjesta
printf("\nSrednja vrijednost je %.2f", suma / n);
printf("\n\n");
// pauziranje programa prije kraja
system("PAUSE");
// vraćanje vrijednosti funkcije
return 0;
}
Zadatak:
Napisati program koji će učitati broj n koji mora biti manji od 10 i veći od 0.
Unijeti n brojeva u vektor V i ispisati najveći i najmanji u vektoru
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
int main() // glavna funkcija, tipa integer, bez argumenata
{
//——— Deklaracija Varijabli ———\\
int V[10]; // polje za spremanje unešenog broja (do 10 vrijednosti)
int i; // kontrolna varijabla za for petlju
int n; // varijabla za unos broja unošenja brojeva =)
int min, max; // varijable za min i max vrijednosti
//——— Početak Programa ———\\
// unesimo broj n
do {
printf("Unesite broj brojeva: ");
scanf("%d", &n);
} while (n < 1 || n > 10);
// unesimo n brojeva
printf("Unesite %d brojeva u polje V!\n", n);
for(i = 0; i < n; i++)
{
// ispiši korisniku koji broj se unosi (čisto radi lakšeg snalaženja)
printf(" V[%d]: ", i);
// očitaj broj s tipkovnice i spremi ga u polje V na mjesto 'i'
scanf("%d", &V[i]);
}
// postavimo min i max na pocetne vrijednosti
min = V[0];
max = V[0];
for(i = 0; i < n; i++)
{
// ako je V[i] veći od max, onda V[i] postaje max
if(V[i] > max)
max = V[i];
// ako je V[i] manji od min, onda V[i] postaje min
if(V[i] < min)
min = V[i];
}
// ispiši najveću i najmanju vrijednost
printf("\nNajmanja vrijednost u polju je %d, a najveca %d.", min, max);
printf("\n\n");
// pauziranje programa prije kraja
system("PAUSE");
// vraćanje vrijednosti funkcije
return 0;
}
Zadatak
Napisati program koji će učitati broj n koji mora biti prirodan i manji od 34.
Ako taj uvjet nije zadovoljen ponoviti učitavanje broja n. Naći i ispisati n!
Rješenje
#include <stdlib.h>
int main()
{
//——— Deklaracija Varijabli ———\\
int n = 0; // broj za koji izračunavamo faktorijel (korisnik ga unosi)
double faktorijel = 1; // početna vrijednost faktorijela, 1 zbog neutralnog
// elementa u množenju, double zbog velikih brojeva i preciznosti
int i; // kontrolna varijabla
do {
system("cls"); // šalje naredbu CLS konzoli (briše ekran)
printf("\n\n");
printf(" ** Program za izracunavanje faktorijela **"); // naziv programa
printf("\n\n");
printf(" Unesite neki broj od 1 do 50: "); // upute korisniku
scanf("%d", &n); // učitavanje broja s tipkovnice i spremanje u 'n'
if(n >= 1 && n <= 50) // ako je veći od 0 i manji od 51 izađi
break;
else // inače idi ispočetka
continue;
} while (1);
for(i = 1; i <= n; i++)
{
faktorijel *= (double)i; // izračun faktorijela, množenje redom brojevima
// od 1 do n
}
printf("\n");
printf(" Faktorijel od %d je ", n); // ispis dijela rezultata
if(faktorijel > 1e+15) // 100,000,000,000,000
printf("%.5e.", faktorijel); // ako je faktorijel jaaaako veliki broj,
// ispiši ga pomoću eksponenta baze 10
else
printf("%.0f", faktorijel); // inače ispiši normalno
printf("\n\n"); // opet oblikovanje 
system("pause"); // pauza prije kraja programa (da se ne zatvori odmah nakon izvođenja
return 0; // povrat vrijednosti iz
}
Zadatak
Napisati C program koji omogućava unos 2 cijela broja i sprema ih u varijable
N1 i N2. Provjeriti koji je broj veći te dalje raditi samo s njim.
Ukoliko je broj N1 veći od 10, ispisati sve parne brojeve od 0 do N1, a ako je
broj N1 manji od 10 ispisati poruku: "Premali broj".
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
int main() // glavna funkcija, tipa integer, bez argumenata
{
//——— Deklaracija Varijabli ———\\
int N1, N2; // varijable N1 i N2
int i; // kontrolna varijabla za for petlju
int N; // varijabla za radni broj =)
//——— Početak Programa ———\\
// unos brojeva N1 i N2
printf("Unesite cijeli broj N1: ");
scanf("%d", &N1);
printf("Unesite cijeli broj N2: ");
scanf("%d", &N2);
// provjeravamo koji je broj veći i spremamo ga u varijablu N
// s kojom ćemo dalje raditi
if(N1 > N2)
N = N1;
else
N = N2;
// je li N veći od 10?
if(N > 10)
{
// prvi dio ispisa
printf("Parni brojevi od 0 do %d su: ", N);
for(i = 0; i <= N; i++)
{
// je li ostatak djeljenja s 2 jednak nuli?
if((i % 2) == 0)
{
// ispiši trenutni broj
printf("%d, ", i);
// povećaj i za jedan tako da kad se automatski poveca u petlji
// da odma ide na idući parni broj
i++;
}
}
// zadnji dio ispisa
printf("i to je to.");
}
else
{
printf("\nPremali broj. Totalno.");
}
printf("\n\n");
// pauziranje programa prije kraja
system("PAUSE");
// vraćanje vrijednosti funkcije
return 0;
}
Zadatak
Napisati C program koji će koristiti vektor x od 200 elemenata. Učitati broj m
koji mora biti manji od 201 i veći od nule. Ako taj uvjet nije zadovoljen,
ispisati poruku "Pogrešno zadan broj elemenata vektora" i prekinuti rad. Ako je
m ispravan, učitati m realnih brojeva u vektor x. Naći najmanji i najveći član
xmin i xmax vektora. Naći i ispisati sve članove vektora koji su veći od xmax/2
i manji od xmin*2. Ispis treba imati izgled xxxxxx.xx
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
int main() // glavna funkcija, tipa integer, bez argumenata
{
//——— Deklaracija Varijabli ———\\
int m; // broj brojeva od 1 do 200
float x[200]; // vektor x od 200 članova
float xmin, xmax; // varijable za najveci i najmanji član vektora
int i; // kontrolna varijabla za for petlju
//——— Početak Programa ———\\
// unos broja m
printf("Unesite broj m od 1 do 200: ");
scanf("%d", &m);
// provjeravamo je li m veci i ako je, izlazimo van
if(m > 200 || m < 1)
// izlaz iz programa
exit(1);
printf("\nUnesite %d clanova u vektor x!\n", m);
for(i = 0; i < m; i++)
{
printf("x[%d]: ", i);
scanf("%f", &x[i]);
}
// tražimo najveći i najmanji član
xmax = x[0];
xmin = x[0];
for(i = 0; i < m; i++)
{
// ako je trenutni član veći od xmax, postavi xmax u taj broj
if(x[i] > xmax)
xmax = x[i];
// ako je trenutni član manji od xmin, postavi xmin u taj broj
if(x[i] < xmin)
xmin = x[i];
}
// ispišimo min i max
printf("\n\nxmax = %f\nxmin = %f\n", xmax, xmin);
// ispišimo veće od xmax/2 (prvi dio)
printf("\nVeci od xmax/2 su:\n");
for(i = 0; i < m; i++)
{
// ako je broj veci od xmax/2….
if(x[i] > xmax/2)
{
// ispiši broj
printf("%6.2f\n", x[i]);
}
}
// ispišimo manje od xmin*2 (prvi dio)
printf("\nManji od xin*2 su:\n");
for(i = 0; i < m; i++)
{
// ako je broj manji od xin*2….
if(x[i] < xmin*2)
{
// ispiši broj
printf("%6.2f\n", x[i]);
}
}
printf("\n\n");
// pauziranje programa prije kraja
system("PAUSE");
// vraćanje vrijednosti funkcije
return 0;
}
Zadatak
Napisati program koji će učitavati 20 prirodnih brojeva i naći i ispisati broj n
koji pokazuje koliko je među učitanim brojevima bilo takvih kod kojih su prva i
posljednja znamenka jednake. Ograničiti se na troznamenkaste brojeve.
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
int main() // glavna funkcija, tipa integer, bez argumenata
{
//——— Deklaracija Varijabli ———\\
int a[20]; // polje od 20 članova tipa int za spremanje unešenih brojeva
int i; // kontrolna varijabla za for petlje
int prva, zadnja; // privremene varijable za spremanje prve i zadnje znamenke
// pojedinog broja
//——— Početak Programa ———\\
printf("Unesite 20 prirodnih troznamenkastih brojeva u polje a!\n");
for(i = 0; i < 20; i++)
{
do {
// ispiši korisniku koji broj se unosi
printf("a[%d]: ", i);
// očitaj broj s tipkovnice i spremi ga u polje a na određeno mjesto
scanf("%d", &a[i]);
} while (a[i] < 100 || a[i] > 999);
}
printf("\nBrojevi kojima su prva i posljednja znamenka jednake su:\n");
for(i = 0; i < 20; i++)
{
prva = a[i] / 100;
zadnja = a[i] % 10;
if(prva == zadnja)
{
printf("\n%d", a[i]);
}
}
printf("\n\n");
system("PAUSE");
return 0;
}
Zadatak
S tipkovnice učitavati po tri cijela pozitivna broja (N1, N2, N3) i to tako dugo
dok je suma ta tri broja manja od 10000. U svakoj učitanoj trojci brojeva
pronaći onaj broj kojemu je suma znamenaka najveća. Na ekran treba ispisati broj
s najvećom sumom znamenki i sumu njegovih znamenki.
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
int main() // glavna funkcija, tipa integer, bez argumenata
{
//——— Deklaracija Varijabli ———\\
int n[3]; // polje od 3 člana za unešene brojeve
int i; // kontrolna varijabla za for petlje
int tmp; // privremena varijabla
int suma[3] = {0, 0, 0}; // sume za znamenke brojeva
int id = 0; // indeks mjesta broja s najvećom sumom znamenki
//——— Početak Programa ———\\
do {
// unesemo brojeve
system("cls");
printf("Unesite tri pozitivna broja cija suma mora bit preko 10000!\n");
printf("Unesite broj n1: ");
scanf("%d", &n[0]);
printf("Unesite broj n2: ");
scanf("%d", &n[1]);
printf("Unesite broj n3: ");
scanf("%d", &n[2]);
// ako je njihova suma manja od 10000, unosi ponovo
} while(n[0] + n[1] + n[2] < 10000);
for(i = 0; i < 3; i++)
{
// početna vrijednost privremene varijablie je unešeni broj
tmp = n[i];
do {
// dodaj zadnju znamenku u sumu
suma[i] += tmp % 10;
// riješi se zadnje znamenke
tmp = tmp / 10;
// ponavljaj dok ima znamenki (znamenaka, kako god)
} while(tmp > 0);
}
for(i = 0; i < 3; i++)
{
// ako je suma broja sa trenutnim indeksom veća od one iz varijable id
// postavi varijablu id u vrijednost trenutnog indeksa, odnosno i
if(suma[i] > suma[id])
id = i;
}
// ispiši rezultat
printf("\nNajvecu sumu znamenki ima broj %d, a ona iznosi %d.", n[id], suma[id]);
printf("\n\n");
system("PAUSE");
return 0;
}
Zadatak
Napisati glavni program u kojem se unosi niz od 10 cijelih brojeva i sprema u
polje v. Napraviti funkciju GetMax kojoj predajemo polje v i koja za rezultat
vraća maksimalni element (broj) u polju.
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
int GetMax(int b[]); // deklaracija funkcije GetMax(…);
int main() // glavna funkcija, tipa integer, bez argumenata
{
//——— Deklaracija Varijabli ———\\
int v[10]; // polje za spremanje unešenih brojeva
int i; // kontrolna varijabla za for petlje
//——— Početak Programa ———\\
// unesimo vrijednosti u polje
for(i = 0; i < 10; i++)
{
printf("Unesite v[%d]: ", i);
scanf("%d", &v[i]);
}
// ispiši rezultat i umjesto varijable pozovi funkciju koja će na to mjesto
// vratiti vrijednost koja će se ispisati na ekranu.
printf("\nNajveci broj u polju je %d.\n", GetMax(v));
printf("\n\n");
system("PAUSE");
return 0;
}
int GetMax(int b[])
{
int j; // kontrolna varijabla za petlju
int max = b[0]; // najveći član u polju, postavljamo ga na prvi član
for(j = 0; j < 10; j++)
{
// ako je trenutni broj veći od max…
if(b[j] > max)
// …postavi max u taj broj
max = b[j];
}
// vrati najveću vrijednost
return max;
}
Zadatak
Napisati program koji omogućava unos 25 cijelih brojeva i njihovo spremanje u
matricu A (5×5). Ispisati maksimalni i minimalni element u svakom retku.
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
int GetMax(int a[5][5], int red)
{
// postavi max na prvu vrijednost u traženom retku
int max = a[red][0];
int x;
for(x = 0; x < 5; x++)
{
// nađi max vrijednost u tom retku…
if(a[red][x] > max)
max = a[red][x];
}
// …i vrati ju
return max;
}
int GetMin(int a[5][5], int red)
{
// postavi min na prvu vrijednost u traženom retku
int min = a[red][0], x;
for(x = 0; x < 5; x++)
{
// nađi min vrijednost u tom retku…
if(a[red][x] < min)
min = a[red][x];
}
// …i vrati ju
return min;
}
void Ispis(int a[5][5])
{
int red;
printf("\n\n");
for(red = 0; red < 5; red++)
{
// ispiši max i min vrijednosti u svakom retku
printf("Red %d: %d \t%d\n", red + 1, GetMax(a, red), GetMin(a, red));
}
printf("\n\n");
}
int main()
{
int a[5][5], i, j;
printf("Popunite matricu 5 x 5!\n");
// redovi
for(i = 0; i < 5; i++)
{
// stupci
for(j = 0; j < 5; j++)
{
printf("Unesite (Red %d; Stupac %d): ", i+1, j+1);
scanf("%d", &a[i][j]);
}
}
// pozovi funkciju za ispis
Ispis(a);
system("PAUSE");
return 0;
}
Zadatak
Napisati program koji će naći površinu ispod krivulje y = a*x*abs(sin(b*x)) u
intervalu od zadanog x1 do zadanog x2. Aproksimirati površinu pomoću n trapeza.
Parametre a i b učitati kao realne brojeve, a broj trapeza n kao cijeli broj.
Površina ispod krivulje y = f(x) u intervalu od x1 do x2 može se približno
izračunati trapeznom metodom tako da se cijela površina aproksimira određenim
brojem trapeza. Površina pojedinog trapeza je:
Pi=dx * ( f(xi) + f(xi + dx) )/2
Tada je ukupna površina P = suma(Pi)
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
#include <math.h> // za neke fensi matematske funkcije
float a, b; // globalne varijable a i b (mogu se u svim funkcijama koristit)
float f(float x)
{
// funkcija. zadana.
return a * x * fabs(sin(b * x));
}
int main(int argc, char *argv[])
{
// varijable
float x1, x2, dx, suma = 0.00, i;
int n;
// unos podataka
printf("Unesite realan broj a: ");
scanf("%f", &a);
printf("Unesite realan broj b: ");
scanf("%f", &b);
printf("Unesite prirodni broj n: ");
scanf("%d", &n);
printf("Unesite realni broj x1: ");
scanf("%f", &x1);
do
{
// x2 mora biti veći od x1
printf("Unesite realni broj x2 (mora biti veci od x1: ");
scanf("%f", &x2);
} while (x2 <= x1);
// odredi dx
dx = (x2 – x1) / n;
for(i = x1; i < (x2 – dx); i += dx)
{
// dodaj u sumu svaki djelić… whatevr
suma += dx * (f(i) + f(i + dx)) / 2;
}
// ispiši sumu
printf("Povrsina je %.4f\n\n", suma);
system("PAUSE");
return 0;
}
Zadatak
Napisati funkciju koja prima dva argumenta: polje realnih brojeva v od 100
elemenata i cijeli broj n. Funkcija treba kao rezultat vratiti srednju
vrijednost prvih n elemenata polja v.
Rješenje
#include <stdlib.h> // ovo je samo za funkciju system() tako da možemo pauzirati
// program po završetku izvođenja, da se odmah ne ugasi
// funkcija za izračunavanje srednje vrijednosti polja
float SRVR(float a[100], int n)
{
int sum = 0;
int i;
for(i = 0; i < n; i++)
{
// zbroji sve članove do n
sum += a[i];
}
// podijeli sumu s brojem zbrojenih članova i vrati vrijednost
return sum / n;
}
int main(int argc, char *argv[])
{
// deklaracija varijabli
float a[100];
int i, n;
// unos brojeva
printf("Unesite 100 brojeva u polje. Hahaha!\n");
for(i = 0; i < 100; i++)
{
printf("%3d: ", i + 1);
scanf("%f", &a[i]);
}
printf("\n");
// to sve da bla bla
do {
printf("Unesite neki broj do sto za sumu: ");
scanf("%d", &n);
} while(n < 1 || n > 100);
printf("\n");
// spis i. ispis.
printf("Srednja vrijednost prvih %d brojeva u tom polju je %f", n, SRVR(a, n));
printf("\n\n");
system("PAUSE");
return 0;
}
Zadatak
Napisati glavni program u kojem se unosi matrica M[4][4]. Svaki element matrice
pomnožiti sa sumom elemenata retka u kojem se nalazi.
Rješenje
#include <stdlib.h>
// globalna varijabla za matricu… (može joj se pristupiti iz svih funkcija)
int a[4][4];
int suma_retka(int redak)
{
int i, suma = 0;
for(i = 0; i < 4; i++)
{
// vrijednost svih stupaca u retku dodaj u sumu
suma += a[redak][i];
}
// vrati sumu
return suma;
}
int main(int argc, char *argv[])
{
// kontrolne varijable
int i, j;
// 'storage' varijabla… bwahahahaha
int b[4][4] = {
{1,1,1,1},
{1,1,1,1},
{1,1,1,1},
{1,1,1,1}
};
printf("Unesite vrijednosti matrice 4×4!\n");
// ovak šta je bilo u skoro svakoj vježbi pa mi se ne da ponavljat
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
printf("a[%d][%d]: ", i, j);
scanf("%d", &a[i][j]);
}
}
// ispiši vrijednosti svaki red u novi red, svaki stupac iza tab-a
// primjer:
// 20 33 48 18
// 10 28 15 42
// 48 20 35 58
// 12 24 95 32
//
// naravno, ovo se moglo preko petlje, al ja nisam
// sue me, see if I care…
printf("\n%d\t%d\t%d\t%d", a[0][0], a[0][1], a[0][2], a[0][3]);
printf("\n%d\t%d\t%d\t%d", a[1][0], a[1][1], a[1][2], a[1][3]);
printf("\n%d\t%d\t%d\t%d", a[2][0], a[2][1], a[2][2], a[2][3]);
printf("\n%d\t%d\t%d\t%d", a[3][0], a[3][1], a[3][2], a[3][3]);
printf("\n");
// sada ide množenje
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
// pomoži s vrijednosti u b[i][j] (1) i dodaj u b[i][j]
// vrijednost a[i][j] pomnoženu sa sumom retka i
b[i][j] *= a[i][j] * suma_retka(i);
}
}
// ispiši b
printf("\n%d\t%d\t%d\t%d", b[0][0], b[0][1], b[0][2], b[0][3]);
printf("\n%d\t%d\t%d\t%d", b[1][0], b[1][1], b[1][2], b[1][3]);
printf("\n%d\t%d\t%d\t%d", b[2][0], b[2][1], b[2][2], b[2][3]);
printf("\n%d\t%d\t%d\t%d", b[3][0], b[3][1], b[3][2], b[3][3]);
printf("\n\n");
system("PAUSE");
return 0;
}
Zadatak
Napisati C glavni program i funkciju srvr. Glavni program koristi vektor v od
stotinu elemenata. S tipkovnice treba učitati podatak n, i n realnih brojeva
kojima treba popuniti vektor v. Funkcija srvr treba naći srednju vrijednost
brojeva smještenih u vektor v. Funkciji se predaju parametri: vektor v i broj n
koji daje broj članova u vektoru. U glavnom programu treba ispisati vrijednost
koju daje funkcija srvr.
Rješenje
#include <stdlib.h>
float srvr(int n, float v[100])
{
int i;
float s = 0.00;
for(i = 0; i < n; i++)
{
s += v[i];
}
return s / n;
}
int main(int argc, char *argv[])
{
float v[100];
int n, i;
do {
printf("Upisite broj n (1 – 100): ");
scanf("%d", &n);
} while (n < 1 || n > 100);
for(i = 0; i < n; i++)
{
printf("a[%d]: ", i);
scanf("%f", &v[i]);
}
printf("Srednja vrijednost prvih %d clanova u polju v je %.4f.\n", n, srvr(n, v));
printf("\n\n");
system("PAUSE");
return 0;
}
Zadatak
Napisati glavni program u kojem se unosi broj n i nakon toga n cijelih brojeva
koji se spremaju u polje v. Napraviti funkciju Poredaj koja treba elemente polja
v poredati po veličini.
Rješenje
#include <stdlib.h>
void Poredaj(int v[100], int n, int mode)
{
// kontrolna varijabla 'i' i privremena varijabla 'tmp' za zamjenu vrijednosti
int i, tmp;
// statusna varijabla koja nam govori je li došlo do promjene ili ne
int changed;
switch (mode)
{
case 1 : // uzlazno
do {
// kreni od pretpostavke da je sve u redu
changed = 0;
// trebamo staviti najveće vrijednosti na kraj pa onda možemo od kraja
// i krenuti u potragu
for(i = (n – 1); i > 0; i–)
{
// ako je vrijednost ispred veća od one iza…
if(v[i - 1] > v[i])
{
// zamijeni ih
tmp = v[i];
v[i] = v[i - 1];
v[i - 1] = tmp;
// i naznači da je bilo promjene
changed = 1;
}
}
// ako je bilo promjene, idi opet
} while (changed == 1);
printf("\nUzlazno: \n");
// svrši
break;
case 2 : // silazno
do {
// i tu kreni od pretpostavke da je sve u redu
changed = 0;
// sada trebamo staviti najveće vrijednosti na početak pa idemo normalno
for(i = 0; i < n; i++)
{
// ako je vrijednost iza veća od one ispred…
if(v[i + 1] > v[i])
{
// zamijeni ih
tmp = v[i];
v[i] = v[i + 1];
v[i + 1] = tmp;
// i naznači da je bilo promjene
changed = 1;
}
}
// ako je bilo promjene, idi opet
} while (changed == 1);
printf("\nSilazno:\n");
// svrši
break;
case 3 : // oboje
Poredaj(v, n, 1); // sortiraj uzlazno
Poredaj(v, n, 2); // pa silazno
return; // izađi van iz svega
}
for(i = 0; i < n; i++)
{
printf("\nv[%d]: %d", i, v[i]);
}
printf("\n");
}
int main(int argc, char *argv[])
{
int i, n, v[100], mode;
// unesi broj koliko će se unositi
do {
printf("Unesite broj od 1 do sto: ");
scanf("%d", &n);
} while(n > 100 || n < 1);
printf("\n");
// unesi toliko brojeva
for(i = 0; i < n; i++)
{
printf("v[%d]: ", i);
scanf("%d", &v[i]);
}
// izaberi način sortiranja
do {
printf("\nOdaberite nacin sortiranja:\n1-uzlazno\n2-silazno\n3-oboje\n:");
scanf("%d", &mode);
} while (mode < 1 || mode > 3);
// sortiraj na taj način
Poredaj(v, n, mode);
printf("\n\n");
system("PAUSE");
return 0;
}
Zadatak
Napisati program koji će za učitane vrijednosti elemenata u polje int p[20]
ispisati sve elemente polja koji su unešeni primjenom pokazivača na polje.
Rješenje
#include <stdlib.h>
int main()
{
int p[20], i; // polje i kontrolna varijabla, sve int
int* x; // x, tipa pokazivač prema intu
printf("Unesite vrijednosti u polje cijelih brojeva p[20]!\n\n");
// postavi x na adresu prvog člana polja
x = &p;
for(i = 0; i < 20; i++)
{
printf("a[%d]: ", i);
// spremi učitanu vrijednost na mjesto na koje pokazuje x
scanf("%d", x);
// povećaj mjesto za jednu jedinicu
x++;
}
printf("\n");
// postavi x na adresu prvog člana polja, opet
x = &p;
for(i = 0; i < 20; i++)
{
printf("\na[%d] = %d",i , *x); // ispiši vrijednost na adresi koju pokazuje x
// povećaj x za jednu jedinicu
x++;
}
printf("\n\n");
system("pause");
return 0;
}
