#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// Função para verificar se um número já existe num array
int existe( int array[ ] , int tamanho, int numero) {
for ( int i = 0 ; i < tamanho; i++ ) {
if ( array[ i] == numero) {
return 1 ; // Verdadeiro, o número já existe
}
}
return 0 ; // Falso, o número não existe
}
// Função para ordenar um array em ordem crescente
void ordenar( int array[ ] , int tamanho) {
for ( int i = 0 ; i < tamanho - 1 ; i++ ) {
for ( int j = 0 ; j < tamanho - i - 1 ; j++ ) {
if ( array[ j] > array[ j + 1 ] ) {
int temp = array[ j] ;
array[ j] = array[ j + 1 ] ;
array[ j + 1 ] = temp;
}
}
}
}
int main( ) {
int numeros[ 5 ] ; // Array para os 5 números principais
int estrelas[ 2 ] ; // Array para as 2 estrelas
int i;
// Inicializar a semente para números aleatórios com base no tempo
// Gerar 5 números principais únicos (1 a 50)
for ( i = 0 ; i < 5 ; i++ ) {
int novo_numero;
do {
novo_numero
= ( rand ( ) % 50 ) + 1 ; // Gera número entre 1 e 50 } while ( existe( numeros, i, novo_numero) ) ; // Repete se já existir
numeros[ i] = novo_numero;
}
// Ordenar os números principais
ordenar( numeros, 5 ) ;
// Gerar 2 estrelas únicas (1 a 12)
for ( i = 0 ; i < 2 ; i++ ) {
int nova_estrela;
do {
nova_estrela
= ( rand ( ) % 12 ) + 1 ; // Gera número entre 1 e 12 } while ( existe( estrelas, i, nova_estrela) ) ; // Repete se já existir
estrelas[ i] = nova_estrela;
}
// Ordenar as estrelas
ordenar( estrelas, 2 ) ;
// Mostrar a chave gerada
printf ( "Chave do Euromilhoes:\n " ) ; for ( i = 0 ; i < 5 ; i++ ) {
}
printf ( "\n Estrelas: %d %d\n " , estrelas
[ 0 ] , estrelas
[ 1 ] ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCi8vIEZ1bsOnw6NvIHBhcmEgdmVyaWZpY2FyIHNlIHVtIG7Dum1lcm8gasOhIGV4aXN0ZSBudW0gYXJyYXkKaW50IGV4aXN0ZShpbnQgYXJyYXlbXSwgaW50IHRhbWFuaG8sIGludCBudW1lcm8pIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGFtYW5obzsgaSsrKSB7CiAgICAgICAgaWYgKGFycmF5W2ldID09IG51bWVybykgewogICAgICAgICAgICByZXR1cm4gMTsgLy8gVmVyZGFkZWlybywgbyBuw7ptZXJvIGrDoSBleGlzdGUKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsgLy8gRmFsc28sIG8gbsO6bWVybyBuw6NvIGV4aXN0ZQp9CgovLyBGdW7Dp8OjbyBwYXJhIG9yZGVuYXIgdW0gYXJyYXkgZW0gb3JkZW0gY3Jlc2NlbnRlCnZvaWQgb3JkZW5hcihpbnQgYXJyYXlbXSwgaW50IHRhbWFuaG8pIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGFtYW5obyAtIDE7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGFtYW5obyAtIGkgLSAxOyBqKyspIHsKICAgICAgICAgICAgaWYgKGFycmF5W2pdID4gYXJyYXlbaiArIDFdKSB7CiAgICAgICAgICAgICAgICBpbnQgdGVtcCA9IGFycmF5W2pdOwogICAgICAgICAgICAgICAgYXJyYXlbal0gPSBhcnJheVtqICsgMV07CiAgICAgICAgICAgICAgICBhcnJheVtqICsgMV0gPSB0ZW1wOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGludCBudW1lcm9zWzVdOyAvLyBBcnJheSBwYXJhIG9zIDUgbsO6bWVyb3MgcHJpbmNpcGFpcwogICAgaW50IGVzdHJlbGFzWzJdOyAvLyBBcnJheSBwYXJhIGFzIDIgZXN0cmVsYXMKICAgIGludCBpOwoKICAgIC8vIEluaWNpYWxpemFyIGEgc2VtZW50ZSBwYXJhIG7Dum1lcm9zIGFsZWF0w7NyaW9zIGNvbSBiYXNlIG5vIHRlbXBvCiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKCiAgICAvLyBHZXJhciA1IG7Dum1lcm9zIHByaW5jaXBhaXMgw7puaWNvcyAoMSBhIDUwKQogICAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewogICAgICAgIGludCBub3ZvX251bWVybzsKICAgICAgICBkbyB7CiAgICAgICAgICAgIG5vdm9fbnVtZXJvID0gKHJhbmQoKSAlIDUwKSArIDE7IC8vIEdlcmEgbsO6bWVybyBlbnRyZSAxIGUgNTAKICAgICAgICB9IHdoaWxlIChleGlzdGUobnVtZXJvcywgaSwgbm92b19udW1lcm8pKTsgLy8gUmVwZXRlIHNlIGrDoSBleGlzdGlyCiAgICAgICAgbnVtZXJvc1tpXSA9IG5vdm9fbnVtZXJvOwogICAgfQoKICAgIC8vIE9yZGVuYXIgb3MgbsO6bWVyb3MgcHJpbmNpcGFpcwogICAgb3JkZW5hcihudW1lcm9zLCA1KTsKCiAgICAvLyBHZXJhciAyIGVzdHJlbGFzIMO6bmljYXMgKDEgYSAxMikKICAgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICBpbnQgbm92YV9lc3RyZWxhOwogICAgICAgIGRvIHsKICAgICAgICAgICAgbm92YV9lc3RyZWxhID0gKHJhbmQoKSAlIDEyKSArIDE7IC8vIEdlcmEgbsO6bWVybyBlbnRyZSAxIGUgMTIKICAgICAgICB9IHdoaWxlIChleGlzdGUoZXN0cmVsYXMsIGksIG5vdmFfZXN0cmVsYSkpOyAvLyBSZXBldGUgc2UgasOhIGV4aXN0aXIKICAgICAgICBlc3RyZWxhc1tpXSA9IG5vdmFfZXN0cmVsYTsKICAgIH0KCiAgICAvLyBPcmRlbmFyIGFzIGVzdHJlbGFzCiAgICBvcmRlbmFyKGVzdHJlbGFzLCAyKTsKCiAgICAvLyBNb3N0cmFyIGEgY2hhdmUgZ2VyYWRhCiAgICBwcmludGYoIkNoYXZlIGRvIEV1cm9taWxob2VzOlxuIik7CiAgICBwcmludGYoIk51bWVyb3M6ICIpOwogICAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewogICAgICAgIHByaW50ZigiJWQgIiwgbnVtZXJvc1tpXSk7CiAgICB9CiAgICBwcmludGYoIlxuRXN0cmVsYXM6ICVkICVkXG4iLCBlc3RyZWxhc1swXSwgZXN0cmVsYXNbMV0pOwoKICAgIHJldHVybiAwOwp9
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);
}