Code Monkey home page Code Monkey logo

tvz_c-2023's Introduction

TVZ C - Zadaci sa gradera (2023/2024)

Ovdje možete pronaći zadatke za vježbu, te zadatke sa labosa iz C jezika koji su se pojavljivali na Graderu 2023/2024 god. Kao i zadatke za kratki pismeni ispit.

Radi lakše navigacije:

Vježbe:

1.tjedan 2.tjedan 3.tjedan 4.tjedan 5.tjedan 6.tjedan 7.tjedan 8.tjedan

Labosi:

1.tjedan 2.tjedan 3.tjedan 4.tjedan 5.tjedan 6.tjedan 7.tjedan 8.tjedan

Zadaci sa kolokvija

2023 2021

Zadaci sa kratkih ispita

Kratki ispit

Kako uploadati Vaš kod na Github?

  1. Kreirajte Github account.
  2. Klikom na Issues otvorite New issue.
  3. Prikladno nazovite zadatak, npr (Lab 4 - Nogometaš ili Vježba 6 - Sudoku).
  4. Uploadajte Vaš kod zajedno sa tekstom zadatka i test caseovima.

PRIMJER KODA KAKO BI TO TREBALO IZGLEDATI

tvz_c-2023's People

Contributors

ekufrin avatar ilija17 avatar sstanic01 avatar

Stargazers

Luka avatar  avatar  avatar Marin Jursic avatar  avatar sage avatar  avatar

Watchers

 avatar

tvz_c-2023's Issues

Vjezba 5 - ribat i ribe - dodatno

ribar i ribe - dodatno.pdf

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 1000

int simuliraj(char niz[], int n, int x) {
    int suma = 0;
    for (int i = x; i < n; i++) {
        if (niz[i] != '.') {
            suma += niz[i] - 'A' + 1;
            i += 2;
        }
    }
    return suma;
}

void sort(int niz[], int n) {
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (niz[j] > niz[i]) {
                int temp = niz[i];
                niz[i] = niz[j];
                niz[j] = temp;
            }
        }
    }
}

int main() {

    char niz[MAX] = {};

    int n;
    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        scanf(" %c", &niz[i]);
    }

    int maxSuma = 0, maxX = 0;
    for (int i = 0; i < n; i++) {
        int suma = simuliraj(niz, n, i);
        if (suma > maxSuma) {
            maxSuma = suma;
            maxX = i;
        }
    }

    printf("Optimalno je baciti udicu nakon %ds, sto donosi %dkg ribe.\n", maxX * 10, maxSuma);

    int ulovljene[MAX] = { 0 }, brojac = 0;
    for (int i = maxX; i < n; i++) {
        if (niz[i] != '.') {
            ulovljene[brojac] = niz[i] - 'A' + 1;
            brojac++;
            i += 2;
        }
    }

    sort(ulovljene, n);
    printf("Sortirano polje: \n");
    for (int i = 0; i < brojac; i++) {
        printf("%4d", ulovljene[i]);
    }

    return 0;
}

Vjezba 6 - Sahovska ploca

sahovskaPloca.pdf

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

void upisi(char** niz, int n, int m);
void ispisi(char** niz, int n, int m);

int main() {
    int N, M;

    scanf("%d %d", &N, &M);

    char** niz = (char**)malloc(N * sizeof(char*));

    for (int i = 0; i < N; i++) {
        niz[i] = (char*)malloc(M * sizeof(char));
    }

    upisi(niz, N, M);
    ispisi(niz, N, M);

    for (int i = 0; i < N; i++) {
        free(niz[i]);
    }
    free(niz);

    return 0;
}

void upisi(char** niz, int n, int m) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (i < 2) {
                niz[i][j] = 'C';
            } else if (i >= n - 2) {
                niz[i][j] = 'B';
            } else {
                if (i % 2 == 0) {
                    if (j % 2 == 0) {
                        niz[i][j] = 'O';
                    } 
                    else {
                        niz[i][j] = 'X';
                    }
                }
                else {
                    if (j % 2 == 1) {
                        niz[i][j] = 'O';
                    } 
                    else {
                        niz[i][j] = 'X';
                    }
                }
            }
        }
    }
}

void ispisi(char** niz, int n, int m) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            printf("%c", niz[i][j]);
        }
        printf("\n");
    }
}

1. kolokvij 2021. - 2. zadatak - 15 bodova

/*1. kolokvij, zadatak za 15 bodova: Ne vidim tekst.
Treba unijeti n i m od matrice i char matricu. nakon toga unijeti broj znakova uzorka kao i uzorak.
Cilj je ispisati koliko puta se taj uzorak ponavlja u osnovnoj matrici.

Test case:
Ulaz:
3 5
.*..-
--..-
***..
3
*..
Izlaz:
Broj ponavljanja uzorka: 2

Ulaz:
2 10
-..--.
--.-...*
5
--.-.
Izlaz:
Broj ponavljanja uzorka: 1

(Ostali test case-ovi su u prilogu)
P.S. ne treba ispisivat matricu ni uzorak, al ja sam stavio ko provjeru
*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

#define MAX 10

int main() {

    int n, m;

    scanf("%d %d", &n, &m);

    char matrica[MAX][MAX];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            scanf(" %c", &matrica[i][j]);
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            printf("%c ", matrica[i][j]);
        }
        printf("\n");
    }

    int k;
    scanf("%d", &k);
    char uzorak[MAX];

    for (int i = 0; i < k; i++) {
        scanf(" %c", &uzorak[i]);
    }
    for (int i = 0; i < k; i++) {
        printf(" %c", uzorak[i]);
    }
    printf("\n");

    int brojPonavljanja = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            int brojac = 0;
            if (matrica[i][j] == uzorak[0]) {
                for (int z = j; z < m; z++) {
                    if (matrica[i][z] == uzorak[brojac]) {
                        brojac++;
                    }
                }
                if (brojac == k) {
                    brojPonavljanja++;
                    break;
                }
            }
        }
    }

    printf("Broj ponavljanja uzorka: %d", brojPonavljanja);

    return 0;
}

1  kolokvij 2021  - 2  zadatak - 15 bodova

Vjezba 4 Sudoku kontrolor

/*Napravite C kod koji provjerava je li sudoku matrica ispravna.

Sudoku pravila su sljedeća:
matrica sadrži 9 redaka i 9 stupaca
u svakom retku trebaju biti brojevi od 1 do 9 (ne smije se ponavljati niti jedan)
u svakom stupcu trebaju biti brojevi od 1 do 9 (ne smije se ponavljati niti jedan)
ukoliko matricu podijelimo na 9 jednakih 3x3 dijelova, u svakom tom 3x3 dijelu moraju biti brojevi od 1 do 9 (ne smije se ponavljati niti jedan broj)
moguće je na internetu pretražiti pravila popunjavanja sudoku matrica

Test case #1
Ova sudoku matrica je ispravna. 
Primjer ulaza:
172549683
645873219
389261745
496327851
813456972
257198436
964715328
731682594
528934167
Primjer izlaza:
Ispravno!

Test case #2
Ova matrica je slična gornjoj, osim što nema ispravnu vrijednost u 7. retku - broj 2 se ponavlja više puta. Samim time, greska je i u 6. stupcu, te u 8. 3x3 kvadratu (kvadrati se broje odozgo na dolje i s lijeva na desno). Uvijek će biti samo jedna greška.
Primjer ulaza:
172549683
645873219
389261745
496327851
813456972
257198436
964712328
731682594
528934167
Primjer izlaza:
Neispravno!
Greska u: 7. redak, 6. stupac, 8. kvadrat.

Test case #3
Primjer ulaza:
572549683
645873219
389261745
496327851
813456972
257198436
964715328
731682594
528934167
Primjer izlaza:
Neispravno!
Greska u: 1. redak, 1. stupac, 1. kvadrat.

Test case #4
Primjer ulaza:
126437958
895621473
374985126
457193862
983246517
612578394
269314785
548769231
731852649
Primjer izlaza:
Ispravno!

*/

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>
int main() {

    int sudoku[9][9];
    char znak;

    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            scanf(" %c", &znak);
            sudoku[i][j] = znak - 48;
        }
    }

    int brojRed = -1;
    int ponavljanjeRed = 0;
    int kojiStupac = 0;

    for (int i = 1; i < 10; i++) {
        for (int j = 0; j < 9; j++) {
            ponavljanjeRed = 0;
            for (int k = 0; k < 9; k++) {
                if (sudoku[j][k] == i) {
                    ponavljanjeRed++;
                    if (ponavljanjeRed > 1) {
                        brojRed = j + 1;
                        kojiStupac = k + 1;
                        break;
                    }
                }
            }
        }
    }

    int brojStupac = -1;
    int ponavljanjeStupac = 0;
    int kojiRed = 0;

    for (int i = 1; i < 10; i++) {
        for (int j = 0; j < 9; j++) {
            if (ponavljanjeStupac > 1) {
                break;
            }
            ponavljanjeStupac = 0;
            for (int k = 0; k < 9; k++) {
                if (sudoku[k][j] == i) {
                    ponavljanjeStupac++;
                    if (ponavljanjeStupac > 1) {
                        kojiRed = k + 1;
                        brojStupac = j + 1;
                        break;
                    }
                }
            }
        }
    }

    int broj = 0;
    int kojiKvadrat = 0;
    int kvadrat = 0;

    int x = 0, y = 3;
    int z = 0, t = 3;

    while (kvadrat < 9) {
        if (kvadrat == 3 || kvadrat == 6) {
            z = 0, t = 3;
        }

        if (kvadrat > 2 && kvadrat < 6) {
            x = 3, y = 6;
        }
        else if (kvadrat > 5 && kvadrat < 9) {
            x = 6, y = 9;
        }

        for (int i = 1; i < 10; i++) {
            if (broj > 1) {
                kojiKvadrat = kvadrat + 1;
                break;
            }
            broj = 0;
            for (int j = x; j < y; j++) {
                for (int k = z; k < t; k++) {
                    if (sudoku[j][k] == i) {
                        broj++;
                    }
                }
            }
        }

        if (broj > 1) {
            kojiKvadrat = kvadrat + 1;
            break;
        }

        
        z = z + 3;
        t = t + 3;
        kvadrat++;
    }

    if (ponavljanjeRed <= 1 && ponavljanjeStupac <= 1) {
        printf("Ispravno!");
    }
    else {
        printf("Neispravno!\n");
        printf("Greska u: %d. redak, %d. stupac, %d. kvadrat.", brojRed, brojStupac, kojiKvadrat);
    }

    return 0;
}

Kolokvij Magicna Matrica

Potrebno je na početku učitati broj n, koji označava broj redaka i broj stupaca matrice (matrica je uvijek kvadratna -
jednaki broj redaka i stupaca). Broj n mora biti u intervalu [3, 21] i mora biti djeljiv s 3. Ako neko od tih pravila nije
ispoštovano, zahtjevati ponovni unos uz ispis poruke (pogledati test primjere).
Nakon što se učita matricu, potrebno je matricu podijeliti na 9 jednakih dijelova, i izračunati sumu svih brojeva u
pojedinom dijelu matrice, te na kraju ispisati novu matricu 3x3 koja sadrži sume svih pojedinih dijelova matrice. Primjerice,
ako je dana matrica:
1 1 2 2 3 3
1 1 2 2 3 3
4 4 5 5 6 6
4 4 5 5 6 6
7 7 8 8 9 9
7 7 8 8 9 9
Nova matrica bi bila:
4 8 12
16 20 24
28 32 36

#1 test case
Ulaz:
1 1 2 2 3 3
1 1 2 2 3 3
4 4 5 5 6 6
4 4 5 5 6 6
7 7 8 8 9 9
7 7 8 8 9 9
Izlaz:
4 8 12
16 20 24
28 32 36

#2 test case
Ulaz:
22
8
3
1 9000 3
4 78 8932
3267 382 2132
Izlaz:
Ponoviti unos!
Ponoviti unos!
1 9000 3
4 78 8932
3267 382 2132

#3 test case
Ulaz:
18
625 502 421 149 810 342 961 2 869 93 483 368 680 433 161 319 703 734
950 100 847 235 220 655 780 609 695 550 232 829 426 129 21 579 566 319
893 285 143 274 672 317 626 767 950 208 364 129 157 363 645 157 821 938
597 752 330 686 757 984 410 527 609 745 592 627 220 850 928 438 277 487
724 722 424 368 734 400 520 849 38 536 612 75 959 846 576 859 405 214
150 993 2 344 588 300 682 663 295 429 42 911 144 177 840 909 502 794
727 724 989 128 594 165 149 68 412 390 750 158 573 302 426 40 344 464
147 242 210 726 632 727 181 224 610 176 414 502 643 815 675 762 905 679
577 881 640 730 221 715 486 435 442 88 138 501 659 638 311 83 297 113
534 866 943 307 314 452 268 684 328 719 744 274 486 349 243 644 235 172
778 532 0 305 124 500 925 272 756 331 951 168 799 144 161 645 49 493
513 805 731 591 732 704 455 893 492 745 583 672 712 954 827 266 517 983
162 722 196 930 867 878 484 207 612 930 673 384 35 992 701 332 402 688
655 723 912 891 993 381 326 202 542 852 768 445 340 983 677 729 982 497
272 24 637 977 296 839 623 315 628 420 456 727 83 463 129 176 411 483
375 64 705 501 894 322 352 772 85 184 453 985 779 982 443 153 682 318
986 32 26 422 374 801 666 55 612 659 347 143 528 990 797 202 685 87
327 340 685 592 912 66 314 515 475 609 899 56 435 207 251 925 523 833

