Lösningsförslag till datorövning 1 i Programmeringsmetodik /* Uppg1a_b.c*/ /* strtest.c*/ #include "strang.h" #include int main() { char namn[81]; printf("Strängens längd = %d\n", strlangd("Hej!")); strkopia(namn, "Gunnar Joki"); printf("Strängkopia : %s", namn); return 0; } /* strang.h*/ int strlangd(char *s); void strkopia(char *s1, char *s2); /* strang.c */ int strlangd(char *s) { int i = 0; while (s[i] != '\0') i++; return i; } void strkopia(char *s1, char *s2) { int i; for(i = 0; s2[i] != '\0'; i++) s1[i] = s2[i]; s1[i] = '\0'; } /* Uppg1c.c */ /* medtest.c */ #include "medlem.h" int main() { medlem m; las_medlem(&m); skriv_medlem(m); return 0; } /* medlem.h */ typedef struct { int nr; char namn[30]; } medlem; void las_medlem(medlem *mp); void skriv_medlem(medlem m); /* medlem.c */ #include "medlem.h" #include void las_medlem(medlem *mp) { printf("Nr : "); scanf("%d",&mp->nr); getchar(); printf("Namn : "); gets(mp->namn); } void skriv_medlem(medlem m) { printf("Nr : %d\n", m.nr); printf("Namn : %s\n", m.namn); } /* Uppg1d.c */ /* nolltest.c */ #include "math.h" float funktion(float x) { return exp(x) - 2 + x; } float derivata(float x) { return exp(x) + 1; } #include "nollfunk.h" #include int main() { printf("x = %.3f", newton(1, funktion, derivata, 0.0005)); return 0; } /* Uppg1e.c */ /* medsort.c */ #include "sort.h" /* För datatypen medlem */ int main() { medlem mvek[3] = {{45, "D.D"}, {22, "B.B"}, {36, "C.C"}}; int i; ursort(mvek, 3, jfr_medlemmar); for(i = 0; i < 3; i++) skriv_medlem(mvek[i]); return 0; } /* medlem.h */ typedef struct { int nr; char namn[30]; } medlem; void las_medlem(medlem *mp); void skriv_medlem(medlem m); int jfr_medlemmar(medlem m1, medlem m2); /* medlem.c */ #include "medlem.h" #include void las_medlem(medlem *mp) { printf("Nr : "); scanf("%d",&mp->nr); getchar(); printf("Namn : "); gets(mp->namn); } void skriv_medlem(medlem m) { printf("Nr : %d\n", m.nr); printf("Namn : %s\n", m.namn); } int jfr_medlemmar(medlem m1, medlem m2) { return m1.nr < m2.nr; } /* Specifikation av sorteringsfunktioner -- sort.h */ /* OBS! Denna del ändras för varje aktuell data */ #include "medlem.h" typedef medlem datatyp; /* Exempelvis */ /* OBS! Slut på den del som ska ändras */ void ursort(datatyp v[], int nr, int (*comp)(datatyp, datatyp)); /* Sorterar nr st element i v med urvalsortering */ void bubbsort(datatyp v[], int nr, int (*comp)(datatyp, datatyp)); /* Sorterar nr st element i v med bubbbelsortering */ void insort(datatyp v[], datatyp s[], int nr, int (*comp)(datatyp, datatyp)); /* Sorterar nr st element från v till s med insticksortering */