Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - #include <stdio.h>
 - #include <stdlib.h>
 - #include <time.h>
 - int main(void) {
 - char* mjeseci[] = { "sijecanj", "veljaca", "ozujak", "travanj", "svibanj",
 - "lipanj", "srpanj", "kolovoz", "rujan", "listopad",
 - "studeni", "prosinac" };
 - int i;
 - for (i = 0; i < 12; i++) {
 - printf("%d\t%s\n", i + 1, *(mjeseci + i));
 - //printf("%d\t%s\n", i + i, mjeseci[i]);
 - }
 - return 0;
 - }
 - /*1. Napisati C program koji omogućava unos broja n, (1 ≤ 𝑛 ≤ 7) koji predstavlja dane u tjednu.
 - Ukoliko je unesen broj koji ne odgovara broju dana u tjednu, ispisati poruku "Krivo uneseni broj za
 - dan" i zatražiti novi unos broja n. Za inicijalizaciju imena dana koristiti polje pokazivača. Ispisati
 - traženi dan.Koristiti isključivo pokazivačku notaciju!*/
 - int main(void) {
 - int n;
 - char* pok[]= {"ponedjeljak", "utorak", "srijeda", "cetvrtak", "petak", "subota", "nedjelja"};
 - printf("unesite broj od 1 do 7:");
 - do {
 - scanf("%d", &n);
 - if (n < 1 || n>7) {
 - printf("Krivi unos, unesite broj od 1 do 7:");
 - }
 - }
 - while (n < 1 || n>7);
 - printf("%s", *(pok+(n-1)));
 - return 0;
 - }
 - /*2. Proširiti prvi zadatak tako da se provjeri koji dan ima najviše suglasnika, te ispisati naopako dan s
 - najvećim brojem suglasnika. Koristiti isključivo pokazivačku notaciju!*/
 - int main(void) {
 - int n, i, j;
 - char* pok[] = { "ponedjeljak", "utorak", "srijeda", "cetvrtak", "petak", "subota", "nedjelja" };
 - int max_suglasnika = 0;
 - char* dan_max_suglasnika;
 - printf("unesite broj od 1 do 7:");
 - do {
 - scanf("%d", &n);
 - if (n < 1 || n>7) {
 - printf("Krivi unos, unesite broj od 1 do 7:");
 - }
 - } while (n < 1 || n>7);
 - printf("%s\n", *(pok + (n - 1)));
 - for (int i = 0; i < 7; i++) {
 - int broj_suglasnika = 0;
 - char* dan = pok[i];
 - for (int j = 0; j < strlen(dan); j++) {
 - if (dan[j] != 'a' && dan[j] != 'e' && dan[j] != 'i' && dan[j] != 'o' && dan[j] != 'u' && dan[j] != ' ') {
 - broj_suglasnika++;
 - }
 - }
 - if (broj_suglasnika > max_suglasnika) {
 - max_suglasnika = broj_suglasnika;
 - dan_max_suglasnika = dan;
 - printf("Dan s najvise suglasnika je: ");
 - for (int i = strlen(dan_max_suglasnika) - 1; i >= 0; i--) {
 - printf("%c", dan_max_suglasnika[i]);
 - }
 - printf("\n");
 - }
 - }
 - return 0;
 - }
 - /*3. Napisati C program koji omogućava unos broja n, (1 ≤ 𝑛 ≤ 12) koji predstavlja mjesece u godini.
 - Ukoliko je unesen broj koji ne odgovara broju mjeseca u godini, ispisati poruku "Krivo uneseni broj
 - za mjesec" i zatražiti novi unos broja n. Za inicijalizaciju imena mjeseci koristiti polje pokazivača.
 - Ispisati traženi mjesec.Koristiti isključivo pokazivačku notaciju!*/
 - int main(void) {
 - char* mjeseci[] = { "sijecanj", "veljaca", "ozujak", "travanj", "svibanj",
 - "lipanj", "srpanj", "kolovoz", "rujan", "listopad",
 - "studeni", "prosinac" };
 - int i, n;
 - printf("unesite broj od 1 do 12:");
 - do {
 - scanf("%d",&n);
 - if (n < 1 || n>12) {
 - printf("Krivi unos, unesite broj od 1 do 12:");
 - }
 - } while (n < 1 || n>12);
 - printf("%s", *(mjeseci + (n - 1)));
 - return 0;
 - }
 - void popuni_matricu(double** mat, int n) {
 - int i, j;
 - for (i = 0; i < n; i++) {
 - for (j = 0; j < n; j++) {
 - mat[i][j] = -1.25 + (double)rand() / RAND_MAX * (7 - (-1.25));
 - }
 - }
 - }
 - void ispis_matrice(double** mat, int n) {
 - int i, j;
 - for (i = 0; i < n; i++) {
 - for (j = 0; j < n; j++) {
 - printf("%7.2lf", mat[i][j]); //*(mat + i + j);
 - }
 - printf("\n");
 - }
 - }
 - double pronadi_najveci(double** mat, int n) {
 - double max = mat[0][1];
 - int i, j;
 - for (i = 0; i < n; i++) {
 - for (j = i + 2; j < n; j++) {
 - //if ((i == j) && ((i + j) == (n - 1))) {
 - if (mat[i][j] > max) {
 - max = mat[i][j];
 - }
 - }
 - }
 - return max;
 - }
 - void oslobodi_memoriju(double** mat, int n) {
 - int i;
 - for (i = 0; i < n; i++) {
 - free(mat[i]);
 - }
 - free(mat);
 - }
 - int main() {
 - int n;
 - do {
 - printf("Unesi broj redova i stupaca matrice: \n");
 - scanf("%d", &n);
 - } while (n < 2 || n > 8);
 - srand((unsigned)time(NULL));
 - double** mat = (double*)malloc(n * sizeof(double));
 - int i;
 - for (i = 0; i < n; i++) {
 - mat[i] = (double*)malloc(n * sizeof(double));
 - }
 - popuni_matricu(mat, n);
 - printf("Matrica: \n");
 - ispis_matrice(mat, n);
 - double najveci = pronadi_najveci(mat, n);
 - printf("Najveci element iznad dijagonala: %.2lf\n", najveci);
 - oslobodi_memoriju(mat, n);
 - return 0;
 - }
 - //6
 - int** alociraj_matricu(int m, int n);
 - void popuni_matricu(int** mat, int m, int n);
 - double srednja_vrijednost(int** mat, int m, int n);
 - void ispisi_matricu(int** mat, int m, int n);
 - #include <stdio.h>
 - #include <stdlib.h>
 - #include <time.h>
 - // Funkcija koja dinamički zauzima memoriju za matricu
 - int** alociraj_matricu(int m, int n) {
 - int** mat = (int*)malloc(m * sizeof(int));
 - for (int i = 0; i < m; i++) {
 - mat[i] = (int*)malloc(n * sizeof(int));
 - }
 - return mat;
 - }
 - // Funkcija koja popunjava matricu sa pseudo-slučajnim binarnim vrijednostima
 - void popuni_matricu(int** mat, int m, int n) {
 - for (int i = 0; i < m; i++) {
 - for (int j = 0; j < n; j++) {
 - // Generiranje binarnog broja
 - int binarno[8]; //jer 1 bajt ima 8 bitova valjd
 - for (int k = 0; k < 8; k++) {
 - binarno[k] = rand() % 2;
 - }
 - // Pretvaranje binarnog broja u dekadski ekvivalent
 - int dekadski = 0;
 - int tezina = 1;
 - for (int k = 7; k >= 0; k--) {
 - dekadski += binarno[k] * tezina;
 - tezina *= 2; // jer 2^0, 2^1, 2^2, itd.
 - }
 - // Provjera ako je generirani negativan binarni broj
 - if (binarno[0] == 1) {
 - dekadski -= 256; // preljevanje
 - }
 - // Upisivanje dekadskog ekvivalenta u matricu
 - mat[i][j] = dekadski;
 - }
 - }
 - }
 - // Funkcija koja računa srednju vrijednost matrice
 - double srednja_vrijednost(int** mat, int m, int n) {
 - double suma = 0;
 - for (int i = 0; i < m; i++) {
 - for (int j = 0; j < n; j++) {
 - suma += mat[i][j];
 - }
 - }
 - return suma / (m * n);
 - }
 - // Funkcija koja ispisuje matricu u matričnom obliku
 - void ispisi_matricu(int** mat, int m, int n) {
 - for (int i = 0; i < m; i++) {
 - for (int j = 0; j < n; j++) {
 - printf("%d ", mat[i][j]);
 - }
 - printf("\n");
 - }
 - }
 - int main() {
 - srand((unsigned)time(NULL));
 - int m, n;
 - do {
 - printf("Unesite broj redova m (2 <= m <= 20): ");
 - scanf("%d", &m);
 - } while (m < 2 || m > 20);
 - do {
 - printf("Unesite broj stupaca n (5 <= n <= 25): ");
 - scanf("%d", &n);
 - } while (n < 5 || n > 25);
 - int** mat = alociraj_matricu(m, n); // Dinamičko zauzimanje memorije za matricu
 - popuni_matricu(mat, m, n); // Popunjavanje matrice sa pseudo-slučajnim binarnim vrijednostima
 - double srednja = srednja_vrijednost(mat, m, n); // Računanje srednje vrijednosti matrice
 - printf("Srednja vrijednost matrice je: %.2f\n", srednja); // Ispis srednje vrijednosti
 - ispisi_matricu(mat, m, n); // Ispis matrice u matričnom obliku
 - // Oslobađanje zauzete memorije
 - for (int i = 0; i < m; i++) {
 - free(mat[i]);
 - }
 - free(mat);
 - return 0;
 - }
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment