Привет, Хабр!
В Сети можно найти тонны самого разного софта для астрологических и нумерологических расчетов. Решил и я написать свой вариант. Моя программка не строит натальные карты, но умеет рассчитывать числа рождения и имени, квадрат Пифагора, а также вычислять знаки по нескольким гороскопам. Ниже рассматриваются интерфейс и код программы.
Интерфейс приложения
Вот так программа выглядит:

Интерфейс программы состоит из двух страниц. На первой странице пользователь вводит свое имя и дату рождения:

А на второй уже получает результат:

Есть возможность сохранять результаты в виде текстового файла. Иерархия компонентов в редакторе Glade выглядит так:

Теперь о том, как это все работает.
Числа имени и рождения
Исходный код программы можно посмотреть здесь. Для расчета числа имени применялась вот такая таблица:

На ее основе был создан метод name_number:
private int name_number(string str){ var n=0; string[] array = new string[str.length]; for (int i=0;i<str.length;i++) { array[i] = str.get_char(str.index_of_nth_char(i)).to_string();//превращаем строку в массив символов switch (array[i]) { case "a": case "j": case "s": case "A": case "J": case "S": n += 1; break; case "b": case "k": case "t": case "B": case "K": case "T": n += 2; break; case "c": case "l": case "u": case "C": case "L": case "U": n += 3; break; case "d": case "m": case "v": case "D": case "M": case "V": n += 4; break; case "e": case "n": case "w": case "E": case "N": case "W": n += 5; break; case "f": case "o": case "x": case "F": case "O": case "X": n += 6; break; case "g": case "p": case "y": case "G": case "P": case "Y": n += 7; break; case "h": case "q": case "z": case "H": case "Q": case "Z": n += 8; break; case "i": case "r": case "I": case "R": n += 9; break; case " ": case "-": n += 0; break; default: return -1; } } return trans_num(n);//возвращаем однозначное число }
Число имени должно быть однозначным. Для его получения применяется метод trans_num:
private int trans_num(int num){ while (num>=10){//если число не является однозначным num=(num/10)+(num%10);//превращаем в однозначное } return num; }
Для вычисления числа рождения нужно сложить все цифры даты рождения. Этим занимается следующий код:
private int births_number(int n,int l,int m){ int numbr=trans_num(n)+trans_num(l)+trans_num(m);//слаживаем все числа даты return trans_num(numbr); }
Квадрат Пифагора
Или по другому это еще называется психоматрицей. Чтобы ее получить нужно сначала вычислить несколько, так называемых рабочих чисел, с помощью несложных арифметических операций с цифрами даты рождения.
Пример:
Дата: 5 декабря 1979 года.
-
Складываем цифры дня, месяца и года рождения: 5+1+2+1+9+7+9=34 — это 1-ое рабочее число.
-
Складываем цифры первого рабочего числа: 3+4=7 — это 2-ое рабочее число.
-
Из первого рабочего числа вычитаем удвоенную первую цифру дня рождения: 34-2*5=24 — это 3-е рабочее число.
-
Складываем цифры третьего рабочего числа: 2+4=6 — это 4-ое рабочее число. Первый ряд чисел: 5121979 Второй ряд чисел: 347246. Подсчитав, сколько каких цифр в обоих рядах, составляем таблицу:
11…22…3
44…5….6
77…—…99
Для вычисления психоматрицы создан такой метод:
private string psychomatrix(int n,int l,int m){ int[] mas = new int[16]; mas[0] = (n / 10); mas[1] = n % 10; int c; int z; if (mas[0] == 0) { c= mas[1]; } else { c= mas[0]; } mas[4]= m % 10; z = m / 10; mas[5] = z % 10; z = z / 10; mas[6] = z % 10; z = z / 10; mas[7]=z; if(l<10){ mas[2]=0; mas[3]=l; }else{ mas[2]=1; mas[3]=l-10; } int sum = mas[0] + mas[1] + mas[2] + mas[3] + mas[4] + mas[5] + mas[6] + mas[7]; mas[8] = sum/ 10; mas[9] = sum % 10; mas[10] = (mas[8]+mas[9])/ 10; mas[11] = (mas[8]+mas[9])% 10; mas[12] = (sum-(2*c)) / 10; mas[13] = (sum-(2*c)) % 10; mas[14] = (mas[12]+mas[13]) / 10; mas[15] = (mas[12]+mas[13]) % 10; string[] str = new string[9]; for (var i=0;i<9;i++){ str[i]=""; } for (var i=0;i<16;i++){//группируем одинаковые числа switch (mas[i]){ case 0:break; case 1:str[0]=str[0]+"1";break; case 2:str[1]=str[1]+"2";break; case 3:str[2]=str[2]+"3";break; case 4:str[3]=str[3]+"4";break; case 5:str[4]=str[4]+"5";break; case 6:str[5]=str[5]+"6";break; case 7:str[6]=str[6]+"7";break; case 8:str[7]=str[7]+"8";break; case 9:str[8]=str[8]+"9";break;default:break; } } string matrix = ""; for(int i=0;i<9;i++){//формируем таблицу 3X3 if(i==2||i==5){ matrix=matrix+str[i]+"\n"; }else{ matrix=matrix+str[i]+" "; } } return matrix; }
Восточный гороскоп
Определением знака по восточному гороскопу занят вот этот метод:
private string ost_horoscope(int n){ while (n>12){//возвращаемся в начало нашей эры n-=12; } switch (n){ case 1: return "cock"; case 2: return "dog"; case 3: return "pig"; case 4: return "rat"; case 5: return "bull"; case 6: return "tiger"; case 7: return "rabbit"; case 8: return "the Dragon"; case 9: return "snake"; case 10: return "horse"; case 11: return "goat"; case 12: return "monkey"; default: return ""; } }
Знаки Зодиака
Кроме зодиакальных знаков программа рассчитывает еще знаки славянского и египетского гороскопов, но так как принцип расчета у всех этих знаков одинаковый, то приведу только метод для расчета зодиакальных знаков:
private string zodiac_horoscope(int n,int month){ string f; if (month==3&&n>20||month==4&&n<21)f="Aries"; else if (month==4&&n>20||month==5&&n<22)f="Taurus"; else if (month==5&&n>21||month==6&&n<22)f="Gemini"; else if (month==6&&n>21||month==7&&n<23)f="Cancer"; else if (month==7&&n>22||month==8&&n<22)f="Leo"; else if (month==8&&n>21||month==9&&n<24)f="Virgo"; else if (month==9&&n>23||month==10&&n<24)f="Libra"; else if (month==10&&n>23||month==11&&n<23)f="Scorpio"; else if (month==11&&n>22||month==12&&n<23)f="Sagittarius"; else if (month==12&&n>22||month==1&&n<21)f="Capricorn"; else if (month==1&&n>20||month==2&&n<20)f="Aquarius"; else if (month==2&&n>19||month==3&&n<21)f="Pisces"; else return ""; return f; }
Дата-центр ITSOFT — размещение и аренда серверов и стоек в двух дата-центрах в Москве. За последние годы UPTIME 100%. Размещение GPU-ферм и ASIC-майнеров, аренда GPU-серверов, лицензии связи, SSL-сертификаты, администрирование серверов и поддержка сайтов.
ссылка на оригинал статьи https://habr.com/ru/company/itsoft/blog/555792/
Добавить комментарий