consolidate all repos to one for archive

This commit is contained in:
2025-01-28 13:46:42 +01:00
commit a6610fbc7a
5350 changed files with 2705721 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
all: naloga_1 naloga_2 naloga_3
naloga_1: naloga_1.c
gcc naloga_1.c -o naloga_1
rm naloga_1.c
naloga_2: naloga_2.c
gcc naloga_2.c -o naloga_2
rm naloga_2.c
naloga_3: naloga_3.c
gcc naloga_3.c -o naloga_3
rm naloga_3.c
clean:
rm -f naloga_1 naloga_2 naloga_3

View File

@@ -0,0 +1,47 @@
Branje in pisanje z oprimki (sprotna naloga)
V sklopu te naloge demonstrirajte uporabo oprimkov in ustreznih funkcij za pisanje in branje iz različnih virov. Pripravite 3 programe, ki izvedejo v nadaljevanju opisane naloge.
Pripravite tudi Makefile, ki bo vašo kodo prevedel v izvedljive programe. Posamezni naslov podnaloge v nadaljevanu so sestavljeni iz pričakovanega imena programa (mora biti tako) in pričakovanega imena izvorne zbirke (to je lahko drugačno, dokler jih vaš Makefile pravilno prevede).
Na sistem oddajte .zip paket z Makefile skripto in izvornimi zbirkami. Bodite pozorni na poimenovanja. Pred oddajo preverite delovanje z avtomatskim preizkusom.
naloga_1 (naloga_1.c)
Programu bo v prvem argumentu podana pot do zbirke. Zbirko odprite, preberite vsebino in preštejte število pojavitev simbola 'a'. Na koncu izpišite prešteto število ponovitev. Velikosti zbirke ne boste mogli določiti vnaprej, brati morate dokler ne prejmete informacije o koncu zbirke.
naloga_2 (naloga_2.c)
Program bo v prvih treh argumentih prejel eno celo število, eno realno število in še eno celo število. Te lahko iz simbolov pretvorite v vrednosti z:
int i = atoi(argv[1]);
float j = atof(argv[2]);
int k = atoi(argv[3]);
Ta števila izpišite v formatirani obliki. Za formatiranje morate uporabiti funkcijo printf. Ne smete implementirati lastnega formatiranja z if stavki in zankami.
Za prvo število naj izpiše vsaj tri števke, krajša števila pa naj z leve zapolni z 0. Pred število naj vedno izpiše + za pozitivna in - za negativna števila.
Za drugo število naj izpiše 3 decimalna mesta.
Za tretje število naj bo izpis v hexadecimalni obliki z 0x simbolom na začetku.
Primer izpisa:
$ ./naloga_2 4 12.0532154 255
int: +004
float: 12.053
hex: 0xFF
naloga_3 (naloga_3.c)
Program naj s standardnega vhoda bere binarne podatke, v obliki strukture: struct {char[4], short, int}. V 4 znakih je opisan format (brez 0 na koncu), nato v short sledi glavna verzija in v int manjša verzija.
Vsak prejet podatek naj izpiše kot formatiran niz:
<opis> = <večja verzija>.<manjša verzija>
Program se zaključi ko prebere celotno vsebino vhoda. Primer izpisov:
JPEG = 2.14
PNG = 0.5
WEBM = 66.6

View File

@@ -0,0 +1,19 @@
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main(int args, char** argv) {
int file = open(argv[1], O_RDONLY, 0);
char crka[1];
int stevc = 0, konec = 1;
while (konec != 0) {
konec = read(file, crka, 1);
if (crka[0] == 'a') stevc += 1;
}
printf("Ponovitev a: %d \n", stevc);
close(file);
return 0;
}

View File

@@ -0,0 +1,13 @@
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main (int argc, char** argv){
printf("int: %+04d \n",atoi(argv[1]));
printf("float: %.3f \n",atof(argv[2]));
printf("hex: 0x%x \n",atoi(argv[3]));
return 0;
}

View File

@@ -0,0 +1,19 @@
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
struct data {
char description[4];
short shorter;
int num;
};
int main(int args, char **argv, struct data prebrano) {
while (read(0, &prebrano, sizeof(struct data))) {
printf("%.4s = %hi.%d\n", prebrano.description, prebrano.shorter, prebrano.num);
}
return 0;
}