Izlaz:
18295 18677 18576
19506 16384 17408
19779 17775 18923


#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>
#include <time.h>

#define MAX 100

int main() {
    
    int n;
    scanf("%d", &n);
    while (n < 3 || n > 21 || n % 3 != 0) {
        printf("Pogresni unos!\n");
        scanf("%d", &n);
    }

    int matrica[100][100];

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &matrica[i][j]);
        }
    }
    int x = n * n;
    x = x / 9;
    x = sqrt(x);

    int polje[3][3] = { 0 };

    int a = 0, b = 0;

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (i < x && j < x) {
                polje[0][0] = polje[0][0] + matrica[i][j];
            }
            else if (i < x && j < 2 * x) {
                polje[0][1]= polje[0][1] + matrica[i][j];
            }
            else if (i < x && j < 3 * x) {
                polje[0][2] = polje[0][2] + matrica[i][j];
            }

            else if (i < 2 * x && j < x) {
                polje[1][0] = polje[1][0] + matrica[i][j];
            }
            else if (i < 2 * x && j < 2 * x) {
                polje[1][1] = polje[1][1] + matrica[i][j];
            }
            else if (i < 2 * x && j < 3 * x) {
                polje[1][2] = polje[1][2] + matrica[i][j];
            }

            else if (i < 3 * x && j < x) {
                polje[2][0] = polje[2][0] + matrica[i][j];
            }
            else if (i < 3 * x && j < 2 * x) {
                polje[2][1] = polje[2][1] + matrica[i][j];
            }
            else if (i < 3 * x && j < 3 * x) {
                polje[2][2] = polje[2][2] + matrica[i][j];
            }
        }
    }

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf(" %d", polje[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Vjezba 4 eSabornica

/*
Perica je programer kojem je zadaća održavati postojeće i raditi na novim sustavima za Sabor. Posao je dobio tek prošle godine, pa se nije još najbolje snašao.
Fakultet je završio davnih dana, a od tada nije napisao liniju koda, pa nije više u najboljoj formi. Zapravo, nije ni za vrijeme fakulteta bio u najboljoj formi,
budući da je nakon prve godine shvatio da programiranje baš i nije za njega. Ali kada je vidio oglas za posao - nije se mogao ne prijaviti.
“Odlično radno vrijeme, odlične pare i jeftina saborska menza”, često se hvalio svojim prijateljima dok su zajedno pili treću dnevnu kavu.
Neki rituali moraju postojati. Često bi nadodao i “a još nisam imao ni jedan projekt”. No, svemu što je lijepo brzo dođe kraj.
Perica je dobio važnu ulogu na novom projektu eSabornica, kojem je cilj modernizirati sabornicu i učiniti ju potpuno transparentnom.
Jedan od glavnih aspekata projekta je instalacija SmartSofa. SmartSofa je proizvod Norveškog startupa SmartIoT. U suštini, SmartSofa je pametna sjedalica
koja u sebi ima razne napredne funkcije - od senzora otkucaja srca, do motora za masažu. Jedna od glavnih značajki je i 'senzor sjedenja', tako da svaka stolica
šalje signal glavnom serveru sjedi li netko na toj poziciji ili ne (0 ili 1). Svaki zastupnik uvijek sjedi na istoj sjedalici. Budući da je nedavno izglasana odluka
da svaki saborski zastupnik mora biti na barem jednoj sjednici dnevno,

Peričin zadatak je isprogramirati program koji vodi statistiku dolaska na sjednice, te ispisuje zastupnike koje valja ukoriti za nedolazak, odnosno one kojih taj
dan nema ni na jednom zasjedanju.

Sabornica se sastoji od MxN sjedala, a dnevno se održava S sjednica. Glavni server podatke o stolicama nakon svake sjednice dostavlja u jednoj liniji, gdje se
podatak o svakoj stolici odvaja zarezom. Primjerice, za punu sabornicu dimenzija 2x3, podatak bi izgledao ovako: 1, 1, 1, 1, 1, 1. U projekt su uloženo mnogo novaca,
a Pericu bi neispunjenje ovog zadatka moglo stajati posla iz snova. Svojim programerskim znanjem morate mu pomoći!

Umnožak M i N neće biti veći od 250. S neće biti veći od 20. Na kraju je potrebno ispisati pozicije zastupnika koje treba opomenuti za nedolazak (od 1, 1 do m, n)
i grafički prikaz sabornice, gdje '0' označava dolazak na jednu od sjednica, a '-' nedolazak.

TEST CASEOVI:
2 2
3
1, 0, 0, 0
1, 0, 0, 0
1, 0, 0, 0

IZLAZ:
0 -

Ukoriti (1, 2).
Ukoriti (2, 1).
Ukoriti (2, 2).

TEST CASEOVI:
5 3
10
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

IZLAZ:
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

TEST CASEOVI:
5 5
1
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0

IZLAZ:
0 - - - -




0 - - - -
Ukoriti (1, 2).
Ukoriti (1, 3).
Ukoriti (1, 4).
Ukoriti (1, 5).
Ukoriti (2, 1).
Ukoriti (2, 2).
Ukoriti (2, 3).
Ukoriti (2, 4).
Ukoriti (2, 5).
Ukoriti (3, 1).
Ukoriti (3, 2).
Ukoriti (3, 3).
Ukoriti (3, 4).
Ukoriti (3, 5).
Ukoriti (4, 1).
Ukoriti (4, 2).
Ukoriti (4, 3).
Ukoriti (4, 4).
Ukoriti (4, 5).
Ukoriti (5, 2).
Ukoriti (5, 3).
Ukoriti (5, 4).
Ukoriti (5, 5).

TEST CASEOVI:
2 2
5
1, 1, 0, 0
1, 1, 1, 0
0, 0, 0, 0
0, 0, 0, 0
1, 1, 1, 1

IZLAZ:
0 0
0 0

TEST CASEOVI:
2 4
8
1, 0, 0, 0, 0, 0, 0, 0
0, 1, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
1, 1, 1, 0, 0, 0, 0, 0
0, 0, 0, 0, 1, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 1
0, 0, 0, 0, 0, 0, 1, 1

IZLAZ:
0 0 0 -
0 - 0 0
Ukoriti (1, 4).
Ukoriti (2, 2).

TEST CASEOVI:
8 7
3
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0
1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1
1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1

IZLAZ:
0 - 0 - 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 - - - -

          • 0 0
            0 0 0 - - - -
      • 0 0 0 0
        0 0 0 0 0 0 0
        Ukoriti (1, 2).
        Ukoriti (1, 4).
        Ukoriti (4, 4).
        Ukoriti (4, 5).
        Ukoriti (4, 6).
        Ukoriti (4, 7).
        Ukoriti (5, 1).
        Ukoriti (5, 2).
        Ukoriti (5, 3).
        Ukoriti (5, 4).
        Ukoriti (5, 5).
        Ukoriti (6, 4).
        Ukoriti (6, 5).
        Ukoriti (6, 6).
        Ukoriti (6, 7).
        Ukoriti (7, 1).
        Ukoriti (7, 2).
        Ukoriti (7, 3).
        */

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
int matrica[250][250], n, r, s;
char bd[250][250];
scanf("%d %d", &r, &s);
scanf("%d", &n);
for (int i = 0; i < r; i++)
{
for (int j = 0; j < s; j++)
{
bd[i][j] = '-';
}
}
while (n > 0) {
for (int i = 0; i < r; i++)
{
for (int j = 0; j < s; j++)
{
scanf("%d,",&matrica[i][j]);
}
}
for (int i = 0; i < r; i++)
{
for (int j = 0; j < s; j++)
{
if (matrica[i][j] == 1)
{
bd[i][j] = '0';
}
}
}
n--;
}
for (int i = 0; i < r; i++)
{
for (int j = 0; j < s; j++)
{
printf("%c ", bd[i][j]);
}
printf("\n");
}
for (int i = 0; i < r; i++)
{
for (int j = 0; j < s; j++)
{
if (bd[i][j] != '0')
{
printf("Ukoriti (%d, %d). \n", i + 1, j + 1);
}
}
}
return 0;
}

Lab 4 - Šah s majmunima 2

/Tek ste naučili igrati šah (i to zamalo), pa je prvi protivnik s kojim ćete se okušati susjedov majmun. Pošto majmun ipak
nije baš vješt u šahu, odlučili ste malo pojednostaviti pravila:
vi koristite K pijuna
majmun koristi samo jednog topa (topovi u šahu se kreću vodoravno i okomito)
šahovska ploča ima isti broj redaka i stupaca (ali ne nužno 8)
Dali ste svom protivniku da rasporedi figure po vlastitom nahođenju (!?), te vas sada interesira koliko je vaših pijuna u
opasnosti od protivnikovog topa.
Kao rezultat, potrebno je ispisati šahovsku tablu na način da:
vaši pijun koji nisu u opasnosti budu ispisani velikim slovom P
vaši pijuni koji su pod napadom topa budu ispisani velikim slovom X
protivnikov top velikim slovom T
prazno polje na tabli treba ispisati kao točku '.'
pod napadom može biti samo prvi pijun koji se nalazi u retku ili stupcu do topa. Primjerice: TPP -> TXP - drugi
pijun nije pod napadom jer top ne može preskočiti prvog pijuna.
Ulazni podaci su zadani na sljedeći način:
Prvi redak sadrži broj N koji označava broj redaka i broj stupaca na tabli. N će uvijek biti manji od 10
Drugi redak sadrže koordinate majmunovog topa u obliku Tr Ts, gdje je Tr redak u kojem je top a Ts stupac u
kojem je top.
Slijedi broj K, koji označava broj vaših pijuna
Na kraju je potrbeno učitati K redaka, u obliku Pr Ps, gdje je Pr redak a Ps stupac pojedinog pijuna
/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
int N = 0;
int Tr = 0;
int Ts = 0;
int K = 0;
int Pr = 0;
int Ps = 0;

char niz[25][25] = { 0 };

scanf("%d", &N);

for (int i = 0; i < N; i++)
{
	for (int j = 0; j < N; j++)
	{
		niz[i][j] = '.';
	}
}

scanf("%d", &Tr);
scanf("%d", &Ts);

niz[Tr - 1][Ts - 1] = 'T';

scanf("%d", &K);

for (int i = 0; i < K; i++)
{
	scanf("%d", &Pr);
	scanf("%d", &Ps);

	niz[Pr - 1][Ps - 1] = 'P';
	for (int j = 0; j < K; j++)
	{
		if (niz[Pr - 1 - j][Ps - 1] == 'T')
		{
			niz[Pr - 1][Ps - 1] = 'X';
		}
	}
	for (int j = 0; j < K; j++)
	{
		if (niz[Pr - 1 + j][Ps - 1] == 'T')
		{
			niz[Pr - 1][Ps - 1] = 'X';
		}
	}
	for (int j = 0; j < K; j++)
	{
		if (niz[Pr - 1][Ps - 1 - j] == 'T')
		{
			niz[Pr - 1][Ps - 1] = 'X';
		}
	}
	for (int j = 0; j < K; j++)
	{
		if (niz[Pr - 1][Ps - 1 + j] == 'T')
		{
			niz[Pr - 1][Ps - 1] = 'X';
		}
	}
}

for (int i = 0; i < N; i++)
{
	for (int j = 0; j < N; j++)
	{
		printf("%c", niz[i][j]);
	}
	printf("\n");
}

return 0;

}

1. kolokvij 2021. - 1. zadatak - 5 bodova

/*1. Napisite C program koji ce traziti unos 2 prirodna broja A i B, gdje je broj A u intervalu [10, B] a broj B u intervalu [A, 100000]. Ukoliko neki od brojeva nisu u zadanom intervalu, potrebno je ponoviti unos oba broja.

Kao rezultat je potrebno ispisati sve brojeve u intervalu [A, B] koji su djeljivi sa zbrojem svoje prve i zadnje znamenke.

Nema test case-ova
*/

#include <stdio.h>

int main() {
    
    int a, b;
    
    do {
        scanf("%d %d", &a, &b);
        
    } while (a < 10 || a > b || b < a || b > 10000);
    
    for (int i = a; i <= b; i++) {
        int zadnjaZnamenka = i % 10;
        int temp = i;
        while (temp > 10) {
            temp /= 10;
        }
        int prvaZnamenka = temp;
        if (i % (prvaZnamenka + zadnjaZnamenka) == 0) {
            printf("%d je djeljiv sa %d\n", i, prvaZnamenka+ zadnjaZnamenka);
        }
    }

    return 0;
}

Tekst zadatka - Spil karata

Boza zvani pub je vrhunski kartas. Da bi bio vrhunski kartas , mora imati nekoliko vrlo vaznih sposobnosti, od kojih je jedna da neprimjetno moze poredati karte u dijelu spila tijekom mijesanja. Vas zadatak je da kao promatrac , napravite program koji ce predvidjeti kako su karte izmjesane uzimajuci u obzir boz inu sposobnost.

