/* * Author: Simon Schurti * * Licence: MIT * * Informatik 1 exercice: * Takes user input for Voltage and Current in V/A respectively. * calculates and prints Power and Resistance */ #include int main() { double u, i, p, r; // Voltage , current, power, resistance while (1) { printf("To Terminate enter anything that is not a valid float.\n\n"); // fscanf returns bytes scanned, so if ret is 0 no float was detected // fscanf only matches %lf, so "123 asdlkj" would be valid input according // to format specified in fscanf. getc pops next byte from stdin, which is // always \n if user input is valid printf("Voltage[V]: "); int ret = fscanf(stdin, "%lf", &u); // read voltage from user if (ret <= 0 || getc(stdin) != '\n') break; // terminate if user input is invalid printf("Current[A]: "); ret = fscanf(stdin, "%lf", &i); // read current form user if (ret <= 0 || getc(stdin) != '\n') break; // termainte if user input is invalnid // power [W] = current [A] * voltage[V] p = i * u; // resistance[Ohm] = voltage[V] / current[A] if (i != 0) { r = u / i; printf("Resistance[Ohm]: %.3lf\n", r); printf("Power[W]: %.3lf\n", p); printf("Resistance %.3lf is %s than Power %.3lf\n", r, (r > p) ? "greater" : "smaller", p); } else { printf("No current is flowing. Resistance cannot be " "calculated\nPower: 0 W\n"); } } return 0; }