| @ -0,0 +1,47 @@ | |||||
| #include <stdio.h> | |||||
| #include <limits.h> | |||||
| int getNumber(void); | |||||
| int main(void) { | |||||
| int count = 0; | |||||
| int sum = 0; | |||||
| int end = getNumber(); | |||||
| if (end >= 0) { | |||||
| while (count++ < end) { | |||||
| if ((INT_MAX - sum) < count) { | |||||
| printf("Integer overflow\n"); | |||||
| return 1; | |||||
| } else { | |||||
| sum = sum + count; | |||||
| } | |||||
| } | |||||
| printf("sum = %d\n", sum); | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| int getNumber(void) { | |||||
| int number; | |||||
| printf("How far should we add: "); | |||||
| if (!scanf("%d", &number) || number < 0) { | |||||
| number = -1; | |||||
| } | |||||
| return number; | |||||
| } | |||||
| @ -0,0 +1,47 @@ | |||||
| #include <stdio.h> | |||||
| #include <limits.h> | |||||
| int getNumber(void); | |||||
| int main(void) { | |||||
| int count = 0; | |||||
| int sum = 0; | |||||
| int end = getNumber(); | |||||
| if (end >= 0) { | |||||
| while (count++ < end) { | |||||
| if (INT_MAX / count < count || (INT_MAX - sum) < count * count) { | |||||
| printf("Integer overflow\n"); | |||||
| return 1; | |||||
| } else { | |||||
| sum = sum + count * count; | |||||
| } | |||||
| } | |||||
| printf("sum = %d\n", sum); | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| int getNumber(void) { | |||||
| int number; | |||||
| printf("How far should we add: "); | |||||
| if (!scanf("%d", &number) || number < 0) { | |||||
| number = -1; | |||||
| } | |||||
| return number; | |||||
| } | |||||
| @ -0,0 +1,50 @@ | |||||
| #include <stdio.h> | |||||
| #include <math.h> | |||||
| #include <fenv.h> | |||||
| double cubeNumber(double number); | |||||
| int main (void) { | |||||
| double number; | |||||
| double cube_number; | |||||
| int error = 0; | |||||
| printf("Give a number: "); | |||||
| if (scanf("%lf", &number) != 1 || isnan(number)) { | |||||
| printf("Not a number!\n"); | |||||
| error = 1; | |||||
| } else { | |||||
| cube_number = cubeNumber(number); | |||||
| if (cube_number != NAN) { | |||||
| printf("%lf\n", cube_number); | |||||
| } else { | |||||
| printf("Floating point exception occured!\n"); | |||||
| error = 1; | |||||
| } | |||||
| } | |||||
| return error; | |||||
| } | |||||
| double cubeNumber (double number) { | |||||
| double i; | |||||
| feclearexcept(FE_ALL_EXCEPT); | |||||
| i = pow(number, 3); | |||||
| if (fetestexcept(FE_ALL_EXCEPT) == 0) { | |||||
| i = NAN; | |||||
| } | |||||
| return i; | |||||
| } | |||||
| @ -0,0 +1,46 @@ | |||||
| #include <stdio.h> | |||||
| #include <limits.h> | |||||
| #include <stdbool.h> | |||||
| int getNumber(char * s, bool *error); | |||||
| int main(void) { | |||||
| int first_operand; | |||||
| int second_operand; | |||||
| bool first_error; | |||||
| bool second_error; | |||||
| printf("This program computes moduli.\n"); | |||||
| second_operand = getNumber("Enter an integer to serve as the second operand: ", &second_error); | |||||
| first_operand = getNumber("Now enter the first operand: ", &first_error); | |||||
| do { | |||||
| printf("%d %% %d is %d\n", first_operand, second_operand, first_operand % second_operand); | |||||
| first_operand = getNumber("Now enter the first operand (<= 0 to quit): ", &first_error); | |||||
| } while (!first_error && !second_error); | |||||
| return 0; | |||||
| } | |||||
| int getNumber(char * s, bool *error) { | |||||
| int number; | |||||
| *error = false; | |||||
| printf("%s", s); | |||||
| if (!scanf("%d", &number) || number < 0) { | |||||
| *error = true; | |||||
| } | |||||
| return number; | |||||
| } | |||||
| @ -0,0 +1,55 @@ | |||||
| #include <stdio.h> | |||||
| #include <limits.h> | |||||
| #include <math.h> | |||||
| #include <stdbool.h> | |||||
| double getNumber(char * s); | |||||
| void calcTemperatures(double fahrenheit); | |||||
| int main(void) { | |||||
| double fahrenheit; | |||||
| printf("This program calculates Celsius & Kelvin from Fahrenheit.\n"); | |||||
| fahrenheit = getNumber("Now enter the temp in Fahrenheit: "); | |||||
| while (!isnan(fahrenheit)) { | |||||
| calcTemperatures(fahrenheit); | |||||
| fahrenheit = getNumber("Now enter the first operand (q to quit): "); | |||||
| }; | |||||
| return 0; | |||||
| } | |||||
| double getNumber(char * s) { | |||||
| double number; | |||||
| printf("%s", s); | |||||
| if (!scanf("%lf", &number) || isnan(number)) { | |||||
| number = NAN; | |||||
| } | |||||
| return number; | |||||
| } | |||||
| void calcTemperatures(double fahrenheit) { | |||||
| const float celsius_div = 5.0 / 9.0; | |||||
| const float celsius_offset = 32.0; | |||||
| const float kelvin_offset = 273.16; | |||||
| const double celsius = celsius_div *(fahrenheit - celsius_offset); | |||||
| const double kelvin = celsius + kelvin_offset; | |||||
| printf("%.2lf Fahrenheit are %.2lf Celsius or %.2lf Kelvin.\n", fahrenheit, celsius, kelvin); | |||||
| } | |||||