b) 7
int temp; temp = a; a = b; b = temp;
b) (2p)double f(double x, double y, double z) { return pow(sqrt(x - y) + sqrt(x - z), 2); }
int main(void) { double x, y, z; printf("Ange x: "); scanf("%lf", &x); printf("Ange y: "); scanf("%lf", &y); printf("Ange z: "); scanf("%lf", &z); printf("f = %f\n", f(x, y, z)); return 0; }
b) (1p)struct LOK { int nummer; int vikt; };
c) (2p)struct VAGN { int tomvikt; int lastvikt; };
#define MAX_VAGNAR 100 struct TAG { struct LOK loket; int antal_vagnar; struct VAGN vagnarna[MAX_VAGNAR]; };
struct LOK ett_lok = { 100, 110 };
b) (1p)void visa_lok(struct LOK loket) { printf("Lok nummer %d, som väger %d ton.\n", loket.nummer, loket.vikt); }
c) (2p)void visa_vagn(struct VAGN vagnen) { printf("En vagn som själv väger %d ton, och har %d ton last.\n", vagnen.tomvikt, vagnen.lastvikt); }
void visa_tag(struct TAG taget) { printf("Här börjar tåget.\n"); visa_lok(taget.loket); for (int i = 0; i < taget.antal_vagnar; ++i) visa_vagn(taget.vagnarna[i]); printf("Här slutar tåget.\n"); }
int vagnvikt(struct VAGN vagnen) { return vagnen.tomvikt + vagnen.lastvikt; }
int tagvikt(struct TAG taget) { int summan; summan = taget.loket.vikt; for (int i = 0; i < taget.antal_vagnar; ++i) summan += vagnvikt(taget.vagnarna[i]); return summan; }
void spara_tag(struct TAG taget, char* filnamn) { FILE* f; if ((f = fopen(filnamn, "w")) == NULL) { fprintf(stderr, "Kunde inte spara tåget på filen '%s'.\n", filnamn); exit(EXIT_FAILURE); } fprintf(f, "%d %d\n", taget.loket.nummer, taget.loket.vikt); fprintf(f, "%d\n", taget.antal_vagnar); for (int i = 0; i < taget.antal_vagnar; ++i) fprintf(f, "%d %d\n", taget.vagnarna[i].tomvikt, taget.vagnarna[i].lastvikt); fclose(f); }
struct TAG las_tag(char* filnamn) { struct TAG taget; FILE* f; if ((f = fopen(filnamn, "r")) == NULL) { fprintf(stderr, "Kunde inte läsa tåget från filen '%s'.\n", filnamn); exit(EXIT_FAILURE); } fscanf(f, "%d %d", &taget.loket.nummer, &taget.loket.vikt); fscanf(f, "%d", &taget.antal_vagnar); for (int i = 0; i < taget.antal_vagnar; ++i) fscanf(f, "%d %d\n", &taget.vagnarna[i].tomvikt, &taget.vagnarna[i].lastvikt); fclose(f); return taget; }
Alternativ 2:int main(void) { struct TAG taget; taget.loket.nummer = 100; taget.loket.vikt = 110; taget.antal_vagnar = 3; taget.vagnarna[0].tomvikt = 4; taget.vagnarna[0].lastvikt = 10; taget.vagnarna[1].tomvikt = 4; taget.vagnarna[1].lastvikt = 20; taget.vagnarna[2].tomvikt = 5; taget.vagnarna[2].lastvikt = 3; spara_tag(taget, "tåg.txt"); struct TAG andra_taget; andra_taget = las_tag("tåg.txt"); visa_tag(andra_taget); return 0; }
int main(void) { struct TAG taget = { { 10, 110 }, 3, { { 4, 10 }, { 4, 20 }, { 5, 3 } } }; spara_tag(taget, "tåg.txt"); struct TAG andra_taget; andra_taget = las_tag("tåg.txt"); visa_tag(andra_taget); return 0; }
#include <stdio.h> #include <:string.h> void skriv_baklanges(char* s) { for (int i = strlen(s) - 1; i >= 0; --i) putchar(s[i]); putchar('\n'); } int main(void) { char s1[80 + 1 + 1]; char s2[80 + 1 + 1]; fgets(s1, sizeof s1, stdin); s1[strlen(s1) - 1] = '\0'; fgets(s2, sizeof s2, stdin); s2[strlen(s2) - 1] = '\0'; if (strlen(s1) > strlen(s2)) skriv_baklanges(s1); else skriv_baklanges(s2); return 0; }
#include <stdio.h> #include <string.h> int main(void) { char ops[] = "+-*/%"; int nops = strlen(ops); for (int op1 = 0; op1 < nops; ++op1) { for (int op2 = 0; op2 < nops; ++op2) { for (int op3 = 0; op3 < nops; ++op3) { printf("1 %c 2 %c 3 %c 4\n", ops[op1], ops[op2], ops[op3]); } } } return 0; }