@ -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); | |||||
} |