#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void showMenu( ) {
printf ( "\n --- Calculator Menu ---\n " ) ; printf ( "-----------------------\n " ) ; }
int main( ) {
int choice;
double num1, num2, result;
do {
showMenu( ) ;
if ( choice == 0 ) {
printf ( "Exiting calculator. Goodbye!\n " ) ; break ;
}
printf ( "Enter first number: " ) ; printf ( "Enter second number: " ) ;
switch ( choice) {
case 1 :
result = num1 + num2;
printf ( "Result: %.2lf\n " , result
) ; break ;
case 2 :
result = num1 - num2;
printf ( "Result: %.2lf\n " , result
) ; break ;
case 3 :
result = num1 * num2;
printf ( "Result: %.2lf\n " , result
) ; break ;
case 4 :
if ( num2 != 0 ) {
result = num1 / num2;
printf ( "Result: %.2lf\n " , result
) ; } else {
printf ( "Error: Division by zero.\n " ) ; }
break ;
case 5 :
if ( ( int ) num2 != 0 ) {
result = ( int ) num1 % ( int ) num2;
printf ( "Result: %.0lf\n " , result
) ; } else {
printf ( "Error: Division by zero.\n " ) ; }
break ;
case 6 :
result
= pow ( num1
, num2
) ; printf ( "Result: %.2lf\n " , result
) ; break ;
default :
printf ( "Invalid option. Try again.\n " ) ; }
} while ( 1 ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQgc2hvd01lbnUoKSB7CiAgICBwcmludGYoIlxuLS0tIENhbGN1bGF0b3IgTWVudSAtLS1cbiIpOwogICAgcHJpbnRmKCIxLiBBZGQgKCspXG4iKTsKICAgIHByaW50ZigiMi4gU3VidHJhY3QgKC0pXG4iKTsKICAgIHByaW50ZigiMy4gTXVsdGlwbHkgKCopXG4iKTsKICAgIHByaW50ZigiNC4gRGl2aWRlICgvKVxuIik7CiAgICBwcmludGYoIjUuIE1vZHVsdXMgKCUlKVxuIik7CiAgICBwcmludGYoIjYuIFBvd2VyICheKVxuIik7CiAgICBwcmludGYoIjAuIEV4aXRcbiIpOwogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAgICBwcmludGYoIkNob29zZSBhbiBvcHRpb246ICIpOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBjaG9pY2U7CiAgICBkb3VibGUgbnVtMSwgbnVtMiwgcmVzdWx0OwoKICAgIGRvIHsKICAgICAgICBzaG93TWVudSgpOwogICAgICAgIHNjYW5mKCIlZCIsICZjaG9pY2UpOwoKICAgICAgICBpZiAoY2hvaWNlID09IDApIHsKICAgICAgICAgICAgcHJpbnRmKCJFeGl0aW5nIGNhbGN1bGF0b3IuIEdvb2RieWUhXG4iKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBwcmludGYoIkVudGVyIGZpcnN0IG51bWJlcjogIik7CiAgICAgICAgc2NhbmYoIiVsZiIsICZudW0xKTsKICAgICAgICBwcmludGYoIkVudGVyIHNlY29uZCBudW1iZXI6ICIpOwogICAgICAgIHNjYW5mKCIlbGYiLCAmbnVtMik7CgogICAgICAgIHN3aXRjaCAoY2hvaWNlKSB7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIHJlc3VsdCA9IG51bTEgKyBudW0yOwogICAgICAgICAgICAgICAgcHJpbnRmKCJSZXN1bHQ6ICUuMmxmXG4iLCByZXN1bHQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHJlc3VsdCA9IG51bTEgLSBudW0yOwogICAgICAgICAgICAgICAgcHJpbnRmKCJSZXN1bHQ6ICUuMmxmXG4iLCByZXN1bHQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIHJlc3VsdCA9IG51bTEgKiBudW0yOwogICAgICAgICAgICAgICAgcHJpbnRmKCJSZXN1bHQ6ICUuMmxmXG4iLCByZXN1bHQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgIGlmIChudW0yICE9IDApIHsKICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBudW0xIC8gbnVtMjsKICAgICAgICAgICAgICAgICAgICBwcmludGYoIlJlc3VsdDogJS4ybGZcbiIsIHJlc3VsdCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHByaW50ZigiRXJyb3I6IERpdmlzaW9uIGJ5IHplcm8uXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICBpZiAoKGludCludW0yICE9IDApIHsKICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAoaW50KW51bTEgJSAoaW50KW51bTI7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJSZXN1bHQ6ICUuMGxmXG4iLCByZXN1bHQpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBwcmludGYoIkVycm9yOiBEaXZpc2lvbiBieSB6ZXJvLlxuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgcmVzdWx0ID0gcG93KG51bTEsIG51bTIpOwogICAgICAgICAgICAgICAgcHJpbnRmKCJSZXN1bHQ6ICUuMmxmXG4iLCByZXN1bHQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBwcmludGYoIkludmFsaWQgb3B0aW9uLiBUcnkgYWdhaW4uXG4iKTsKICAgICAgICB9CgogICAgfSB3aGlsZSAoMSk7CgogICAgcmV0dXJuIDA7Cn0K
stdin
LyogIEJlcmVjaG51bmcgZGVzIEhhbW1pbmctQWJzdGFuZGVzIHp3aXNjaGVuIHp3ZWkgMTI4LUJpdCBXZXJ0ZW4gaW4gCSovCi8qCWVpbmVyIFRleHRkYXRlaS4gCQkJCQkJCQkJCQkJCSovCi8qICBEaWUgV2VydGUgbSZ1dW1sO3NzZW4gYXVmIGVpbmVyIHNlcGFyYXRlbiBaZWlsZSBnZXNwZWljaGVydCBzZWluCQkJKi8KLyogCQkJCQkJCQkJCQkJCQkJCQkJKi8KLyoJRXJzdGVsbHQ6IDE3LjUuMjAxMAkJCQkJCQkJCQkJCQkqLwovKiAgQXV0b3I6IFRob21hcyBTY2hlZmZsZXIJCQkJCQkJCQkJCQkqLwoKI2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKCiNkZWZpbmUgQVJSQVlfU0laRSAzMgoKdW5zaWduZWQgSGFtZGlzdCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KQp7CiAgdW5zaWduZWQgZGlzdCA9IDAsIHZhbCA9IHggXiB5OwogCiAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBzZXQgYml0cwogIHdoaWxlKHZhbCkKICB7CiAgICArK2Rpc3Q7IAogICAgdmFsICZhbXA7PSB2YWwgLSAxOwogIH0KIAogIHJldHVybiBkaXN0Owp9CgoKCmludCBtYWluICh2b2lkKQp7CgljaGFyIGhleDsKCWludCBpOwoJaW50IGFbQVJSQVlfU0laRV07CglpbnQgYltBUlJBWV9TSVpFXTsKCWludCBoYW1EaXN0ID0gMDsKCUZJTEUqIGZwOwoJCgkvL0FycmF5cyBtaXQgMCBpbml0aWFsaXNpZXJlbgoJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkU7ICsraSkKCXsKICAJCWFbaV0gPSAwOwogIAkJYltpXSA9IDA7Cgl9CgoJCglmcCA9IGZvcGVuKCZxdW90O2hleC50eHQmcXVvdDssJnF1b3Q7ciZxdW90Oyk7CglpZiAoZnAgPT0gTlVMTCkgCgl7CgkJcHJpbnRmKCZxdW90O0RpZSBEYXRlaSBoZXgudHh0IHd1cmRlIG5pY2h0IGdlZnVuZGVuISZxdW90Oyk7CgkJZXhpdChFWElUX0ZBSUxVUkUpOwoJfQoKCWk9MDsKCXByaW50ZigmcXVvdDsxLlplaWxlIGVpbmxlc2VuLlxuJnF1b3Q7KTsKCiAJd2hpbGUoKGhleD1mZ2V0YyhmcCkpIT0nXG4nICZhbXA7JmFtcDsgaGV4ICE9IEVPRikKICAgIHsKICAgICAgICBhW2ldPXN0cnRvbCgmYW1wO2hleCwwLDE2KTsKCQlpKys7CiAgICB9CglpPTA7CglwcmludGYoJnF1b3Q7Mi5aZWlsZSBlaW5sZXNlbi5cbiZxdW90Oyk7CgogCXdoaWxlKChoZXg9ZmdldGMoZnApKSE9J1xuJyAmYW1wOyZhbXA7IGhleCAhPSBFT0YpCiAgICB7CiAgICAJYltpXT1zdHJ0b2woJmFtcDtoZXgsMCwxNik7CiAgICAgICAgaSsrOwogICAgfQoJZmNsb3NlKGZwKTsKCglwcmludGYoJnF1b3Q7SGFtbWluZy1BYndlaWNodW5nIHBybyBOaWJibGU6XG4mcXVvdDspOwoJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkU7ICsraSkKCXsKCQlwcmludGYgKCZxdW90OyVpXHQlaVx0JWlcbiZxdW90OyxhW2ldLGJbaV0sSGFtZGlzdChhW2ldLGJbaV0pKTsKCQloYW1EaXN0ICs9IEhhbWRpc3QoYVtpXSxiW2ldKTsKCX0KCXByaW50ZiAoJnF1b3Q7XG5IYW1taW5nLUFid2VpY2h1bmcgZGVyIEhhc2gtV2VydGU6JWRcbiZxdW90OyxoYW1EaXN0KTsKfQoK
/* 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);
}