Potrebno je napraviti funkciju koja ce za zadani niz proslijeden kao parametar, te za dva indexa idx1 i idx2, poredati karte izmedu idx1 i idx2.

Karte su numerirane od 1 do n(n se ucitava), i inicijalno su poredane silazno. Nakon toga potrebno je ucitati k redaka, gdje svaki redak sadrzi idx1 i idx2, te poredati karte prema gore opisanom postupku.

Vjezba 5 - ribar i ribe - kapitalac

ribar i ribe - kapitalac.pdf

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 1000

int simuliraj(char niz[], int n, int x) {
    int suma = 0;
    for (int i = x; i < n; i++) {
        if (niz[i] != '.') {
            if (niz[i] != 'T') {
                suma += niz[i] - 'A' + 1;
                i += 2;
            }
            else {
                suma += 100;
                i += 2;
            }
            
        }
    }
    return suma;
}

int main() {

    char niz[MAX] = {};

    int n;
    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        scanf(" %c", &niz[i]);
    }

    int maxSuma = 0, maxX = 0;
    for (int i = 0; i < n; i++) {
        int suma = simuliraj(niz, n, i);
        if (suma > maxSuma) {
            maxSuma = suma;
            maxX = i;
        }
    }

    printf("Optimalno je baciti udicu nakon %ds, sto donosi %dkg ribe.", maxX * 10, maxSuma);

    return 0;
}

Vjezba 5 - Ribar i riba

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 1000

int simuliraj(char niz[], int n, int x) {
    int suma = 0;
    for (int i = x; i < n; i++) { 
        if (niz[(i)] != '.') {
            suma += niz[i] - 'A' + 1;
            i += 2;
        }
    }
    return suma;
}

int main() {

    char niz[MAX] = {};

    int n;
    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        scanf(" %c", &niz[i]);
    }

    int maxSuma = 0, maxX = 0;
    for (int i = 0; i < n; i ++) {
        int suma = simuliraj(niz, n, i);
        if (suma > maxSuma) {
            maxSuma = suma;
            maxX = i;
        }
    }

    printf("Optimalno je baciti udicu nakon %ds, sto donosi %dkg ribe.", maxX * 10, maxSuma);

    return 0;
}

ribar_i_ribe.pdf

Vjezba 5 - Karlo i kosarka (zadnji tese case se ne izvršava na vrijeme, ako neko ima bolji kod nek promijeni)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int prostiBrojevi(int a, int b) {
    int prostiBrojevi = 0;

    for (int i = a; i <= b; i++) {
        int brojac = 0;
        for (int j = 2; j < i; j++) {
            if (i % j == 0) {
                brojac++;
                if (brojac > 1) {
                    break;
                }
            }
        }
        if (brojac == 0) {
            prostiBrojevi++;
        }
    }
    return prostiBrojevi;
}

int djeljiviBrojevi(int a, int b) {
    int djeljiviBrojevi = 0;
    for (int i = a; i <= b; i++) {
        if (i % 7 == 0 || i % 9 == 0) {
            djeljiviBrojevi++;
        }
    }
    return djeljiviBrojevi;
}

int main() {
    int n;
    scanf("%d", &n);

    int SMSbrojevi[150] = { 0 };
    for (int i = 0; i < n; i++) {
        int a, b;
        scanf("%d %d", &a, &b);
        if (a > b) {
            int temp = a;
            a = b;
            b = temp;
        }
        SMSbrojevi[i] = prostiBrojevi(a, b) + djeljiviBrojevi(a, b);
    }

    for (int i = 0; i < n; i++) { 
        for (int j = i + 1; j < n; j++) {
            if (SMSbrojevi[j] < SMSbrojevi[i]) {
                int temp = SMSbrojevi[i];
                SMSbrojevi[i] = SMSbrojevi[j];
                SMSbrojevi[j] = temp;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        if (i == 0) {
            printf("%d", SMSbrojevi[i]);
        }
        else {
            printf(", %d", SMSbrojevi[i]);
        }
    }

    return 0;
}

karlo_i_kosarka.pdf

1. kolokvij 2022. - 2. zadatak

/*
Napisati program u C koji sa tipkovnice ucitava dobitnu kombiniciju od 7 brojeva (brojevi su od 1 do 39) na igri Loto 7 od 39. Nakon toga unijeti broj uplacenih brojeva N (n >= 7, N <= 10), a zatim unijeti N brojeva od 1 do 39.
Pretraziti i pronaci koliko je brojeva pogodeno
Ispisati koliko je brojeva pogodeno i ispisati te brojeve
Primjer - Pogodaka je 4: 4 8 9 13
Ako nema niti jednog pogodenog broja napisati "Nema pogodaka"

Test case-ovi:
Ulaz:
1 4 7 9 12 14 34
11
9
3 5 7 9 13 23 33 34 37
Izlaz:
Neispravan broj
Pogodaka je 3: 7 9 34

Ulaz:
4 5 7 9 24 29
7
3 4 55 9 12 24
Izlaz:
Pogodaka je 4: 4 5 9 24

Ulaz:
2 4 6 8 13 25 33
8
3 5 7 9 14 26 32 34
Izlaz:
Nema pogodaka
*/

#include <stdio.h>

int main() {
    
    int brojevi[7];
    
    for (int i = 0; i < 7; i++) {
        do {
            scanf("%d", &brojevi[i]);
        } while (brojevi[i] < 1 || brojevi[i] > 39);
    }
    
    int brojUplacenihBrojeva;
    do {
        scanf("%d", &brojUplacenihBrojeva);
        if (brojUplacenihBrojeva < 7 ||
             brojUplacenihBrojeva > 10) {
                 printf("Neispravan broj\n");
             }
    } while (brojUplacenihBrojeva < 7 ||
             brojUplacenihBrojeva > 10);
    
    int uplaceniBrojevi[10];
    for (int i = 0; i < brojUplacenihBrojeva; i++) {
        scanf("%d", &uplaceniBrojevi[i]);
    }
    
    int dobitniBrojevi[7], brojac = 0;
    for (int i = 0; i < brojUplacenihBrojeva; i++) {
        for (int j = 0; j < 7; j++) {
            if (uplaceniBrojevi[i] == brojevi[j]) {
                dobitniBrojevi[brojac] = uplaceniBrojevi[i];
                brojac++;
                break;
            }
        }
    }
    
    if (brojac != 0) {
        printf("Pogodaka je %d:", brojac);
        for (int i = 0; i < brojac; i++) {
            printf(" %d", dobitniBrojevi[i]);
        }
    } else {
        printf("Nema pogodaka");
    }
    

    return 0;
}

Lab 4 - Tigar, ovca, tapir

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

#define MAX 20

int main() {
int R, S, St, Ov, Ta;
char polje[20][20], poljeOv[20], poljeSt[20], poljeTa[20];
int vrijemeS = 0, vrijemeO = 0, vrijemeT = 0;
char unos[3][2];

scanf("%d %d", &R, &S);

for (int i = 0; i < R; i++) {
	for (int j = 0; j < S; j++) {
		scanf(" %c", &polje[i][j]);
	}
}
scanf("%d %d %d", &St, &Ov, &Ta);

for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 2; j++) {
		scanf(" %c", &unos[i][j]);
	}
}
// dobivanje pozicija
for (int i = 0; i < R; i++) {
	if (unos[i][0] == 'S') {
		St = unos[i][1] - '0';
	}
	if (unos[i][0] == 'O') {
		Ov = unos[i][1] - '0';
	}
	if (unos[i][0] == 'T') {
		Ta = unos[i][1] - '0';
	}
}

//unos gore

for (int i = 0; i < S; i++) {
	if (polje[St - 1][S - i - 1] == 'T') {
		vrijemeS += 15;
	}
	if (polje[St - 1][S - i - 1] == 'S') {
		vrijemeS += 35;
	}
	if (polje[St - 1][S - i - 1] == 'L') {
		vrijemeS += 75;
	}
}
for (int i = 0; i < S; i++) {
	if (polje[Ov - 1][S - i - 1] == 'T') {
		vrijemeO += 40;
	}
	if (polje[Ov - 1][S - i - 1] == 'S') {
		vrijemeO += 80;
	}
	if (polje[Ov - 1][S - i - 1] == 'L') {
		vrijemeO += 10;
	}
}
for (int i = 0; i < S; i++) {
	if (polje[Ta - 1][S - i - 1] == 'T') {
		vrijemeT += 110;
	}
	if (polje[Ta - 1][S - i - 1] == 'S') {
		vrijemeT += 5;
	}
	if (polje[Ta - 1][S - i - 1] == 'L') {
		vrijemeT += 30;
	}
}

if (vrijemeS < vrijemeO && vrijemeS < vrijemeT) {
	printf("Pobjednik je sibirski tigar - %ds do cilja.", vrijemeS);
}
if (vrijemeO < vrijemeS && vrijemeO < vrijemeT) {
	printf("Pobjednik je ovca - %ds do cilja.", vrijemeO);
}
if (vrijemeT < vrijemeO && vrijemeT < vrijemeS) {
	printf("Pobjednik je tapir - %ds do cilja.", vrijemeT);
}
if (vrijemeS == vrijemeO && vrijemeS < vrijemeT) {
	printf("Nema pobjednika.");
}
if (vrijemeS == vrijemeT && vrijemeS < vrijemeO) {
	printf("Nema pobjednika.");
}
if (vrijemeT == vrijemeO && vrijemeT < vrijemeS) {
	printf("Nema pobjednika.");
}



return 0;

}

Spil Karata - kod

void poredakKarata(int niz[], int minKarte, int maxKarte) {

int x = 0;

for (int i = minKarte - 1; i < maxKarte - 1; i++) {
	for (int j = minKarte - 1; j < maxKarte - x - 1; j++) {
		if (niz[j] > niz[j + 1]) {
			int temp = niz[j];
			niz[j] = niz[j + 1];
			niz[j + 1] = temp;
		}

	}
	x++;
}

}

#define MAX 200

int main() {

int brojKarata = 0;
int redak = 0;

scanf("%d %d", &brojKarata, &redak);

int niz[MAX] = { 0 };


for (int i = 0; i <= brojKarata; i++) {
	niz[i] = brojKarata - i;
}

int intervalMijesanjaKarata[2] = { 0 };

for (int i = 0; i < redak; i++) {
	scanf("%d %d", &intervalMijesanjaKarata[0], &intervalMijesanjaKarata[1]);

	poredakKarata(niz, intervalMijesanjaKarata[0], intervalMijesanjaKarata[1]);
}
printf("\n");

for (int i = 0; i <= brojKarata; i++) {
	printf("%d ", niz[i]);
}

return 0;

}

1. kolokvij 2021. - 1. zadatak - 5 bodova

/*1. kolokvij, zadatak za 5 bodova: Ne vidim tekst zadatka ali išao je nešto kao: unesi broj A i B koji moraju biti u granicama <9, 99) i čija razlika mora biti barem 20. Ukoliko je neki broj krivo unesen ponovi unos samo za njega. Treba izračunati zbroj znamenki ta dva broja i prikazati članove niza A-B koji su djeljivi sa tim zbrojem znamenki.

Test caseovi: 
Ulaz: 100 
        9 
        9 
        99 
        30
Izlaz: 21
       42 63 84
       
Ulaz:   105 
        78
        12
Izlaz 18
        18 36 54 72

Ulaz: 50
    2
    31
    13
    45
Izlaz: 13
        13 26 39*/
#include <stdio.h>
#include <math.h>

int unesiBroj() {
    int broj;
    do {
        scanf("%d", &broj);
    } while (broj <= 9 || broj > 99);
    
    return broj;
}

int zbrojZnamenki(int broj) {
    int zbroj = 0;
    while (broj > 0) {
        zbroj += broj % 10;
        broj /= 10;
    }
    return zbroj;
}

int main() {
    
    int a, b;
    
    do {
       a = unesiBroj();
       b = unesiBroj();
    } while (abs(abs(a)-abs(b)) < 20);
    
    int zbrojSvihZnamenki = zbrojZnamenki(a) + zbrojZnamenki(b);
    
    printf("%d\n", zbrojSvihZnamenki);
    
    if (a > b) {
        for (int i = b; i <= a; i++) {
            if (i % zbrojSvihZnamenki == 0) {
                printf("%d ", i);
            }
        }
    }
    else if (a < b) {
        for (int i = a; i <= b; i++) {
            if (i % zbrojSvihZnamenki == 0) {
                printf("%d ", i);
            }
        }
    }

    return 0;
}

1. Zadatak kolokvij utorak part 3

/PRVI ZADATAK KOLOKVIJ
Zadatak: Potrebno je ucitati broj N, koji oznacava broj radijatora u stanu. Nakon toga slijedi N decimalnih brojeva koji oznacavaju
temperaturu pojedniog radijatora. Potrebno je ispisati temperaturnu razliku izmedu radijatora
koji je najblize bojleru i radijatora koji je najdalje.
Test case #1:
Najdalje je radijator koji ima temperaturu 30.2, a najbliže radijator koji ima temperaturu 41.1
Primjer ulaza:
5
34.1 35.2 30.2 37.7 41.1
Primjer izlaza:
Razlika je 10.9 C.
Test case #2:
Primjer ulaza:
1
33.3
Primjer izlaza:
Razlika je 0.0 C.
/

