consolidate all repos to one for archive
This commit is contained in:
12
semester_2/uvod_v_operacijske_sisteme/naloga_04/Makefile
Normal file
12
semester_2/uvod_v_operacijske_sisteme/naloga_04/Makefile
Normal 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
|
47
semester_2/uvod_v_operacijske_sisteme/naloga_04/README.md
Normal file
47
semester_2/uvod_v_operacijske_sisteme/naloga_04/README.md
Normal 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
|
||||
|
||||
|
19
semester_2/uvod_v_operacijske_sisteme/naloga_04/naloga_1.c
Normal file
19
semester_2/uvod_v_operacijske_sisteme/naloga_04/naloga_1.c
Normal 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;
|
||||
}
|
13
semester_2/uvod_v_operacijske_sisteme/naloga_04/naloga_2.c
Normal file
13
semester_2/uvod_v_operacijske_sisteme/naloga_04/naloga_2.c
Normal 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;
|
||||
}
|
19
semester_2/uvod_v_operacijske_sisteme/naloga_04/naloga_3.c
Normal file
19
semester_2/uvod_v_operacijske_sisteme/naloga_04/naloga_3.c
Normal 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;
|
||||
}
|
Reference in New Issue
Block a user