b) 3
c) 3
#include <stdio.h> int main(void) { int fel = 0; for (int i = 0; i < 357; ++i) { printf("Ange tal nr %d:\n", i + 1); int talet; scanf("%d", &talet); if (talet >= 45) fel = 1; } if (fel) printf("För stort\n"); else printf("Ok\n"); return 0; }
int inom_intervallet(double x, double min, double max) { return x >= min && x <= max; }
int main(void) { double talet, min, max; printf("Ange talet: "); scanf("%lf", &talet); printf("Ange intervallets nedre gräns: "); scanf("%lf", &min); printf("Ange intervallets övre gräns: "); scanf("%lf", &max); int resultat = inom_intervallet(talet, min, max); printf("Resultat: %d\n", resultat); return 0; }
struct Interval { double min; double max; };
int inside_interval(double point, struct Interval *intervalp) { return inom_intervallet(point, intervalp->min, intervalp->max); }
// Enda sättet som intervallen kan vara något annat än överlappande // är om det ena intervallet (ip1) ligger antingen helt till vänster // om det andra (ip2), eller helt till höger om det. int overlapping_intervals(struct Interval *ip1, struct Interval *ip2) { return !(ip1->max < ip2->min || ip1->min > ip2->max); }
Ett annat förslag:
int overlapping_intervals(struct Interval *ip1, struct Interval *ip2) { if (ip1->max < ip2->min) return 0; // ip1 ligger helt till vänster om ip2 else if (ip1->min > ip2->max) return 0; // ip1 ligger helt till höger om ip2 else return 1; // annars är de överlappande! }
Kommentar: Det kan vara ganska komplicerat att få till villkoret rätt, så att alla olika sätt som de två intervallen kan förhålla sig till varandra på täcks in. Det finns många sätt att skriva funktionen. Ovanstående två lösningar är två varianter av samma sätt att tänka, som utgår från när intervallen inte är överlappande.
int inside_how_many_intervals(double point, struct Interval interval_array[], int nr_intervals) { int inside_count = 0; for (int i = 0; i < nr_intervals; ++i) { if (inside_interval(point, &interval_array[i])) { ++inside_count; } } return inside_count; } // inside_how_many_intervals
int main(void) { struct Interval some_intervals[] = { { 1, 2 }, { -2, -1 }, { -1, 1 }, { 0, 2 }, { 0, 1 } }; int nr_intervals = sizeof(some_intervals) / sizeof(some_intervals[0]); if (inside_how_many_intervals(0.5, some_intervals, nr_intervals) != 3) printf("Funktionen inside_how_many_intervals gav fel svar!\n"); return 0; }
....
....
....