int main() {

int N;
float radtemp[10];
scanf("%d", &N);
for (int i = 0; i < N; i++) {
	scanf("%f", &radtemp[i]);
}
float najmanja = radtemp[0];
for (int i = 0; i < N; i++) {
	if (najmanja > radtemp[i]) {
		najmanja = radtemp[i];
	}
}
float najvisa = radtemp[0];
for (int i = 0; i < N; i++) {
	if (najvisa < radtemp[i]) {
		najvisa = radtemp[i];
	}
}
float razlika = najvisa - najmanja;
printf("Razlika je %.1f C.", razlika);
return 0;

}

1. kolokvij 2022. - 2. zadatak - prosta_faktorizacija1

/*
Za uneseni broj X ispisati njegove proste faktroe.
Ukoliko je broj X prost, ispisati "X je prost broj. Inace ispisati njegoce faktore u obliku X=f1f2f3..*fn
Prijedlog za rijesavanje: kada se pronade prvi prosti faktor, zapisati ga u poseban niz a orginalni broj podijeliti s tim faktorom i nastaviti proces do se ne dode do 1, te na kraju ispisati niz.

Test case-ovi:
Ulaz:
15
Izlaz:
15 = 3 * 5

Ulaz:
100
Izlaz:
100 = 2 * 2 * 5 * 5

Učaz:
17
Izlaz:
17 je prost broj"
*/

#include <stdio.h>

int main() {
    
    int broj;
    
    scanf("%d", &broj);
    
    int faktor[100];
    int temp = broj, j = 0;
    while (temp > 1) {
        for (int i = 2; i <= temp; i++) {
            if (temp % i == 0) {
                faktor[j] = i;
                j++;
                temp /= i;
                break;
            }
        }
    }
    
    if (j != 1) {
        printf("%d = ", broj);
        for (int i = 0; i < j; i++) {
            if (i == 0) {
                printf("%d", faktor[i]);
            } else {
                printf(" * %d", faktor[i]);
            }
        }
    } else {
        printf("%d je prosti broj", broj);
    }

    return 0;
}

1. Kolokvij Programiranje grupa utorak part1

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
/PRVI ZADATAK KOLOKVIJ
Zadatak: unos x y a b, ispisi brojeve u intervalu[x,y) koji su dijeljivi s a ili b ali ne oba istovremeno
Nema test caseova
/

int main()
{
int x, y, a, b;
scanf("%d %d", &x, &y);
scanf("%d %d", &a, &b);
for (x; x < y; x++) {
if (x % a == 0 && x % b != 0) {
printf("%d\n", x);
}
else if (x % a != 0 && x % b == 0) {
printf("%d\n", x);
}
}
}

/*DRUGI ZADATAK KOLOKVIJ
Zadatak: Napisati program u C koji sa tipkovnice ucitava rezultate nogometnih utakmica u sljedecem formatu:
broj_tima1 broj_tima2 golovi_tima1 golovi_tima2 (na primjer 1 2 4 3)
Timova u skupini ima 5, oznaceni rednim brojevima od 1 do 5.

Ucitavanje zavrsava kada se upisu sve nule ili kada je broj prvog tima jednak broju drugog tima.

Napisati program koji ce napraviti i ispisati tablicu bodova skupine. Tablica izgleda ovako:
broj_tima Bodovi

Na kraju ispisati tim s najvi�e bodova porukom" Najvise bodova ima tim: _".
Ako ih ima vise - sve njih navesti, kao na primjer: " Najvise bodova ima tim: 3 4 5".

Napomena: pobjeda donosi 3 boda, nerijeseno 1, a poraz 0 bodova.
*/

int main() {
int points[5] = { 0 };
int team1, team2, goals1, goals2;

while (1) {

    scanf("%d %d %d %d", &team1, &team2, &goals1, &goals2);

    if (team1 == 0 || team2 == 0 || team1 == team2) {
        break;
    }
    if (goals1 > goals2) {           
        points[team1 - 1] += 3;
    }
    else if (goals1 < goals2) {
        points[team2 - 1] += 3;
    }
    else {
        points[team1 - 1] += 1;
        points[team2 - 1] += 1;
    }
}

// Ispis tablice bodova
printf("\nTablica bodova:\n");
printf("Broj_tima  Bodovi\n");
for (int i = 0; i < 5; i++) {
    printf("%5d  %7d\n", i + 1, points[i]);
}

// Pronalaženje tima s najviše bodova
int maxPoints = 0;
printf("\nNajvise bodova ima tim:");
for (int i = 0; i < 5; i++) {
    if (points[i] > maxPoints) {
        maxPoints = points[i];
    }
}

for (int i = 0; i < 5; i++) {
    if (points[i] == maxPoints) {
        printf(" %d", i + 1);
    }
}
printf("\n");

return 0;

}

Niz Compare

//Niz compare zadatak, labosi četvrtak 09.00
/*Prijatelj pohađa kolegij programiranje u C, i na zadatku na vježbi mu dolazi sljedeći zadatak:
Potrebno je učitati dva niza, A i B koji su jednake duljine (zadano unosom varijable N). Nakon toga, potrebno je usporediti
svaki element niza A sa elementom na istom indeksu niza B. Ako je element niza A manji od onog iz B, zapišite 0, u
suprotnom zapišite 1. Tako dobiveni binarni broj je potrebno pretvoriti u dekadski. Duljina nizova A i B neće biti veća od 50.
Pomognite prijatelju da uspješno riješi zadatak */

//TEST CASE
/*Primjer ulaza:
3
3 9 9
8 0 -45
Primjer izlaza:
3
*/

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>

int main()
{
long long int n;
long long int nizA[50];
long long int nizB[50];
long long int nizC[50];
long long int dek = 0;

scanf("%lld", &n);

for (long int i = 0; i < n; i++)
{
    scanf("%lld", &nizA[i]);
}
for (long int i = 0; i < n; i++)
{
    scanf("%lld", &nizB[i]);
}

for (long int i = 0; i < n; i++)
{
    if (nizA[i] < nizB[i])
    {
        nizC[i] = 0;
    }
    else {
        nizC[i] = 1;
    }
}

for (long int i = 0; i < n; i++)
{
    if (nizC[i] == 1)
    {
        dek +=  nizC[i] * pow(2, n - 1 - i);
    }
}
printf("%lld", dek);

}

1. kolokvij 2021. - 2. zadatak - 15 bodova

/*
. Napisite C program koji ce ucitati matricu brojeva (gdje je svaki broj manji od 100000000), te provesti x operacija nad matricom. Svaka operacija ce zamjeniti svaki broj u matrici zbrojem njegovih znamenki. Nakon zavrsetka potrebno je ispisati najmanji i najveci broj koji se nalaze u matrici, zajedno s retkom i stupcem u kojem se nalaze. Ukoliko ima vise istih brojeva, potrebno je ispisati onog koji se nalazi u manjem retku. Ukoliko se dva broja nalaze u istom retku, ispisati onaj koji se nalazi u manjem stupcu.

Na pocetku se ucitavaju prirodni brojevi n i m koji oznacavaju broj redaka i broj stupaca matrice, te broj x koji oznacava broj transformacija koje je potrebno provesti nad matricom. Potom je potrebno ucitati matricu i na kraju ispisati trazeni rezultat.

Nema test case-ova
*/

#include <stdio.h>

#define MAX 10

int zbrojZnamenki(int broj) {
    int zbrojZnamenki = 0;
    while (broj > 0) {
        zbrojZnamenki += broj % 10;
        broj /= 10;
    }
    
    return zbrojZnamenki;
}

int main() {

    int n, m, x;
    
    scanf("%d %d", &n, &m);
    int matrica[MAX][MAX];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            scanf("%d", &matrica[i][j]);
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            printf("%d ", matrica[i][j]);
        }
        printf("\n");
    }
    
    scanf("%d", &x);
    
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < n; j++) {
            for (int k = 0; k < m; k++) {
                matrica[j][k] = zbrojZnamenki(matrica[j][k]);
                printf("%d ", matrica[j][k]);
            }
            printf("\n");
        }
        printf("\n");
    }
    
    int min = 1000, max = 0, minRedak = 0, maxRedak = 0, minStupac = 0, maxStupac = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (matrica[i][j] > max) {
                    max = matrica[i][j];
                    maxRedak = i + 1;
                    maxStupac = j + 1;
                } 
            else if (matrica[i][j] == max) {
                    if (i + 1 < maxRedak) {
                        max = matrica[i][j];
                        maxRedak = i + 1;
                        maxStupac = j + 1;
                    } else if (j + 1 < maxStupac) {
                        max = matrica[i][j];
                        maxRedak = i + 1;
                        maxStupac = j + 1;
                    }
                }
            else if (matrica[i][j] < min) { 
                    min = matrica[i][j];
                    minRedak = i + 1;
                    minStupac = j + 1;
                }
            else if (matrica[i][j] == max) {
                    if (i + 1 < maxRedak) {
                        max = matrica[i][j];
                        maxRedak = i + 1;
                        maxStupac = j + 1;
                    } else if (j + 1 < maxStupac) {
                        max = matrica[i][j];
                        maxRedak = i + 1;
                        maxStupac = j + 1;
                    }
                }
        }
    }
    
    printf("Najveci element matrice je %d i nalazi se u %d. redu i %d. stupcu.\n", max, maxRedak, maxStupac);
    printf("Najmanji element matrice je %d i nalazi se u %d. redu i %d. stupcu.", min, minRedak, minStupac);
    
    
    return 0;
}

lokvice i djecica

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
int N;
int skup[100] = { 0 };
int skup2[5] = { 0 };
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%1d", &skup[i]);

}
for (int i = 0; i < N; i++) {
	if (skup[i] == 1) {
		skup2[0]++;

	}
	if (skup[i] == 2) {
		skup2[1]++;

	}
	if (skup[i] == 3) {
		skup2[2]++;

	}
	if (skup[i] == 4) {
		skup2[3]++;

	}
	if (skup[i] == 5) {
		skup2[4]++;

	}

}


//odredimo max od skup2
int max = skup2[0];
int najmetar = 1;
for (int i = 1; i < 5; i++) {
	if (skup2[i] > max) {
		max=skup2[i];
		najmetar = i + 1;
	}
	
}
int cnt = 0;
for (int i = 0; i < 5; i++) {
	if(skup2[i]==max){
		cnt++;
	}
}
if (cnt == 1) {

	printf("Najbolje je stati na %d. metar, gazi se ukupno u %d lokvi.", najmetar, max);
}
else {
	printf("Nema pobjednika, cekaj iducu kisu.");
}

}

1. Kolokvij 2022. - 1. zadatak

/*
Napisi program u C koji sa tipkovnice ucitava dva peteroznamenkasta broja A i B takvi da B vece od A za najmanje 100.
Pocevsi od A do B (ukljuceno) pretraziti sve brojeve takve da su prva i druga znamenka relicite izmedu sebe i razlicite od nule, a da je broj polindrom (jednako se pise s lijeve i s densne strane). Primjer takvog broja 21012.
Ispisati prvi i zadnji takav broj, zatim ukupan broj takvih brojeva na takvom intervalu.
Ako je na zadanom intervalu samo jedan broj - ispisati samo njega, a ako nema takvih brojeva ispisati "Nema takvog broja"

Test case-ovi:
Ulaz
10000 11000
Izlaz
Nema takvog broja

Ulaz
11922 12022
Izlaz
12021

Ulaz
21001 34000
Izlaz
21012 32923 100
*/

#include <stdio.h>

int unesiBroj() {
    int broj, brojac;

    do {
        brojac = 0;
        scanf("%d", &broj);
        int temp = broj;
        
        while (temp > 0) {
            temp /= 10;
            brojac++;
        }
        
    } while (brojac < 5);
    
    return broj;
}

int main() {

    int a, b;
    
    do {
        a = unesiBroj();
        b = unesiBroj();
    } while ((a + 100) > b);
    
    int znamenka[5], polindrom[1000];
    int brojac2 = 0;
    for (int i = a; i <= b; i++) {
        int temp2 = i;
        for (int j = 0; j < 5; j++) {
            znamenka[j] = temp2 % 10;
            temp2 /= 10;
        }
        if (znamenka[4] != 0 && znamenka[3] != 0 &&
            znamenka[4] != znamenka[3]) {
            if (znamenka[4] == znamenka[0] && 
                znamenka[3] == znamenka[1]) {
                polindrom[brojac2] = i;
                brojac2++;
            }
        }
    }
    
    printf("\n");
    
    if (brojac2 > 1) {
        printf("%d %d %d", polindrom[0], polindrom[brojac2 - 1], brojac2);
    } else if (brojac2 == 1) {
        printf("%d", polindrom[0]);
    } else {
        printf("Nema takvog broja");
    }

    return 0;
}

Vjezba 5 - Branimir i rukomet (zadnji test case ne izvrsava na vrijeme, ako neko ima bolji kod nek zamijeni)

branimir i rukuomet.pdf

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#define MAX 150

int sumaZnamenki(int a, int b) {
    int sumaZnamenki = 0;
    for (int i = a; i <= b; i++) {
        int temp = i;
        while (temp) {
            sumaZnamenki += temp % 10;
            temp /= 10;
        }
    }
    return sumaZnamenki;
}

