Postano 25.01.2008 19:29:54

Zadatak
Program ucitava dva cijela broja, a i b.Treba ispisati sve neparne brojeve izmedju a i b.

Rješenje

#include <stdio.h>
 
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

#include <stdio.h>

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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>
#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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>        // uključujemo standardne funkcije za I/O
#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 <stdio.h>
#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 <stdio.h>
#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 <stdio.h>
#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 <stdio.h>
#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;
}