x = 1 - (1 - x*x) / sqrt(1 - y*y);
b) 2
struct Planet { char namn[30 + 1]; double vikt; int befolkning; };
struct Planet jupiter = { "Jupiter", 2e27, 0 };
void visa_planet(struct Planet planeten) { printf("Namn: %s\n", planeten.namn); printf("Vikt: %f\n", planeten.vikt); printf("Befolkning: %d\n", planeten.befolkning); }
Alternativ 2:struct Planet las_planet(void) { struct Planet planeten; printf("Ge namn: "); scanf("%s", planeten.namn); printf("Ge vikt: "); scanf("%lf", &planeten.vikt); printf("Ge befolkning: "); scanf("%d", &planeten.befolkning); return planeten; }
void las_planet(struct Planet *p) { printf("Ge namn: "); scanf("%s", p->namn); printf("Ge vikt: "); scanf("%lf", &p->vikt); printf("Ge befolkning: "); scanf("%d", &p->befolkning); }
int befolkad(struct Planet planeten) { return planeten.befolkning > 0; }
Alternativ 2:int main(void) { struct Planet p1, p2; p1 = las_planet(); p2 = las_planet(); visa_planet(p1); visa_planet(p2); return 0; }
int main(void) { struct Planet p1, p2; las_planet(&p1); las_planet(&p2); visa_planet(p1); visa_planet(p2); return 0; }
Alternativ 2:struct Planet las_befolkad_planet(void) { struct Planet planeten; do { printf("Ange en planet med befolkning!\n"); planeten = las_planet(); } while (!befolkad(planeten)); return planeten; }
void las_befolkad_planet(struct Planet *p) { do { printf("Ange en planet med befolkning!\n"); las_planet(p); } while (!befolkad(*p)); }
#include <stdio.h> int main(void) { int tal; int antal_udda = 0; int antal_jamna = 0; printf("Ge ett heltal (avsluta med 0): "); scanf("%d", &tal); while (tal != 0) { if (tal % 2 == 0) ++antal_jamna; else ++antal_udda; printf("Ge ett heltal (avsluta med 0): "); scanf("%d", &tal); } printf("Antal jämna: %d\n", antal_jamna); printf("Antal udda: %d\n", antal_udda); return 0; }
#include <stdlib.h> #include <stdio.h> #include <math.h> #define MAX_TAL 1000 int main(void) { double tal; double talen[MAX_TAL]; int antal; double summan; int i; double medel; double narmaste; printf("Ge ett reellt tal (avsluta med negativt): "); scanf("%lf", &tal); while (tal >= 0) { if (antal == MAX_TAL) { printf("För många tal. Programmet avslutas.\n"); return EXIT_FAILURE; } talen[antal++] = tal; printf("Ge ett reellt tal (avsluta med negativt): "); scanf("%lf", &tal); } if (antal == 0) { printf("Inga tal. Programmet avslutas.\n"); return EXIT_FAILURE; } summan = 0; for (i = 0; i < antal; ++i) summan += talen[i]; medel = summan / antal; narmaste = talen[0]; for (i = 1; i < antal; ++i) if (fabs(talen[i] - medel) < fabs(narmaste - medel)) narmaste = talen[i]; printf("Medel: %f\n", medel); printf("Närmast: %f\n", narmaste); return EXIT_SUCCESS; }
#include <stdlib.h> #include <stdio.h> /* ... */ int main(void) { struct Planet p; FILE *tsut; tsut = fopen("planeter.txt", "w"); if (tsut == NULL) { printf("Kunde inte öppna filen 'planeter.txt'.\n"); return EXIT_FAILURE; } printf("Ange planeter. Avsluta med en planet med vikten 0.\n"); p = las_planet(); while (p.vikt > 0) { fprintf(tsut, "%s %f %d\n", p.namn, p.vikt, p.befolkning); p = las_planet(); } fclose(tsut); return EXIT_SUCCESS; }
Programmet läser planeter tills filen tar slut, vilket märks på att fscanf returnerar värdet EOF.#include <stdlib.h> #include <stdio.h> /* ... */ int main(void) { struct Planet p; FILE *tsin; int antal = 0; int antal_befolkade = 0; struct Planet tyngsta_befolkade_planeten; tsin = fopen("planeter.txt", "r"); if (tsin == NULL) { printf("Kunde inte öppna filen 'planeter.txt'.\n"); return EXIT_FAILURE; } while (fscanf(tsin, "%s %lf %d", p.namn, &p.vikt, &p.befolkning) != EOF) { ++antal; if (befolkad(p)) { if (antal_befolkade == 0) tyngsta_befolkade_planeten = p; else if (p.vikt > tyngsta_befolkade_planeten.vikt) tyngsta_befolkade_planeten = p; ++antal_befolkade; } } fclose(tsin); printf("Antal planeter: %d\n", antal); printf("Antal befolkade planeter: %d\n", antal_befolkade); printf("Tyngsta befolkade planeten: %s\n", tyngsta_befolkade_planeten.namn); return EXIT_SUCCESS; }
struct Rymdimperium { struct Planet centralplaneten; struct Planet underplaneter[MAX_PLANETER]; int antal_underplaneter; };
b)
struct Rymdimperium las_rymdimperium() { struct Rymdimperium r; int i; printf("Mata in rymdimperiets centralplanet.\n"); r.centralplaneten = las_befolkad_planet(); printf("Hur många underplaneter finns det? "); scanf("%d", &r.antal_underplaneter); for (i = 0; i < r.antal_underplaneter; ++i) r.underplaneter[i] = las_befolkad_planet(); return r; }
c)
int main(void) { struct Rymdimperium imperiet; imperiet = las_rymdimperium(); return 0; }