Programexempel från Progmet-föreläsning 1, måndag 1 september 2008 ================================================================== Exempel 1: Alltihop i en enda fil --------------------------------- personmain-1.c -------------- // personmain-1.c #include struct Person { int nr; char namn[35 + 1]; }; void skriv_person(struct Person p) { printf("Nr: %d\n", p.nr); printf("Namn: %s\n", p.namn); } int main(void) { struct Person personen; skriv_person(personen); return 0; } Exempel 2: Uppdelat på två filer (person.c och personmain-2.c) -------------------------------------------------------------- person.c -------- // person.c #include struct Person { int nr; char namn[35 + 1]; }; void skriv_person(struct Person p) { printf("Nr: %d\n", p.nr); printf("Namn: %s\n", p.namn); } personmain-2.c -------------- // personmain-2.c struct Person { int nr; char namn[35 + 1]; }; void skriv_person(struct Person p); int main(void) { struct Person personen; skriv_person(personen); return 0; } Exempel 3: Uppdelat på två filer, med include-fil ------------------------------------------------- Person.h -------- // Person.h struct Person { int nr; char namn[35 + 1]; }; void skriv_person(struct Person p); Person.c -------- // Person.c #include #include "Person.h" void skriv_person(struct Person p) { printf("Nr: %d\n", p.nr); printf("Namn: %s\n", p.namn); } personmain-3.c -------------- // personmain-3.c #include #include "Person.h" int main(void) { struct Person personen; skriv_person(personen); return 0; } Exempel 4: Array av flyttal ("vektor av reella tal") ---------------------------------------------------- rvek.h ------ // rvek.h double rvekmin(double rvek[], int antal); double rvekmax(double rvek[], int antal); double rvekmed(double rvek[], int antal); rvek.c ------ // rvek.c #include "rvek.h" double rvekmin(double rvek[], int antal) { double min = rvek[0]; for (int i = 1; i < antal; ++i) { if (rvek[i] < min) min = rvek[i]; } return min; } double rvekmax(double rvek[], int antal) { double max = rvek[0]; for (int i = 1; i < antal; ++i) { if (rvek[i] > max) max = rvek[i]; } return max; } double rvekmed(double rvek[], int antal) { double sum = 0; for (int i = 0; i < antal; ++i) sum += rvek[i]; return sum / antal; } rvekmain.c ---------- // rvekmain.c #include #include "rvek.h" int main(void) { double a[3]; a[0] = 3.3; a[1] = -1.14; a[2] = 77; double m1 = rvekmed(a, 3); printf("Medel av a: %.2f\n", m1); m1 = rvekmed(a, sizeof(a) / sizeof(double)); m1 = rvekmed(a, sizeof a / sizeof a[0]); double b[723]; printf("Medel av b: %.2f\n", rvekmed(b, 419)); return 0; } Makefile -------- CC = gcc CFLAGS += -Wall -std=c99 LIBS += -lm OBJECTS = rvekmain.o rvek.o rvek: $(OBJECTS) $(CC) -o rvek $(OBJECTS) clean: $(RM) rvek $(OBJECTS) *~