int brojDijelitelja(int a, int b) {
    int brojDijelitelja = 0;
    for (int i = a; i <= b; i++) {
        for (int j = 2; j < i; j++) {
            if (i % j == 0) {
                brojDijelitelja++;
            }
        }
    }
    return brojDijelitelja;
}

int main() {

    int n;
    scanf("%d", &n);

    int a, b, niz[MAX];
    for (int i = 0; i < n; i++) {
        scanf("%d %d", &a, &b);
        if (a > b) {
            int temp = a;
            a = b;
            b = temp;
        }
        if (brojDijelitelja(a, b) == 0) {
            niz[i] = 0;
        }
        else {
            niz[i] = sumaZnamenki(a, b) % brojDijelitelja(a, b);
        }
    }

    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (niz[j] > niz[i]) {
                int temp = niz[i];
                niz[i] = niz[j];
                niz[j] = temp;
            }
        }
    }

    printf("%d", niz[0]);
    for (int i = 1; i < n; i++) {
        printf(", %d", niz[i]);
    }

    return 0;
}

Lab 4 - Meteoroloski podaci

/Meteoroloski podaci, zadatak: unesi matricu od 3 do 10 redaka(5 stupaca), potom zapisi podatke u tablicu. Nakon toga u novu matricu unesi
vrijednosti koje su manje od prosjeka tog stupca.(unose se svi podaci iz reda)Zatim iz te nove matrice izdvojite redak koji ima najmanju vrijednost navedenog stupca.
/

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>

int main()
{
int i, j, n, m = 5, mat[10][10], mat2[10][10], avg = 0, k = 0, f = 0, slab = 0;

do {
	scanf("%d", &n);
	if (n < 3 || n > 10) {
		printf("Ponovi unos!\n");
	}
} while (n < 3 || n > 10);

for (i = 0; i < n; i++) {
	for (j = 0; j < m; j++) {
		scanf("%d", &mat[i][j]);
	}
}

for (i = 0; i < n; i++) {
	avg += mat[i][3];
}

avg /= n;


for (i = 0; i < n; i++) {
	for (j = 0; j < m; j++) {
		if (mat[i][3] < avg) {
			mat2[k][j] = mat[i][j];
			f = 1;
		}
	}
	if (f == 1) {
		f = 0;
		k++;
	}
}

for (i = 0; i < k; i++) {
	for (j = 0; j < m; j++) {
		if (j == 0) {
			printf("%0.3d ", mat2[i][j]);
		}
		else {
			printf("%d ", mat2[i][j]);
		}

	}
	printf("\n");
}

slab = mat2[0][1];

printf("\nNajslabiji vjetar:\n");

for (i = 0; i < k; i++) {
	if (mat2[i][1] <= slab) {
		slab = mat2[i][1];
	}
}

for (i = 0; i < k; i++) {
	if (mat2[i][1] <= slab) {
		for (j = 0; j < m; j++) {
			if (j == 0) {
				printf("%0.3d ", mat2[i][j]);
			}
			else {
				printf("%d ", mat2[i][j]);
			}
		}
		printf("\n");
	}
}


return 0;

}

Prosjek prosjeka

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 200

double prosjekBroja(int a) {
int zbrojZn = 0;
int brojac = 0;
int temp = a;
while (temp != 0) {
zbrojZn += temp % 10;
temp /= 10;
brojac++;
}
double prosjekBroja = (double)zbrojZn / brojac;
return prosjekBroja;
}

int main()
{
int n, counter = 0;
double prosjekProsjeka = 0;
long long int niz[MAX];
scanf("%d", &n);
while (n < 1 || n>100) {
printf("Nepravilan unos!\n");
scanf("%d", &n);
}
for (int i = 0; i < n; i++) {
scanf("%lld", &niz[i]);
counter++;
}
// bubble sort
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (niz[j] > niz[i]) {
int temp = niz[i];
niz[i] = niz[j];
niz[j] = temp;
}
}
}

printf("Prosjek prosjeka: ");
for (int i = 0; i < n; i++) {
	 prosjekProsjeka += prosjekBroja(niz[i]) / counter;
	 

}
printf("%.2f", prosjekProsjeka);
printf("\nProsjeci brojeva: ");
for (int i = 0; i < n; i++) {
	double prosjekBrojeva = prosjekBroja(niz[i]);
	printf("%.2f ", prosjekBrojeva);
}

}

Pitanje

@emanuelkufrin
Nez kak da ti napisem poruku prek ovog mrtvog githuba a ne zelim spammat u grupu bezveze. Ovaj zadatak s pijunima di ih brojis u svakom retku i stupcu ti je malo kriv. Jer ti zbroji pijune ako se nalaze u istom najvecem retku s P i najvecem stupcu s P pa ti kao zbroji 2. To bas razmisljam kak da nap pa reko ti si napravio i da vidim kak to pa je isto i kod tebe. (test case #3)

1. kolokvij 2022. - 1. zadatak - djelitelj_4

/*
Napisite C program koji ce traziti unos 2 prirodna broja A i B, gdje je broj A u intervalu [10, B], a broj B u intervalu [A, 1000000. Ukoliko neki od brojeva nisu u intervalu, potrebno je ponoviti unos oba broja.
Kao rezultat je potrebno ispisati sve brojeve u intervalu [A, B] koji su djeljivi sa zbrojem svoje prve i zadnje znamenke.
Test case-ovi:
Ulaz:
10 20
Izlaz:
19 12 18 20

Ulaz:
20 10
102 131
Izlaz:
Neispravan unos!
102 108 110 120 126 130

Ulaz:
5 1000
1000 1000001
9965 10014
Izlaz:
Neispravan unos!
Neispravan unos!
9984 9990 10000 10002 10008 10010
*/

#include <stdio.h>

int main() {
    
    int a, b;
    
    do {
        scanf("%d %d", &a, &b);
        if (a < 10 || a > b || b > 1000000) {
            printf("Neispravan unos!\n");
        }
    } while (a < 10 || a > b || b > 1000000);
    
    for (int i = a; i <= b; i++) {
        int temp = i;
        int zadnjaZnamenka = temp % 10;
        while (temp > 10) {
            temp /= 10;
        }
        int prvaZnamenka = temp;
        if (i % (prvaZnamenka + zadnjaZnamenka) == 0) {
            printf(" %d", i);
        }
    }
    
    return 0;
}

Tekst zadatka - Spil karata

Boza zvani pub je vrhunski kartas. Da bi bio vrhunski kartas , mora imati nekoliko vrlo vaznih sposobnosti, od kojih je jedna da neprimjetno moze poredati karte u dijelu spila tijekom mijesanja. Vas zadatak je da kao promatrac , napravite program koji ce predvidjeti kako su karte izmjesane uzimajuci u obzir boz inu sposobnost.

Potrebno je napraviti funkciju koja ce za zadani niz proslijeden kao parametar, te za dva indexa idx1 i idx2, poredati karte izmedu idx1 i idx2.

Karte su numerirane od 1 do n(n se ucitava), i inicijalno su poredane silazno. Nakon toga potrebno je ucitati k redaka, gdje svaki redak sadrzi idx1 i idx2, te poredati karte prema gore opisanom postupku.

1. kolokvij 2022. - 1. zadatak - radijatori

/*
Potrebno je ucitati broj N, koji oznacava broj radijatora u stanu. Nakon toga slijedi N decimalnih brojeva koji oznacavaju temperaturu pojedinog radijatora. Potrebno je ispisati temperaturnu razliku izmedu radijatora najblize bojleru i radijatora koji je najdalje.
Radijator najblize bojleru je onaj s najvecom temperaturom, a onaj koji je najdalje ima najmanju temperaturu.

Test case-ovi
Ulaz:
5
34.1 35.2 30.2 37.7 41.1
Izlaz:
Ralika je: 10.8 C

Ulaz:
1
31.1
Izlaz:
Ralika je: 0.0 C

Ulaz:
4
32.2 32.2 32.2 32.2
Izlaz:
Ralika je: 0.00
*/

#include <stdio.h>

int main() {
   
    int brojRadijatora;
    
    scanf("%d", &brojRadijatora);
    
    double temperatura[100];
    
    for (int i = 0; i < brojRadijatora; i++) {
        scanf("%lf", &temperatura[i]);
    }

    double najblizi = temperatura[0], najdalji = temperatura[0];
    
    for (int i = 0; i < brojRadijatora; i++) {
        if (temperatura[i] > najblizi) {
            najblizi = temperatura[i];
        } else if (temperatura[i] < najdalji) {
            najdalji = temperatura[i];
        }
    }
    
    printf("Razlika je: %.1lf C", najblizi - najdalji);
    
    return 0;
}

Lab 4 - Balkan brda i planine

/*Igrate jednu jako jako zanimljivu igru, a radi se o tome da na brdovitom Balkanu želite što više izravnati brda i planine kako bi prostor bio što ujednačeniji jer je to garancija ekonomskog uspjeha.
Svaka lokacija na mapi ima određenu visinu, a poravnavanje se radi na način da se visina prilagođava s obzirom na susjedne lokacije uzimajući prosjek svih susjednih lokacija i trenutne lokacije, te to postaje nova visina.
Nastavlja se iterativno s procesom dok god najveća razlika izmežu bilo koje dvije točke ne bude manja od 1.

Primjerice, ako je zadana mapa od 3 retka i 3 stupca (neće biti više od 20 redaka ili stupaca), gdje je u sredini brdo visine 2, poravnavanje se vrši samo u jednom koraku:
0 0 0
0 2 0
0 0 0

Nakon poravnavanja dobiva se sljedeća konfiguracija terena:
0.50 0.33 0.50
0.33 0.22 0.33
0.50 0.33 0.50

Primjerice, gornji lijevi ugao [0,0] se računa kao (0+0+0+2)/4 = 0.5 (zbroj visina na trenutnoj i lokacijama koje su susjedne - [0,0]+[0,1]+[1,0]+[1,1])
Središnja lokacija se računa na isti način, ali ima 8 susjeda - [0,0], [0,1], [0,2], [1,0], [1,2], [2,0], [2,1], [2,2] => (0+0+0+0+0+0+0+0+2)/9 = 0.22.

Savjet za rješavanje
Pošto koraka potencijalno ima više, potrebno je koristiti glavnu i pomoćnu matricu, računati nove visine i spremati ih u pomoćnu matricu, te na kraju svakog koraka prepisati vrijednosti iz pomoćne u glavnu matricu.
Koristiti tip podatka za decimalni broj dvostruke preciznosti, pri čemu se učitava s %lf, a ispisuje sa %f.*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

#define MAX 20

int main() {
double mapa[MAX][MAX];
int red, stu;
scanf("%d %d", &red, &stu);

for (int i = 0; i < red; i++) {
	for (int j = 0; j < stu; j++) {
		scanf(" %lf", &mapa[i][j]);
	}
}

double konacno[MAX][MAX], tmp[MAX][MAX], maxRazlika = 0;
double suma = 0, br = 0., avg;
int koraci = 0;

for (int i = 0; i < red; i++) {
	for (int j = 0; j < stu; j++) {
		for (int m = 0; m < red; m++) {
			for (int n = 0; n < stu; n++) {
				if (m != i || n != j) {
					float razlika = mapa[i][j] - mapa[m][n];
					if (razlika < 0) {
						razlika *= -1;
					}
					if (razlika > maxRazlika) {
						maxRazlika = razlika;
					}
				}
			}
		}
	}
}

while (maxRazlika >= 1) {
	koraci++;
	for (int i = 0; i < red; i++) {
		for (int j = 0; j < stu; j++) {
			for (int m = (i == 0 ? i : i - 1); m <= i + 1 && m < red; m++) {
				for (int n = (j == 0 ? j : j - 1); n <= j + 1 && n < stu; n++) {
					suma += mapa[m][n];
					br++;
				}
			}
			avg = suma / br;
			suma = 0;
			br = 0.;
			tmp[i][j] = avg;
		}
	}
	for (int i = 0; i < red; i++) {
		for (int j = 0; j < stu; j++) {
			mapa[i][j] = tmp[i][j];
		}
	}
	maxRazlika = 0;
	for (int i = 0; i < red; i++) {
		for (int j = 0; j < stu; j++) {
			for (int m = 0; m < red; m++) {
				for (int n = 0; n < stu; n++) {
					if (m != i || n != j) {
						double razlika = mapa[i][j] - mapa[m][n];
						if (razlika < 0) {
							razlika *= -1;
						}
						if (razlika > maxRazlika) {
							maxRazlika = razlika;
						}
					}
				}
			}
		}
	}
}

printf("Potrebno je %d koraka. Konacna matrica:\n", koraci);
for (int i = 0; i < red; i++) {
	for (int j = 0; j < stu; j++) {
		if (j == stu - 1) {
			printf("%.2f\n", mapa[i][j]);
		}
		else {
			printf("%.2f ", mapa[i][j]);
		}
	}
}
return 0;

}

vjezba3 - mala anica

/*
Mala Anica nikako ne može naučiti tablicu množenja, te je odlučila zamoliti svoje prijatelje s TVZ-a (Vas) koji uče programirati u C-u da joj napišu program koji će joj za određeni broj K ispisati rezultate množenja svih parnih brojeva od 1 do N sa zadanim brojem. Anica je načula od svojih prijatelja iz škole da će ju učiteljica pitati tablicu množenja tako da zadani broj pomnoži samo s parnim brojevima i izrecitira rezultate na način da prvih X i posljednjih Y brojeva kaže normalnim redoslijedom, a one u sredini obrnutim redoslijedom.

Potrebno je učitati brojeve N, K, X i Y, te ispisati rezultate u traženom formatu.

X+Y će biti manji od N/2, tj., vrijedi X+Y < N/2.

Primjer ulaza:
10 7
1 2
Primjer izlaza:
14
42
28
56
70

Primjer ulaza:
20 2
5 3
Primjer izlaza:
4
8
12
16
20
28
24
32
36
40
*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

int n, k, x, y;
int broj[100] = {};

scanf("%d %d", &n, &k);
do {
    scanf("%d %d", &x, &y);
} while (x + y >= n / 2);

int brojevi = 0;
for (int i = 2; i <= n; i += 2) {
    broj[brojevi] = i * k;
    brojevi++;
}
                                                          
for (int i = 0; i < (brojevi - x - y) / 2; i++) {  
    int temp = broj[x + i]; 
    broj[x + i] = broj[brojevi - y - i - 1]; 
    broj[brojevi - y - i - 1] = temp; 
}

for (int i = 0; i < brojevi; i++) {
    printf("%d\n", broj[i]);
}

return 0;

}

1. kolokvij utorak part 2

/*DRUGI ZADATAK KOLOKVIJ
Zadatak: upises C(character) N i program ce napravit Nx(N-1) matricu al da izgleda ko trokut tipa nesto ovako:
*              +
3              5     
ce ispisat     +
*              ++ 
**             +++
*              ++   
               +
*/
int main() {
    float N;
    char C;
    scanf("%c", &C);
    scanf("%f", &N);

       for (int i = 1; i < N/2+1; i++) {
           for (int j = 0; j < i; j++) {
               printf("%c", C);
           }
           printf("\n");
    }
       for (int i = N / 2; i > 0; i--) {
           for (int j = 0; j < i; j++) {
               printf("%c", C);
           }
           printf("\n");
       }
       return 0;
}

Vjezba 4 Most

Zadaci za vježbu_ Vjezba za lab 4 - Most.pdf

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

#define MAX 10000



int main()
{
    int N;
    scanf("%d", &N);

    long long int niz[MAX] = { 0 };

    for (int i = 0; i < N; i++) {
        scanf("%lld", &niz[i]);
    }

    long long int najRast = 0;
    long long int pocetnaDionica = 0;
    long long int krajnjaDionica = 0;
    long long int max = 0;
    long long int maxPocDi = 0;
    long long int maxKrajDi = 0;


    for (int i = 0; i < N; i++) {
        if (niz[i + 1] > niz[i]) {
            if (najRast == 0) {
                pocetnaDionica = i + 1;
            }
            najRast++;
        }
        else {
            krajnjaDionica = i + 1;
            if (najRast > max) {
                max = najRast;
                maxPocDi = pocetnaDionica;
                maxKrajDi = krajnjaDionica;
            }
            najRast = 0;
        }
    }

    printf("Najveci rast: %lld. - %lld. dionica\n", maxPocDi, maxKrajDi);
    printf("Brojevi:");
    for (int i = maxPocDi - 1; i < maxKrajDi; i++) {
        printf(" %lld", niz[i]);
    }

    return 0;
}

1. kolokvij utorak part 3

/*DRUGI ZADATAK KOLOKVIJ
Zadatak: Prijatelji su odigrali partiju drustvene strateske igre u kojoj broj bodova ovisi o ramjestaju figura na ploci. Napisite program koji racuna
pobjednika u svakoj partiji, ako su pravila igre sljedeca: Igraju dva igraca, C crni i B bijeli sa po tri figurice svaki. Svaka figurica nosi 1 bod.
Ploca je velicine nxm, pri cemo se broj n unosi na pocetku programa. Osim figurica igraca, postoje jos dvije dodatne figurice - Z zmaj koji ponistava bodove i
V vitez koji donosi dvostruke bodove. U onom retku i stupcu u kojem se nalazi zmaj, figurice igraca ne donose nikakve bodove, a vitez donosi dvostruke bodove
svakoj figurici igraca koja se nalazi u istom retku ili stupcu s njim.
Program ispisuje pobjednika za zadanju ulaznu plocu s postavljenim figuricama.
Test case #1: Test case #2: Test case #3:
Ulaz: Ulaz: Ulaz:
4 5 5
CCC. .C..C .C..C
V..Z BB..Z BB..Z
B... B..C. B..C.
BB.. ..... .....
Izlaz: V.... .V...
Pobjednik: B Izlaz: Izlaz:
Bodova: 5 Nema pobjednika. Pobjednik: C
Bodova: 3
*/
int main() {
int N;
char ploca[10][10];
scanf("%d", &N);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
scanf(" %c", &ploca[i][j]);
}
}

