fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. void showMenu() {
  6. printf("\n--- Calculator Menu ---\n");
  7. printf("1. Add (+)\n");
  8. printf("2. Subtract (-)\n");
  9. printf("3. Multiply (*)\n");
  10. printf("4. Divide (/)\n");
  11. printf("5. Modulus (%%)\n");
  12. printf("6. Power (^)\n");
  13. printf("0. Exit\n");
  14. printf("-----------------------\n");
  15. printf("Choose an option: ");
  16. }
  17.  
  18. int main() {
  19. int choice;
  20. double num1, num2, result;
  21.  
  22. do {
  23. showMenu();
  24. scanf("%d", &choice);
  25.  
  26. if (choice == 0) {
  27. printf("Exiting calculator. Goodbye!\n");
  28. break;
  29. }
  30.  
  31. printf("Enter first number: ");
  32. scanf("%lf", &num1);
  33. printf("Enter second number: ");
  34. scanf("%lf", &num2);
  35.  
  36. switch (choice) {
  37. case 1:
  38. result = num1 + num2;
  39. printf("Result: %.2lf\n", result);
  40. break;
  41. case 2:
  42. result = num1 - num2;
  43. printf("Result: %.2lf\n", result);
  44. break;
  45. case 3:
  46. result = num1 * num2;
  47. printf("Result: %.2lf\n", result);
  48. break;
  49. case 4:
  50. if (num2 != 0) {
  51. result = num1 / num2;
  52. printf("Result: %.2lf\n", result);
  53. } else {
  54. printf("Error: Division by zero.\n");
  55. }
  56. break;
  57. case 5:
  58. if ((int)num2 != 0) {
  59. result = (int)num1 % (int)num2;
  60. printf("Result: %.0lf\n", result);
  61. } else {
  62. printf("Error: Division by zero.\n");
  63. }
  64. break;
  65. case 6:
  66. result = pow(num1, num2);
  67. printf("Result: %.2lf\n", result);
  68. break;
  69. default:
  70. printf("Invalid option. Try again.\n");
  71. }
  72.  
  73. } while (1);
  74.  
  75. return 0;
  76. }
  77.  
Success #stdin #stdout 0.01s 5292KB
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
--- Calculator Menu ---
1. Add (+)
2. Subtract (-)
3. Multiply (*)
4. Divide (/)
5. Modulus (%)
6. Power (^)
0. Exit
-----------------------
Choose an option: Exiting calculator. Goodbye!