fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. // Function to get user input and return a double (or -1 if skipped)
  5. double getInput(const char *prompt) {
  6. char input[20]; // Buffer for user input
  7. printf("%s", prompt);
  8. fgets(input, sizeof(input), stdin);
  9.  
  10. double value;
  11. if (sscanf(input, "%lf", &value) == 1) {
  12. return value; // Valid number entered
  13. }
  14. return -1; // User skipped input
  15. }
  16.  
  17. int main() {
  18. double voltage, current, resistance, power;
  19.  
  20. printf("\n=== Ohm's Law Calculator ===\n\n");
  21.  
  22. // Get user input
  23. voltage = getInput("Enter Voltage (V) or press Enter to skip: ");
  24. current = getInput("Enter Current (I) or press Enter to skip: ");
  25. resistance = getInput("Enter Resistance (Ω) or press Enter to skip: ");
  26. power = getInput("Enter Power (W) or press Enter to skip: ");
  27.  
  28. // Convert skipped values (-1) to NaN for easier calculations
  29. if (voltage == -1) voltage = NAN;
  30. if (current == -1) current = NAN;
  31. if (resistance == -1) resistance = NAN;
  32. if (power == -1) power = NAN;
  33.  
  34. // Calculate missing values using Ohm’s Law
  35. if (isnan(voltage) && !isnan(current) && !isnan(resistance))
  36. voltage = current * resistance; // V = I * R
  37. else if (isnan(current) && !isnan(voltage) && !isnan(resistance))
  38. current = voltage / resistance; // I = V / R
  39. else if (isnan(resistance) && !isnan(voltage) && !isnan(current))
  40. resistance = voltage / current; // R = V / I
  41. else if (isnan(power) && !isnan(voltage) && !isnan(current))
  42. power = voltage * current; // P = V * I
  43.  
  44. // Calculate power if missing
  45. if (isnan(power)) {
  46. if (!isnan(voltage) && !isnan(current))
  47. power = voltage * current; // P = V * I
  48. else if (!isnan(current) && !isnan(resistance))
  49. power = pow(current, 2) * resistance; // P = I² * R
  50. else if (!isnan(voltage) && !isnan(resistance))
  51. power = pow(voltage, 2) / resistance; // P = V² / R
  52. }
  53.  
  54. // Display results
  55. printf("\n--- Results ---\n");
  56. if (!isnan(voltage)) printf("Voltage: %.2f V\n", voltage);
  57. if (!isnan(current)) printf("Current: %.2f A\n", current);
  58. if (!isnan(resistance)) printf("Resistance: %.2f Ω\n", resistance);
  59. if (!isnan(power)) printf("Power: %.2f W\n", power);
  60.  
  61. printf("\nPress Enter to exit...");
  62. getchar(); // Pause before closing console
  63. return 0;
  64. }
  65.  
Success #stdin #stdout 0.01s 5272KB
stdin
/*  Berechnung des Hamming-Abstandes zwischen zwei 128-Bit Werten in 	*/
/*	einer Textdatei. 													*/
/*  Die Werte müssen auf einer separaten Zeile gespeichert sein			*/
/* 																		*/
/*	Erstellt: 17.5.2010													*/
/*  Autor: Thomas Scheffler												*/

#include <stdio.h>
#include <stdlib.h>

#define ARRAY_SIZE 32

unsigned Hamdist(unsigned x, unsigned y)
{
  unsigned dist = 0, val = x ^ y;
 
  // Count the number of set bits
  while(val)
  {
    ++dist; 
    val &= val - 1;
  }
 
  return dist;
}



int main (void)
{
	char hex;
	int i;
	int a[ARRAY_SIZE];
	int b[ARRAY_SIZE];
	int hamDist = 0;
	FILE* fp;
	
	//Arrays mit 0 initialisieren
	for (i = 0; i < ARRAY_SIZE; ++i)
	{
  		a[i] = 0;
  		b[i] = 0;
	}

	
	fp = fopen("hex.txt","r");
	if (fp == NULL) 
	{
		printf("Die Datei hex.txt wurde nicht gefunden!");
		exit(EXIT_FAILURE);
	}

	i=0;
	printf("1.Zeile einlesen.\n");

 	while((hex=fgetc(fp))!='\n' && hex != EOF)
    {
        a[i]=strtol(&hex,0,16);
		i++;
    }
	i=0;
	printf("2.Zeile einlesen.\n");

 	while((hex=fgetc(fp))!='\n' && hex != EOF)
    {
    	b[i]=strtol(&hex,0,16);
        i++;
    }
	fclose(fp);

	printf("Hamming-Abweichung pro Nibble:\n");
	for (i = 0; i < ARRAY_SIZE; ++i)
	{
		printf ("%i\t%i\t%i\n",a[i],b[i],Hamdist(a[i],b[i]));
		hamDist += Hamdist(a[i],b[i]);
	}
	printf ("\nHamming-Abweichung der Hash-Werte:%d\n",hamDist);
}

stdout
=== Ohm's Law Calculator ===

Enter Voltage (V) or press Enter to skip: Enter Current (I) or press Enter to skip: Enter Resistance (Ω) or press Enter to skip: Enter Power (W) or press Enter to skip: 
--- Results ---

Press Enter to exit...