int redviteza = 0, stupacviteza = 0;
int redzmaja = 0, stupaczmaja = 0;
for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
        if (ploca[i][j] == 'V') {
            redviteza = i;
            stupacviteza = j;
        }
        else if (ploca[i][j] == 'Z') {
            redzmaja = i;
            stupaczmaja = j;
        }
    }
}
int bodoviB = 0, bodoviC = 0;
for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
        if (ploca[i][j] == 'B') {
            if (i == redzmaja || j == stupaczmaja) {
                continue;
            }
            else if (i == redviteza || j == stupacviteza) {
                bodoviB += 2;
            }
            else {
                bodoviB++;
            }
        }
        if (ploca[i][j] == 'C') {
            if (i == redzmaja || j == stupaczmaja) {
                continue;
            }
            else if (i == redviteza || j == stupacviteza) {
                bodoviC += 2;
            }
            else {
                bodoviC++;
            }

        }
    }
}
if (bodoviB > bodoviC) {
    printf("Pobjednik: B\nBodova: %d", bodoviB);
}
else if (bodoviC > bodoviB) {
    printf("Pobjednik: C\nBodova: %d", bodoviC);
}
else {
    printf("Nema pobjednika");
}
return 0;

}

vjezba3 - ubaci me

/*
Potrebno je učitati prirodni broj N, te u idućoj liniji N cijelih brojeva. Nakon toga učitava se broj X, te slijedi X linija gdje se učitava broj Ai i Bi. Za svaki par Ai i Bi, treba broj Ai ubaciti na mjesto Bi u nizu (broji se od 1 ne od 0 - pogledati test primjere), te ispisati niz.
Primjer ulaza:
5
1 3 5 6 3
2
9 1
99 7
Primjer izlaza:
9 1 3 5 6 3
9 1 3 5 6 3 99

Primjer ulaza:
10
7 5 -4 6 8 44 3 1 -1 4
5
1 1
1 1
1 6
1 7
1 8
Primjer izlaza:
1 7 5 -4 6 8 44 3 1 -1 4
1 1 7 5 -4 6 8 44 3 1 -1 4
1 1 7 5 -4 1 6 8 44 3 1 -1 4
1 1 7 5 -4 1 1 6 8 44 3 1 -1 4
1 1 7 5 -4 1 1 1 6 8 44 3 1 -1 4
*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 100

int main() {

int n, niz[MAX] = {}, x, ai, bi;

scanf("%d", &n);
for (int i = 0; i < n; i++) {
    scanf("%d", &niz[i]);
}

scanf("%d", &x);
for (int i = 0; i < x; i++) { 
    n++;                  
    scanf("%d %d", &ai, &bi); 
    for (int j = n - 1; j >= bi; j--) { 
        niz[j] = niz[j - 1]; 
    }
    niz[bi - 1] = ai;
    for (int k = 0; k < n; k++) {
        printf("%d ", niz[k]);
    }
    printf("\n");
}

return 0;

}

Kolokvij 1 - 2D Susjedi - KOSO

Potrebno je učitati sva broja, N i M, te matricu NxM, gdje je 1 <= N, M <= 10. Svaki element matrice je dvoznamenkasti
broj.
Susjed nekog broja u matrici je broj koji se nalazi koso od njega - gore-lijevo, dolje-lijevo, gore-desno ili dolje-desno.
Potrebno je ispisati sve brojeve matrice koji imaju zajedničku znamenku s barem jednim susjedom.
Napomena: kod provjere navedenog svojstva, broj ispisati ako zadovoljava gornji uvjet, inače ispisati "**" na njegovo
mjesto.

  1. Test case

Prvi broj u matrici je 11. Njegov jedini susjed je 26 i pošto nema niti jednu zajedničku znamenku, on ne zadovoljava traženog svojstvo. Pogledajmo broj 26 - njegovi susjedi su 11, 33, 42 i 91. Sa susjedom "42" on dijeli znamenku 2, te on zadovoljava traženo svojstvo

Primjer ulaza:
3 3
11 22 33
44 26 66
42 73 91
Primjer izlaza:


** 26 **
42 ** **

  1. Test case

Nema susjeda - nema zajedničkih znamenki.

Primjer ulaza:
1 1
17
Primjer izlaza:
**

  1. Test case

Primjer ulaza:
4 10
91 26 34 25 59 39 66 47 73 13
85 49 51 35 54 84 77 30 71 22
82 63 23 97 94 11 64 89 36 17
74 29 72 76 41 42 18 95 81 27
Primjer izlaza:
91 ** 34 25 59 ** ** 47 73 13
** 49 51 35 54 84 77 30 71 **
82 ** 23 97 94 11 64 89 36 17
** 29 72 ** 41 42 18 ** 81 **

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
    int n, m, temp_susjed;
    int i, j;

    int mat[10][10];
    char final_mat[10][10] = { {0} };

    scanf("%d %d", &n, &m);

    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            scanf("%d", &mat[i][j]);
        }
    }

    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {

            if (j != 0) {
                if (i != 0) {
                    temp_susjed = mat[i - 1][j - 1];

                    while (temp_susjed > 0) {
                        if (temp_susjed % 10 == mat[i][j] / 10 || temp_susjed % 10 == mat[i][j] % 10) {
                            final_mat[i][j] = 1;
                        }

                        temp_susjed /= 10;
                    }
                }

                if (i != n - 1) {
                    temp_susjed = mat[i + 1][j - 1];

                    while (temp_susjed > 0) {
                        if (temp_susjed % 10 == mat[i][j] / 10 || temp_susjed % 10 == mat[i][j] % 10) {
                            final_mat[i][j] = 1;

                        }

                        temp_susjed /= 10;
                    }
                }
                
            }

            if (j != m - 1) {
                if (i != 0) {
                    temp_susjed = mat[i - 1][j + 1];

                    while (temp_susjed > 0) {
                        if (temp_susjed % 10 == mat[i][j] / 10 || temp_susjed % 10 == mat[i][j] % 10) {
                            final_mat[i][j] = 1;

                        }

                        temp_susjed /= 10;
                    }
                }

                if (i != n - 1) {
                    temp_susjed = mat[i + 1][j + 1];

                    while (temp_susjed > 0) {
                        if (temp_susjed % 10 == mat[i][j] / 10 || temp_susjed % 10 == mat[i][j] % 10) {
                            final_mat[i][j] = 1;
                        }

                        temp_susjed /= 10;
                    }
                }
            }
        }
    }

    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            if (final_mat[i][j]) {
                printf("%d ", mat[i][j]);
            }
            else {
                printf("** ");
            }
        }

        printf("\n");
    }

    return 0;
}

Lab 3 - Polja i Petlje 3

/*Napisati program koji u jednodimenzionalno polje cijelih brojeva naziva poljeA pohranjuje 10 brojeva učitanih putem
tipkovnice. Program nakon pohrane brojeva korisniku nudi opciju odabira između tri mogućnosti:

  1. Broj_negativnih – u polju poljeA potrebno je prebrojati koliko ima negativnih brojeva i ispisati podatak na ekran
  2. Sortiranje polja – u novo polje naziva poljeB potrebno je pohraniti samo parne vrijednosti iz polja poljeA silazno
    sortirane i ispisati oba polja
  3. Prijepis polja – u novo polje naziva poljeC potrebno je pohraniti one vrijednosti iz poljaA čiji zbroj znamenaka nije veći
    od broja 10, te ispisati oba polja*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 100
int main()
{
int n = 10, poljeA[MAX],poljeB[MAX], poljeC[MAX], temp[MAX], odabir, br_negativnih = 0, j = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &poljeA[i]);
}
scanf("%d", &odabir);
switch (odabir) {
case 1:
for (int i = 0; i < n; i++) {
if (poljeA[i] < 0)
br_negativnih++;

	}
	printf("U polju poljeA negativnih brojeva ima: %d", br_negativnih);
	break;
case 2:
	printf("PoljeA (nesortirano): ");
	for (int i = 0; i < n; i++) {
		printf("%d ", poljeA[i]);
	}
	printf("\nPoljeB (sortirano): ");
	
	for (int i = 0; i < n; i++) {
		if (poljeA[i] % 2 == 0) {
			poljeB[j] = poljeA[i];
			j++;
		}	
	}
	
	for (int i = 0; i < j - 1; i++) {
		for (int k = i + 1; k < j; k++) {
			if (poljeB[i] < poljeB[k]) {
				int temp = poljeB[i];
				poljeB[i] = poljeB[k];
				poljeB[k] = temp;
			}
		}
	}
	for (int i = 0; i < j; i++) {
		printf("%d ", poljeB[i]);
	}
	break;
case 3:
	printf("PoljeA: ");
	for (int i = 0; i < n; i++) {
		printf("%d ", poljeA[i]);
	}
	
	printf("\nPoljeC: ");
	for (int i = 0; i < n; i++) {
		poljeC[i] = poljeA[i];
		int temp = poljeC[i];
		int zbroj = 0;
		while (temp != 0) {
			zbroj += temp % 10;
			temp /= 10;
		}

		if (zbroj <= 10) {
			printf("%d ", poljeC[i]);
		}
	}
	break;
default:
	break;
}

}

Lab 4 - Skok u vis

/* kao treba unijeti u "tablicu" u prva dva stupca inicijale imena i prezimena, u 3 stupac kolko je visoko skocila, u 4 koji je to bio skok po redu
i onda kao moras provjerit tocnost podatka
i onda moras nac pobjednicu, koja je najvise skocila, ak ih ima vise onda trazis koja je od njih to u manje pokusaja, ako je i takvih vise onda njih sve ispises*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
char inicijali[5][2], noviinicijali[5][2];
int brojevi[5][2], novibrojevi[5][2], b = 0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 2; j++)
{
scanf(" %c", &inicijali[i][j]);
}
for (int j = 0; j < 2; j++)
{
scanf("%d", &brojevi[i][j]);
if (j == 0)
{
if ((brojevi[i][0] != 200) && (brojevi[i][0] != 205) && (brojevi[i][0] != 208))
{
printf("Neispravni podatci\n");
i--;
break;
}
}
else
{
if (brojevi[i][1] > 3)
{
printf("Neispravni podatci\n");
i--;
break;
}
}
}
}

int max = brojevi[0][0], najmanjiredni = brojevi[0][1], a;
for (int i = 1; i < 5; i++)
{
	if (brojevi[i][0] > max)
	{
		max = brojevi[i][0];
		//pamcenje reda
		a = i;
	}
	if (najmanjiredni > brojevi[i][1])
	{
		najmanjiredni = brojevi[i][1];
	}
}
int brojanjeistih = 0;
for (int i = 0; i < 5; i++)
{
	int j = 0;
	if (max == brojevi[i][j])
	{
		novibrojevi[brojanjeistih][0] = brojevi[i][j];
		novibrojevi[brojanjeistih][1] = brojevi[i][1];
		noviinicijali[brojanjeistih][0] = inicijali[i][j];
		noviinicijali[brojanjeistih][1] = inicijali[i][1];

		brojanjeistih++;
	}
}
printf("Pobjednica je:\n");
for (int i = 0; i <= brojanjeistih; i++)
{
	if (novibrojevi[i][1] == najmanjiredni)
	{
		printf("%c%c %d %d\n", noviinicijali[i][0], noviinicijali[i][1], novibrojevi[i][0], novibrojevi[i][1]);
	}
}




return 0;

}

Vjezba 4 Histogram postotaka

Zadaci za vježbu_ Vjezba za lab 4 - Histogram postotaka.pdf

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>

#define MAX 100

int main() {
    
    int niz[150][150];
    int N;
    scanf("%d", &N);

    int max = -1;

    for (int i = 0; i < N; i++) {
        scanf("%d", &niz[i][0]);
        if (niz[i][0] > max) {
            max = niz[i][0];
        }
    }

    double broj = 0;
    double postotak;

    for (int i = 0; i <= max; i++) {
        broj = 0;

        for (int j = 0; j < N; j++) {
            if (niz[j][0] == i) {
                broj++;
            }
        }

        postotak = round(broj / N * 100);

        if (i <= max) {
            printf("%d: ", i);
            for (int j = 0; j < postotak; j++) {
                printf("x");
            }
            printf("\n");
        }
    }


    return 0;
}

Lab 5 - zvijezdice u nizu 2

Lab 5- Zadatak na vježbi - Zvjezdica u nizu 2.pdf

#include <stdio.h>
#define MAX 100

void ubaci(char niz[], int brojac, char a, char b);

int main() {
   
    char niz[MAX], a, b;
    int brojac = 0;
    
    do {
        scanf(" %c", &niz[brojac++]);   
    } while (niz[brojac - 1] != '#');

    scanf(" %c %c", &a, &b);   
    
    ubaci(niz, brojac, a, b);

    return 0;
}

void ubaci(char niz[], int brojac, char a, char b) {
    int sadrziPodniz = 0;
    
    for (int i = 0; i < brojac - 1; i++) {
        if (niz[i] == a && niz[i + 1] == b) {
            sadrziPodniz = 1;
            break;
        }
    }
    
    if (sadrziPodniz) {
        for (int i = 0; i < brojac - 1; i++)  {
            printf("%c", niz[i]);
            if (niz[i] == a && niz[i + 1] == b && sadrziPodniz == 1) {
                printf("*");
                sadrziPodniz = 0;
            }
        }
    } else {
        printf("Mirko ne voli ovaj niz.");
    }
}

Pijanac na mostu

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>

#define MAX 100

int main() {

    int N;
    scanf("%d", &N);
    int niz1[MAX][MAX] = { 0 };

    char pomak;
    int brojacRED = 2;
    int brojacSTUPAC = 0;
  
    for (int i = 0; i < N; i++) {
        scanf(" %c", &pomak);
        if ((pomak == 'L' && brojacRED == 0) || (pomak == 'R' && brojacRED == 4)) {
            printf("Steta - pao preko ruba na %d. metru mosta!", brojacSTUPAC + 1);
            return;
        }
        else if (pomak == 'L') {
            brojacRED--;
            niz1[brojacRED][brojacSTUPAC] = 8;
        }
        else if (pomak == 'R') {
            brojacRED++;
            niz1[brojacRED][brojacSTUPAC] = 8;
        }
         
        brojacSTUPAC++;
    }

    char rupa;
    int brojacREDrupa = 0;
    int brojacSTUPACrupa = 0;

    for (int i = 0; i < N; i++) {
        scanf(" %c", &rupa);

        if (rupa == '1') {
            brojacREDrupa = 0;
            if (niz1[brojacREDrupa][brojacSTUPACrupa] == 8) {
                niz1[brojacREDrupa][brojacSTUPACrupa] = 1;
                printf("Steta - pao u rupu na %d. metru mosta!", brojacSTUPACrupa + 1);
                return;
            }
        }
        else if (rupa == '2') {
            brojacREDrupa = 1;
            if (niz1[brojacREDrupa][brojacSTUPACrupa] == 8) {
                niz1[brojacREDrupa][brojacSTUPACrupa] = 1;
                printf("Steta - pao u rupu na %d. metru mosta!", brojacSTUPACrupa + 1);
                return;
            }
        }
        else if (rupa == '3') {
            brojacREDrupa = 2;
            if (niz1[brojacREDrupa][brojacSTUPACrupa] == 8) {
                niz1[brojacREDrupa][brojacSTUPACrupa] = 1;
                printf("Steta - pao u rupu na %d. metru mosta!", brojacSTUPACrupa + 1);
                return;
            }
        }
        else if (rupa == '4') {
            brojacREDrupa = 3;
            if (niz1[brojacREDrupa][brojacSTUPACrupa] == 8) {
                niz1[brojacREDrupa][brojacSTUPACrupa] = 1;
                printf("Steta - pao u rupu na %d. metru mosta!", brojacSTUPACrupa + 1);
                return;
            }
        }
        else if (rupa == '5') {
            brojacREDrupa = 4;
            if (niz1[brojacREDrupa][brojacSTUPACrupa] == 8) {
                niz1[brojacREDrupa][brojacSTUPACrupa] = 1;
                printf("Steta - pao u rupu na %d. metru mosta!", brojacSTUPACrupa + 1);
                return;
            }
        }
        brojacSTUPACrupa++;
    }

    if (brojacSTUPAC == N && niz1[brojacRED][brojacSTUPAC - 1] == 8) {
        printf("Prezivio, na %d. metru sirine.", brojacRED + 1);
    }

    return 0;
}

Vjezbe 4 Katrica-Matrica

/* Zadaci za vježbu_ Vjezba za lab 4 - Katrica-matrica.pdf

*/

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>

