Advertisement
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
Advertisement