#define MAX 10

int main()
{
    int matrica1[MAX][MAX] = { 0 };
    int matrica2[MAX][MAX] = { 0 };

    int stupciM1, redoviM1;
    int stupciM2, redoviM2;

    do {
        scanf("%dx%d", &redoviM1, &stupciM1);
        if (stupciM1 > 10 || stupciM1 < 2 || redoviM1>10 || redoviM1 < 2) {
            printf("Unesena je nedozvoljena dimenzija prve matrice!\n");
        }
    } while (stupciM1 > 10 || stupciM1 < 2 || redoviM1>10 || redoviM1 < 2);

    do {
        scanf("%dx%d", &redoviM2, &stupciM2);
        if (stupciM2 > 10 || stupciM2 < 2 || redoviM2>10 || redoviM2 < 2) {
            printf("Unesena je nedozvoljena dimenzija druge matrice!\n");
        }
        else if (redoviM1 != stupciM2 && redoviM2 != stupciM1) {
            printf("Matrice nisu ulancane!\n");
        }
    } while (stupciM2 > 10 || stupciM2 < 2 || redoviM2>10 || redoviM2 < 2 || redoviM2 != stupciM1);

    for (int i = 0; i < redoviM1; i++) {
        for (int j = 0; j < stupciM1; j++) {
            scanf("%d", &matrica1[i][j]);
        }
    }
    for (int i = 0; i < redoviM2; i++) {
        for (int j = 0; j < stupciM2; j++) {
            scanf("%d", &matrica2[i][j]);
        }
    }

    int suma[MAX][MAX] = { 0 };

    if (stupciM1 != stupciM2 && redoviM1 != redoviM2) {
        printf("Matrice nisu istih dimenzija, ne mogu se zbrojiti!\n");
    }
    else {
        printf("Suma matrica:\n");
        for (int i = 0; i < redoviM1; i++) {
            for (int j = 0; j < stupciM1; j++) {
                suma[i][j] = matrica1[i][j] + matrica2[i][j];
                if (j == 0) {
                    printf("%d", suma[i][j]);
                }
                else {
                    printf(" %d", suma[i][j]);
                }

                
            }
            printf("\n");
        }
    }

    int razlika[MAX][MAX] = { 0 };

    if (stupciM1 != stupciM2 && redoviM1 != redoviM2) {
        printf("Matrice nisu istih dimenzija, ne mogu se oduzimati!\n");
    }
    else {
        printf("Razlika matrica:\n");
        for (int i = 0; i < redoviM1; i++) {
            for (int j = 0; j < stupciM1; j++) {
                razlika[i][j] = matrica1[i][j] - matrica2[i][j];
                if (j == 0) {
                    printf("%d", razlika[i][j]);
                }
                else {
                    printf(" %d", razlika[i][j]);
                }
            }
            printf("\n");
        }
    }

    int transM1[MAX][MAX] = {0};

    printf("Transponirana prva matrica:\n");

    for (int i = 0; i < stupciM1; i++) {
        for (int j = 0; j < redoviM1; j++) {
            transM1[i][j] = matrica1[j][i];
            if (j == 0) {
                printf("%d", transM1[i][j]);
            }
            else {
                printf(" %d", transM1[i][j]);
            }
        }
        printf("\n");
    }

    int transM2[MAX][MAX] = { 0 };

    printf("Transponirana druga matrica:\n");

    for (int i = 0; i < stupciM2; i++) {
        for (int j = 0; j < redoviM2; j++) {
            transM2[i][j] = matrica2[j][i];
            if (j == 0) {
                printf("%d", transM2[i][j]);
            }
            else {
                printf(" %d", transM2[i][j]);
            }
        }
        printf("\n");
    }

    int umnozak[MAX][MAX] = { 0 };
    int temp = 0;

    printf("Umnozak matrica:\n");

    for (int i = 0; i < redoviM1; i++) {
        for (int j = 0; j < stupciM2; j++) {
            temp = 0;
            for (int k = 0; k < redoviM2; k++) {
                temp = temp + matrica1[i][k] * matrica2[k][j];

            }
            umnozak[i][j] = temp;
            if (j == 0) {
                printf("%d", umnozak[i][j]);
            }
            else {
                printf(" %d", umnozak[i][j]);
            }
        }
        printf("\n");
    }

    return 0;
}

`

1. kolokvij utorak part 2

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
/*PRVI ZADATAK KOLOKVIJ
Zadatak: Upises 2 broja(X i N), ispisuje N djelitelja broja X koji su ujedno i kvadrat nekog broja
Uvjet: Brojevi moraju biti odvojeni zarezom, ako je samo jedan broj onda ne smije biti zarez.
*/
int main() {
    int n, x;
    int br = 0;
    scanf("%d %d", &n, &x);
    br = n-1;
    for (int i = 1; i <= x; i++) {

        if (x % i == 0 && ((int)sqrt(i) == sqrt(i))) {
            if (br != 0) {
                printf("%d, ", i);
            } 
            if (br == 0) {
                printf("%d ", i);
                break;
            }
            br--;
        }
    }
    return 0;
}

Vjezba 4 Kukuruz

/*
[Zadaci za vježbu_ Vjezba za lab 4 - Ljubav je na selu - polje kukuruza.pdf](https://github.com/emanuelkufrin/tvz_c-2023/files/13400983/Zadaci.za.vjezbu_.Vjezba.za.lab.4.-.Ljubav.je.na.selu.-.polje.kukuruza.pdf)
*/
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>

#define MAX 10

int main()
{
    char polje[3][20] = { 0 };
    int vrijeme[3] = { 0 };//potrebno vrijeme
    int k[3] = { 0 };// broj kukuruza

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 20; j++) {
            scanf(" %c", &polje[i][j]);
            if (polje[i][j] == 'I') {
                vrijeme[i] = vrijeme[i] + 5;
                k[i]++;
            }
            else if (polje[i][j] == '.') {
                vrijeme[i] = vrijeme[i] + 1;
            }
            else {
                vrijeme[i] = vrijeme[i] + 2;
            }
        }
    }

    if (vrijeme[0] <= vrijeme[1] && vrijeme[0] <= vrijeme[2] && k[0] == k[1] && k[0] == k[2] ||
        k[0] - k[1] > 3 && k[0] - k[2] > 3 ||
        k[0] - k[1] > 3 && k[0] == k[2] && vrijeme[0] <= vrijeme[2] ||
        k[0] - k[2] > 3 && k[0] == k[1] && vrijeme[0] <= vrijeme[1] ||
        k[1] - k[0] <= 3 && k[2] - k[0] <= 3 && vrijeme[0] < vrijeme[1] && vrijeme[0] < vrijeme[2]) {

        printf("Pozicioniraj se u 1. red!");

    }
    else if(vrijeme[1] <= vrijeme[2] && k[1] - k[0] > 3 && k[1] == k[2] ||
        k[1] - k[0] > 3 && k[1] - k[2] > 3 || 
        k[1] - k[0] > 3 && k[1] == k[2] && vrijeme[1] <= vrijeme[2] || 
        k[1] - k[2] > 3 && k[1] == k[0] && vrijeme[1] < vrijeme[0] ||
        k[0] - k[1] <= 3 && k[2] - k[1] <= 3 && vrijeme[1] < vrijeme[0] && vrijeme[1] < vrijeme[2]) {

        printf("Pozicioniraj se u 2. red!");

    }
    else {
        printf("Pozicioniraj se u 3. red!");
    }
   
    
    

    return 0;
}

Vjezba 5 - ribar i ribe - pametne ribice

ribar i ribe - pametne ribice.pdf

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 1000

int simuliraj(char niz[], int n, int x) {
    int suma = 0, ulovljene = 0;
    for (int i = x; i < n; i++) {
        if (niz[(i)] != '.') {
            ulovljene++;
            if (ulovljene != 3) {
                suma += niz[i] - 'A' + 1;
                i += 2;
            }
            else {
                ulovljene = 0;
            }

        }
    }
    return suma;
}

int main() {

    char niz[MAX] = {};

    int n;
    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        scanf(" %c", &niz[i]);
    }

    int maxSuma = 0, maxX = 0;
    for (int i = 0; i < n; i++) {
        int suma = simuliraj(niz, n, i);
        if (suma > maxSuma) {
            maxSuma = suma;
            maxX = i;
        }
    }

    printf("Optimalno je baciti udicu nakon %ds, sto donosi %dkg ribe.", maxX * 10, maxSuma);

    return 0;
}

Test caseovi - spil karata

test case #1:
Ulaz:
10 2
1 5
3 7
Izlaz:
6 7 4 5 8 9 10 3 2 1

test case #2:
Ulaz:
20 4
1 6
5 11
13 19
4 16

Izlaz:
15 16 17 2 3 4 5 9 10 11 12 13 14 18 19 20 6 7 8 1

test case #3:
Ulaz:
100 10
1 5
4 8
3 34
12 23
5 67
13 19
15 78
56 89
97 99
61 67

Izlaz:
96 97 67 68 34 35 36 37 38 39 40 41 42 43 23 24 25 26 27 28 29 30 31 32 33 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 69 70 71 72 73 74 75 12 13 14 15 16 17 18 19 20 21 22 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 98 99 100 11 10 9 8 7 6 5 2 3 4 1

1. kolokvij 2022. - 2. zadatak - bela

/*
Napisite C program koji racuna pobjednika u kartaskoj igri Bela.

od korisnika se trazi unos rezultata svakog kruga po parovima,
pri cemu zbroj bodova u svakom krugu ne smije biti manji od 162.
U sluvaju krivog unosa, potrebno je unos ponoviti.
Rezultati svakog kruga spremaju se u dva polja - po jedno polje za svakog igraca.

Igra traje dok barem jedan od parova ne dode do 1001 bod.
U slucaju da u zadnjem krugu oba para imaju vise od 1001 bod, pobjednik je onaj par s vecim brojem bodova.
Polja je potrebno nakon svih unosa sortirati uzlazno i ispisati.
Program na kraju ispisuje koji od parova je pobijedio.
*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {

    int bodoviPrvi[100] = { 0 }, bodoviDrugi[100] = { 0 }, ukupniBodoviPrvi = 0, ukupniBodoviDrugi = 0;
    int brojRundi = 0;

    while (ukupniBodoviPrvi < 1001 || ukupniBodoviDrugi < 1001) {
        do {
            scanf("%d %d", &bodoviPrvi[brojRundi], &bodoviDrugi[brojRundi]);
        } while (bodoviPrvi[brojRundi] + bodoviDrugi[brojRundi] < 162);

        ukupniBodoviPrvi += bodoviPrvi[brojRundi];
        ukupniBodoviDrugi += bodoviDrugi[brojRundi];

        brojRundi++;
    }

    for (int i = 0; i < brojRundi; i++) {
        for (int j = i + 1; j < brojRundi; j++) {
            if (bodoviPrvi[j] < bodoviPrvi[i]) {
                int temp = bodoviPrvi[i];
                bodoviPrvi[i] = bodoviPrvi[j];
                bodoviPrvi[j] = temp;
            }
        }
    }

    for (int i = 0; i < brojRundi; i++) {
        printf("%d\t", bodoviPrvi[i]);
    }

    printf("\n");

    for (int i = 0; i < brojRundi; i++) {
        for (int j = i + 1; j < brojRundi; j++) {
            if (bodoviDrugi[j] < bodoviDrugi[i]) {
                int temp = bodoviDrugi[i];
                bodoviDrugi[i] = bodoviDrugi[j];
                bodoviDrugi[j] = temp;
            }
        }
    }

    for (int i = 0; i < brojRundi; i++) {
        printf("%d\t", bodoviDrugi[i]);
    }

    if (ukupniBodoviPrvi > ukupniBodoviDrugi) {
        printf("\nPobjednik je 1. par");
    }
    else if (ukupniBodoviPrvi < ukupniBodoviDrugi) {
        printf("\nPobjednik je 2. par");
    }
    else {
        printf("Izjednaceno");
    }

    return 0;
}

1771e19c-eaed-4e77-8229-03f6a56381b3

d80072fc-bb9f-41da-9636-9939e5b3d900

Vjezbe 6 - Patsov

Zadatak.pdf

Nez kolko je optimalno al radi

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

void getPosOffset(int dir, int x, int y, int* x_offset, int* y_offset) {
    *x_offset = 0;
    *y_offset = 0;

    switch (dir)
    {
    case 0:
        *y_offset = -1;
        break;
    case 1:
        *x_offset = 1;
        break;
    case 2:
        *y_offset = 1;
        break;
    case 3:
        *x_offset = -1;
        break;
    default:
        break;
    }
}

int distanceToFood(char mat[50][50], int n, int m, int x, int y, int dir) {
    int x_offset = 0, y_offset = 0, steps = 0;

    getPosOffset(dir, x, y, &x_offset, &y_offset);

    if (x + x_offset < 0 || x + x_offset >= m || y + y_offset < 0 || y + y_offset >= n) return 1000;

    do {
        x += x_offset;
        y += y_offset;
        steps++;

        if (mat[y][x] == 'h') return steps;

    } while (x >= 0 && x < m && y >= 0 && y < n && mat[y][x] != 'x' && mat[y][x] != '-' && mat[y][x] != '|' && mat[y][x] != '+');

    return 100;
}

int move(char mat[50][50], int n, int m, int* x, int* y, int* dir) {

    // dir: 0 - gori, 1 - desno, 2 - doli, 3 - livo
    int x_offset = 0, y_offset = 0;
    int canMoveFwd = 1;

    getPosOffset(*dir, *x, *y, &x_offset, &y_offset);

    // Provjeri dali iduci pomak ide van granica mape
    if (*x + x_offset < 0 || *x + x_offset > m - 1 || *y + y_offset < 0 || *y + y_offset > n - 1) canMoveFwd = 0;

    // Provjeri dali iduci pomak ide u zid
    if (mat[*y + y_offset][*x + x_offset] == 'x') canMoveFwd = 0;

    // Provjeri dali iduci pomak ide u vec prijedeno polje
    if (mat[*y + y_offset][*x + x_offset] == '-' || mat[*y + y_offset][*x + x_offset] == '|' || mat[*y + y_offset][*x + x_offset] == '+') {
        mat[*y][*x] = '*';
        return 0;
    }

    if (canMoveFwd) {
        mat[*y][*x] = *dir % 2 == 0 ? '|' : '-';

        *x = *x + x_offset;
        *y = *y + y_offset;

        return 1;
    }

    int left_dir = *dir == 0 ? 3 : *dir - 1;
    int right_dir = *dir == 3 ? 0 : *dir + 1;

    int left_distance = distanceToFood(mat, n, m, *x, *y, left_dir);
    int right_distance = distanceToFood(mat, n, m, *x, *y, right_dir);

    mat[*y][*x] = '+';

    if (left_distance < right_distance) {
        getPosOffset(left_dir, *x, *y, &x_offset, &y_offset);
        *dir = left_dir;
    }
    else {
        getPosOffset(right_dir, *x, *y, &x_offset, &y_offset);
        *dir = right_dir;
    }

    // Provjeri dali iduci pomak ide u vec prijedeno polje
    if (mat[*y + y_offset][*x + x_offset] == '-' || mat[*y + y_offset][*x + x_offset] == '|' || mat[*y + y_offset][*x + x_offset] == '+') {
        mat[*y][*x] = '*';
        return 0;
    }

    *x = *x + x_offset;
    *y = *y + y_offset;

    return 1;
}

int main()
{
    int m, n, x = 0, y = 0, dir = 1, canMove = 1;
    int i, j;

    char mat[50][50];

    scanf("%d %d", &n, &m);

    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            scanf(" %c", &mat[i][j]);
        }
    }

    while (move(mat, n, m, &x, &y, &dir));

    printf("\n");
    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            printf("%c", mat[i][j]);
        }

        printf("\n");
    }

    return 0;
}

lab3 - dubai

/*
Opis zadatka:
Davor i Ivica su u Dubaiu i jedan stoji s jedne strane niza zgrada, a drugi s druge.
Potrebno je ispisati koliko koji zgrada vidi.
Prvo se unosi n broj zgrada, a zatim za svaku zgradu visina u katovima.
Svaka zgrada je visoka nekoliko katova i zgrade koje imaju manje katova od prethodne najviše zgrade ispred njih
se ne vide.

Primjer:
Ako su zgrade visoke 1 2 4 3 7 2 3 1 katova, iz Davorove perspektive se vide 4 zgrade (1, 2, 4, 7),
a iz Ivicine perspektive 3 zgrade (1, 3, 7).

P.S. Onaj koji vidi više zgrada, njegovo se ime prvo ispisuje ili ako se vidi isto zgrada onda se ispisuje prvo Davorovo. Ako je vidljivost ista, ispisuje se prvo Davorovo ime.

Primejer Ulaza:
5
1
3
2
4
3
Primjer Izlaza:
Davor 3
Ivica 2
*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 100

int main()
{
int n, davor[MAX] = {}, ivica[MAX] = {};

// Unos broja zgrada
scanf("%d", &n);

int k = n;
for (int i = 0; i < n; i++) {  
    // Unos visine zgrada iz Davorove i Ivicine perspektive.
    // Ivica je s druge strane niza pa visinu prve zgrade iz Davorove perspektive unosimo kao zadnju zgradu iz Ivicine perspektive
    scanf("%d", &davor[i]);
    ivica[k - 1] = davor[i];
    k--;
}

int najvisaDavor = 0, najvisaIvica = 0, vidljiveIvica = 0, vidljiveDavor = 0;
for (int i = 0; i < n; i++) {
    if (davor[i] > najvisaDavor) { // Ako je zgrada 'i' najvisa do sad ona ce se vidjet i dodat cemo ju u vidljiveDavor
        najvisaDavor = davor[i];
        vidljiveDavor++;
    }
    if (ivica[i] > najvisaIvica) { 
        najvisaIvica = ivica[i];
        vidljiveIvica++;
    }
}

if (vidljiveDavor >= vidljiveIvica) {
    printf("Davor %d\n", vidljiveDavor);
    printf("Ivica %d\n", vidljiveIvica);
}
else {
    printf("Ivica %d\n", vidljiveIvica);
    printf("Davor %d\n", vidljiveDavor);
}

return 0;

}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.