보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

물론 이번 게시글은 아니고 그.... 제 사진들이 있고 개인적인 자료들이 꽤 있을 것 같아서 주석을 빨리 한국어로 바꾸어서 올리겠습니다 ^^ 물론 자소서부터....끄윽.....

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

오랜만에 그냥 잡다한 이야기를 하고 싶어서 이렇게 블로그를 찾아오게 되었습니다.

최근 인공지능을 다루며 공부를 하고 있던 저는 게임이 미칠듯이 좋아서 아무도 말리지 않으면 게임을 13시간도 할 수 있는 폐인입니다.

그렇다고 제가 중독자이거나 관련 정신질환자냐고 묻는다면 저는 'NO'라고 이야기를 하고 싶습니다.

저는 그냥 사람들과 경쟁하고 소통하고 하나의 이야기를 보는 것이 즐거워 계속하는 것이지

돈을 따기 위해 누군가를 죽이고 싶어서 연습을 하고 있는 것이 아니란 말입니다.

저는 게임이 좋아서 프로그래밍을 시작했고

저는 게임이 좋아서 인공지능을 배워 일반인보다는 더 아는 수준이 되었습니다.

제가 후회하는 것이 딱하나있기는 합니다.

그것은 프로그래밍공부를 하면서 그러니까 흥미가 있는 것을 배우면서

고등학교 공부도 조금 더 해놓을 걸... 입니다.

자기 자식이 성공하는 것을 원하고 자기 자식이 행복한 것을 원하는 부모는

자기 자식이 어느때에 행복한지를 생각해보시면 좋을 것 같습니다.

저는 게임을 할때가 행복했습니다.

그래서 그 게임이라는 도구로 흥미를 붙인 프로그래밍을 할 때도 행복합니다.

 

제발 게임을 안한다고 서울대 갈 수 있을 거란 희망 버리세요

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

물론 제가 이것을 작성해서 마냥 좋을 것 같지는 않습니다만...... 이것저것 제작을 할 것 같기때문에 만약 올라온다면!

 

코드 + 주석!

막 그렇게 올라올 것이라 생각을 합니다 후후.....(?)

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

이번에 확률과 통계라는 과목을 배우게 되면서 팩토리얼이라는 공식을 우연히 접했습니다.

그렇게 제가 생각한 재미난 생각으로 한번 코딩을 해보자라고 생각을 하게 되었습니다.

그렇게 저는 계산기 비슷하게 만드려고 노력을 하였고 결과물은 이렇게 나왔습니다.


확률과 통계 팩토리얼 코딩한 결과


저기 위에의 코드에는 나와있지 않지만 저는 35부터 입력이 되는 순간 프로그램을 종료하게 설계를 하였습니다.

if (35 <= n)과 같은 방식으로요

팩토리얼을 계산하게 하는 코드는 생각보다 쉬웠습니다.

5!이라는 것은 120입니다. 5X4X3X2X1과 같은 과정이 있었기에 120이 되는 것이지요

그러면 공식이 하나씩 내려가는 것이 아니라 올라가는 것이라고 생각을 한다면 코딩을 할 수 있을겁니다.

솔직히 감소 연산자로 하나씩 내림차로 진행을 할 수 있지만 저는 그냥 오름차순으로 계산을 하게 만들었습니다.


그렇게 만든 프로그램에는 14!부터 이상한 값이 나오기 시작합니다.

분명 2와 5를 곱했으면 10이 나와서 마지막 자리가 0으로 끝나야 하는데 이상한 2가 나온다던가 그런 버그가 발생하기 시작합니다.

그래서 저는 해당 코드를 나중에 문제점이 무엇인지 알고 수정을 해보고 싶다고 생각을 하게되었습니다.

현재까지 생각을 해본 결과로는 반복문을 10개 단위로 끊어서 연산을 하게 된다면 좋을 것 같다고 생각을 해보았습니다.

물론 다른 것의 문제일 수도 있지만 한번에 너무 많은 반복 작업은 무엇인가 버그를 일으키기에 좋은 요소라고 생각을 하기 때문입니다.

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

제가 학교에서 동아리를 담당 했었지만 이번 3학년 부터는 안하게 되었습니다.

그런데 그때 만들었었던 그 2D게임을 이번에 UI업데이트 겸 퇴화?? 라고 해서

네이밍을 그대로 하고 2를 만드는 것이 아닌 비슷한 느낌의 게임을 만들고 즐겁게 플레이 하도록 유도를 하는 것으로 이 블로그를 만들게 되었습니다.


그런데 이게 왠걸?? 타이밍 좋게 정부가 삽질을 하고 있네????


저도 이번에 게임을 스스로 내렸습니다.

세금내기 싫고 돈내기 싫거든요 게임 사는 것으로 장비 맞추는 것으로 등골이 휠..... 아니 먹을거 줄이고 있는데 게임 올리겠다고 장비 팔고 그럴 수는 없는 것이잖아요???

그냥 가지고 있으려고도 생각을 했는데....

그냥 가끔 녹화를 해서 블로그에 올리는 방식 말고는 전혀 없다고 생각을 하게 되었습니다.


그런데 제가 이제 시간이 없어서 한달에 한번 올리는 것으로 하게 되었습니다


그리고 여기에 올려서 컴퓨터 저장공간을 아끼려고 했었는데

그것도 못하게 되었습니다

그러고 보니 백업을 못하게 되어서.....크흡


변명일 수도 있겠지만 급하게 내렸는데

컴퓨터를 바꾸고 보니....?!?!

없어요....


하하.....

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

지금 제가 화학 반응 계산기라는 것을 만들게 되었습니다.

물론 제가 지금 지원하는 산성은 3개

염기성은 2개로 고2 수준(?)의 화1을 배우는 내용을 다루고 있습니다.


내용으로는 산성을 띄는 화학식과 염기성을 띄는 화학식 하나가 만나게 되어서 중화 반응이 일어나는 내용입니다.



#include <stdio.h>

#include <Windows.h>

#include <stdlib.h>

#include <string.h>


//false 0

//true 1


#define max_max 15


int main() {

int hydrogen_chloride = 0; //염화수소를 불러오고 거짓의 형태로 바꾼다.

int sulfuric_acid = 0; //황산을 불러오고 거짓의 형태로 바꾼다.

int nitric_acid = 0; //질산을 불러오고 거짓의 형태로 바꾼다.

int sodium_hydroxide = 0; //수산화나트륨을 불러오고 거짓의 형태로 바꾼다.

int potassium_hydroxide = 0; //수산화칼슘을 불러오고 거짓의 형태로 바꾼다.


int aCid = 0; //산성 용액이 있는 지 없는 지를 판단하는 수단으로 거짓의 형태로 바꾼다.

int bAsic = 0; //염기성 용액이 있는 지 없는 지를 판단하는 수단으로 거짓의 형태로 바꾼다.


char acid[1][max_max]; //산성을 입력하는 15칸 짜리를 만든다.

char basic[1][max_max];//염기성을 입력하는 15칸 짜리를 만든다.


float acidic_solution; //산성의 용액양

float base_solution;   //염기성의 용액양


float acidic_Concentration; //산성 농도

float base_Concentration;  //염기성 농도


float acidic_end; //산성 용액과 농도 총 합

float base_end; //염기성 용액과 농도 총 합

int i; //반복을 담당함


printf("입력하는 방식은 다양합니다.\n물의 화학식으로 예를 들면\nH(2)O으로 입력을 해야 합니다.\n");

printf("그러면 먼저 산성을 입력해 주세요 : ");

aCid = 0; //산성이 달성이 되었는가 아닌가를 판단하는 것이므로 거짓으로 셋팅

bAsic = 0;//염기성이 달성이 되었는가 아닌가를 판단하는 것이므로 거짓으로 셋팅

gets(acid); //산성을 입력하여 산성이라는 변수에 저장을 함

getchar(); //버퍼(입력란)을 초기화함

printf("산성 용액의 ml당 농도는 얼마로 설정할까요? 기본은 1입니다. : "); 

scanf_s("%d", &acidic_Concentration); //산성의 농도를 입력받아 농도를 담당하는 변수에 저장함

getchar();//버퍼(입력란)을 초기화함

printf("\n산성 용액의 양은 어느 정도로 할까요?? (단위는 ml) : ");

scanf_s("%d", &acidic_solution); //산성의 용액 양을 입력받아 양을 담당하는 변수에 저장함

getchar();//버퍼(입력란)을 초기화함

printf("\n그러면 이제 염기성의 용액을 입력해 주세요 : ");

gets(basic);//염기성을 입력하여 염기성이라는 변수에 저장을 함

getchar(); //버퍼(입력란)을 초기화함

printf("염기성 용액의 ml당 농도는 얼마로 설정할까요? 기본은 1입니다. : ");

scanf_s("%d", &base_Concentration); //염기성의 농도를 입력받아 농도를 담당하는 변수에 저장함

getchar();//버퍼(입력란)을 초기화함

printf("\n염기성 용액의 양은 어느 정도로 할까요?? (단위는 ml) : ");

scanf_s("%d", &base_solution); //염기성의 용액 양을 입력받아 양을 담당하는 변수에 저장함

printf("\n");



acidic_end = acidic_Concentration * acidic_solution; //농도의 정도를 파악하기 위해 용액의 양과 농도를 곱함

base_end = base_solution * base_Concentration; //농도의 정도를 파악하기 위해 용액의 양과 농도를 곱함


for (i = 0; i < 15; i++) {

if (acid[i] == 'H' && acid[i + 1] == 'C' && acid[i + 2] == 'l') { 

hydrogen_chloride = 1;

sulfuric_acid = 0;

nitric_acid = 0;

aCid = 1;

break;

}

}

if (aCid == 0) {

for (i = 0; i < 15; i++) {

if (acid[i] == 'H'&& acid[i + 1] == '('&& acid[i + 2] == '2'&& acid[i + 3] == ')'&& acid[i + 4] == 'S'&& acid[i + 5] == 'O'&&acid[i + 6] == '('&&acid[i + 7] == '4'&&acid[i + 8] == ')') {

hydrogen_chloride = 0;

sulfuric_acid = 1;

nitric_acid = 0;

aCid = 1;

break;

}

}

}

if (aCid == 0) {

for (i = 0; i < 15; i++)

if (acid[i] == 'H' && acid[i + 1] == 'N' && acid[i + 2] == 'O' && acid[i + 3] == '(' && acid[i + 4] == '3' && acid[i + 5] == ')') {

hydrogen_chloride = 0;

sulfuric_acid = 0;

nitric_acid = 1;

aCid = 1;

break;

}

}


for (i = 0; i < 15; i++) {

if (basic[i] == 'N' && basic[i + 1] == 'a' && basic[i + 2] == 'O' && basic[i + 3] == 'H') {

sodium_hydroxide = 1;

potassium_hydroxide = 0;

bAsic = 1;

break;

}

}

if (bAsic == 0) {

for (i = 0; i < 15; i++) {

if (basic[i] == 'C' && basic[i + 1] == 'a' && basic[i + 2] == '(' && basic[i + 3] == 'O' && basic[i + 4] == 'H'&&basic[i + 5] == ')'&&basic[i + 6] == '('&&basic[i + 7] == '3'&&basic[i + 8] == ')') {

sodium_hydroxide = 0;

potassium_hydroxide = 0;

bAsic = 1;

break;

}

}

}



if (acidic_end < base_end) {

printf("반응 후의 용액은 염기성이 됩니다.\n");

}

else if (acidic_end == base_end) {

printf("반응 후의 용액은 중성이 됩니다.\n");

}

else if (acidic_end > base_end) {

printf("반응 후의 용액은 산성이 됩니다.\n");

}


if (hydrogen_chloride == 1 && sodium_hydroxide == 1) { //염화수소하고 수산화나트륨반응

printf("H(2)O  +  Cl^-  +  Na^+ 가 반응 후 화학식이 됩니다.\n");

}

if (hydrogen_chloride == 1 && potassium_hydroxide == 1) { //염화수소하고 수산화칼슘반응

printf("H(2)O  +  Cl^-  +  Ca^+ 가 반응 후 화학식이 됩니다.\n");

}

if (sulfuric_acid == 1 && sodium_hydroxide == 1) { //황산하고 수산화나트륨반응

printf("H(2)O  +  H^+  +  SO(4)^-  +  Na^- 가 반응 후 화학식이 됩니다.\n");

}

if (sulfuric_acid == 1 && potassium_hydroxide == 1) { //황산하고 수산화칼슘반응

printf("H(2)O  +  H^+  +  SO(4)^-  +  Ca^- 가 반응 후 화학식이 됩니다.\n");

}

if (nitric_acid == 1 && sodium_hydroxide == 1) { //질산하고 수산화나트륨반응

printf("H(2)O  +  NO(3)^-  +  Na^- 가 반응 후 화학식이 됩니다.\n");

}

if (nitric_acid == 1 && potassium_hydroxide == 1) { //질산하고 수산화칼슘반응

printf("H(2)O  +  NO(3)^-  +  Ca^- 가 반응 후 화학식이 됩니다.\n");

}

printf("\n\n\n");

getchar();

return 0;

}

해당 코드는 전부 공개 처리를 하도록 하겠습니다.

해당 코드는 아마 제 글을 읽으셨더라면 이해하는 것에 관해서는 무리가 없게 하였습니다.


주석을 전부 읽으신다면 아마도 가능하지 않을까 싶습니다.


해당 코드는 버그가 있는 코드이므로 새로 수정한 코드를 올리도록 하겠습니다.

#include <stdio.h>

#include <Windows.h>

#include <stdlib.h>

#include <string.h>


//false 0

//true 1


#define max_max 15


int main() {

int hydrogen_chloride = 0; //염화수소를 불러오고 거짓의 형태로 바꾼다.

int sulfuric_acid = 0; //황산을 불러오고 거짓의 형태로 바꾼다.

int nitric_acid = 0; //질산을 불러오고 거짓의 형태로 바꾼다.

int sodium_hydroxide = 0; //수산화나트륨을 불러오고 거짓의 형태로 바꾼다.

int potassium_hydroxide = 0; //수산화칼슘을 불러오고 거짓의 형태로 바꾼다.


int aCid = 0; //산성 용액이 있는 지 없는 지를 판단하는 수단으로 거짓의 형태로 바꾼다.

int bAsic = 0; //염기성 용액이 있는 지 없는 지를 판단하는 수단으로 거짓의 형태로 바꾼다.


char acid[1][max_max]; //산성을 입력하는 15칸 짜리를 만든다.

char basic[1][max_max];//염기성을 입력하는 15칸 짜리를 만든다.


float acidic_solution; //산성의 용액양

float base_solution;   //염기성의 용액양


float acidic_Concentration; //산성 농도

float base_Concentration;  //염기성 농도


float acidic_end; //산성 용액과 농도 총 합

float base_end; //염기성 용액과 농도 총 합

int i; //반복을 담당함


//char *ptr_acid; // 산성의 체크

//char *ptr_base; // 염기의 체크


printf("입력하는 방식은 다양합니다.\n물의 화학식으로 예를 들면\nH(2)O으로 입력을 해야 합니다.\n");

printf("그러면 먼저 산성을 입력해 주세요 : ");

aCid = 0; //산성이 달성이 되었는가 아닌가를 판단하는 것이므로 거짓으로 셋팅

bAsic = 0;//염기성이 달성이 되었는가 아닌가를 판단하는 것이므로 거짓으로 셋팅

gets(acid); //산성을 입력하여 산성이라는 변수에 저장을 함

getchar(); //버퍼(입력란)을 초기화함

printf("산성 용액의 ml당 농도는 얼마로 설정할까요? 기본은 1입니다. : "); 

scanf_s("%d", &acidic_Concentration); //산성의 농도를 입력받아 농도를 담당하는 변수에 저장함

getchar();//버퍼(입력란)을 초기화함

printf("\n산성 용액의 양은 어느 정도로 할까요?? (단위는 ml) : ");

scanf_s("%d", &acidic_solution); //산성의 용액 양을 입력받아 양을 담당하는 변수에 저장함

getchar();//버퍼(입력란)을 초기화함

printf("\n그러면 이제 염기성의 용액을 입력해 주세요 : ");

gets(basic);//염기성을 입력하여 염기성이라는 변수에 저장을 함

getchar(); //버퍼(입력란)을 초기화함

printf("염기성 용액의 ml당 농도는 얼마로 설정할까요? 기본은 1입니다. : ");

scanf_s("%d", &base_Concentration); //염기성의 농도를 입력받아 농도를 담당하는 변수에 저장함

getchar();//버퍼(입력란)을 초기화함

printf("\n염기성 용액의 양은 어느 정도로 할까요?? (단위는 ml) : ");

scanf_s("%d", &base_solution); //염기성의 용액 양을 입력받아 양을 담당하는 변수에 저장함

printf("\n");



acidic_end = acidic_Concentration * acidic_solution; //농도의 정도를 파악하기 위해 용액의 양과 농도를 곱함

base_end = base_solution * base_Concentration; //농도의 정도를 파악하기 위해 용액의 양과 농도를 곱함


for (i = 0; i < 15; i++) {

if (strstr(acid, "HCl")) {

hydrogen_chloride = 1;

sulfuric_acid = 0;

nitric_acid = 0;

aCid = 1;

break;

}

}

if (aCid == 0) {

for (i = 0; i < 15; i++) {

if (strstr(acid, "H(2)SO(4)")) {

hydrogen_chloride = 0;

sulfuric_acid = 1;

nitric_acid = 0;

aCid = 1;

break;

}

}

}

if (aCid == 0) {

for (i = 0; i < 15; i++)

if (strstr(acid, "HNO(3)")) {

hydrogen_chloride = 0;

sulfuric_acid = 0;

nitric_acid = 1;

aCid = 1;

break;

}

}


for (i = 0; i < 15; i++) {

if (strstr(basic, "NaOH")) {

sodium_hydroxide = 1;

potassium_hydroxide = 0;

bAsic = 1;

break;

}

}

if (bAsic == 0) {

for (i = 0; i < 15; i++) {

if (strstr(basic, "Ca(OH)(2)")) {

sodium_hydroxide = 0;

potassium_hydroxide = 0;

bAsic = 1;

break;

}

}

}



if (acidic_end < base_end) {

printf("반응 후의 용액은 염기성이 됩니다.\n");

}

else if (acidic_end == base_end) {

printf("반응 후의 용액은 중성이 됩니다.\n");

}

else if (acidic_end > base_end) {

printf("반응 후의 용액은 산성이 됩니다.\n");

}


if (hydrogen_chloride == 1 && sodium_hydroxide == 1) { //염화수소하고 수산화나트륨반응

printf("H(2)O  +  Cl^-  +  Na^+ 가 반응 후 화학식이 됩니다.\n");

}

if (hydrogen_chloride == 1 && potassium_hydroxide == 1) { //염화수소하고 수산화칼슘반응

printf("H(2)O  +  Cl^-  +  Ca^+ 가 반응 후 화학식이 됩니다.\n");

}

if (sulfuric_acid == 1 && sodium_hydroxide == 1) { //황산하고 수산화나트륨반응

printf("H(2)O  +  H^+  +  SO(4)^-  +  Na^- 가 반응 후 화학식이 됩니다.\n");

}

if (sulfuric_acid == 1 && potassium_hydroxide == 1) { //황산하고 수산화칼슘반응

printf("H(2)O  +  H^+  +  SO(4)^-  +  Ca^- 가 반응 후 화학식이 됩니다.\n");

}

if (nitric_acid == 1 && sodium_hydroxide == 1) { //질산하고 수산화나트륨반응

printf("H(2)O  +  NO(3)^-  +  Na^- 가 반응 후 화학식이 됩니다.\n");

}

if (nitric_acid == 1 && potassium_hydroxide == 1) { //질산하고 수산화칼슘반응

printf("H(2)O  +  NO(3)^-  +  Ca^- 가 반응 후 화학식이 됩니다.\n");

}

printf("\n\n\n");

Sleep(12300);

return 0;

}

아래의 것은 재귀함수를 통한 반복과 키보드에서 나가는 명령어를 추가하였습니다.

#include <stdio.h>

#include <Windows.h>

#include <stdlib.h>

#include <string.h>


//false 0

//true 1


#define max_max 15


int main() {

int hydrogen_chloride = 0; //염화수소를 불러오고 거짓의 형태로 바꾼다.

int sulfuric_acid = 0; //황산을 불러오고 거짓의 형태로 바꾼다.

int nitric_acid = 0; //질산을 불러오고 거짓의 형태로 바꾼다.

int sodium_hydroxide = 0; //수산화나트륨을 불러오고 거짓의 형태로 바꾼다.

int potassium_hydroxide = 0; //수산화칼슘을 불러오고 거짓의 형태로 바꾼다.


int aCid = 0; //산성 용액이 있는 지 없는 지를 판단하는 수단으로 거짓의 형태로 바꾼다.

int bAsic = 0; //염기성 용액이 있는 지 없는 지를 판단하는 수단으로 거짓의 형태로 바꾼다.


char acid[1][max_max]; //산성을 입력하는 15칸 짜리를 만든다.

char basic[1][max_max];//염기성을 입력하는 15칸 짜리를 만든다.


int acidic_solution; //산성의 용액양

int base_solution;   //염기성의 용액양


int acidic_Concentration; //산성 농도

int base_Concentration;  //염기성 농도


int acidic_end; //산성 용액과 농도 총 합

int base_end; //염기성 용액과 농도 총 합

int i; //반복을 담당함


//char *ptr_acid; // 산성의 체크

//char *ptr_base; // 염기의 체크


printf("입력하는 방식은 다양합니다.\n물의 화학식으로 예를 들면\nH(2)O으로 입력을 해야 합니다.\n");

printf("종료하시려면 산성 입력시에 'x'만 입력해 주세요\n");

printf("그러면 먼저 산성을 입력해 주세요 : ");

aCid = 0; //산성이 달성이 되었는가 아닌가를 판단하는 것이므로 거짓으로 셋팅

bAsic = 0;//염기성이 달성이 되었는가 아닌가를 판단하는 것이므로 거짓으로 셋팅

gets(acid); //산성을 입력하여 산성이라는 변수에 저장을 함

getchar(); //버퍼(입력란)을 초기화함

if (strstr(acid, "x")) {

return 0;

}

printf("산성 용액의 ml당 농도는 얼마로 설정할까요? 기본은 1입니다. : "); 

scanf_s("%d", &acidic_Concentration);

getchar();//버퍼(입력란)을 초기화함

printf("\n산성 용액의 양은 어느 정도로 할까요?? (단위는 ml) : ");

scanf_s("%d", &acidic_solution); //산성의 용액 양을 입력받아 양을 담당하는 변수에 저장함

acidic_end = acidic_Concentration * acidic_solution;

getchar();//버퍼(입력란)을 초기화함

printf("\n그러면 이제 염기성의 용액을 입력해 주세요 : ");

gets(basic);//염기성을 입력하여 염기성이라는 변수에 저장을 함

getchar(); //버퍼(입력란)을 초기화함

printf("염기성 용액의 ml당 농도는 얼마로 설정할까요? 기본은 1입니다. : ");

scanf_s("%d", &base_Concentration); //염기성의 농도를 입력받아 농도를 담당하는 변수에 저장함

getchar();//버퍼(입력란)을 초기화함

printf("\n염기성 용액의 양은 어느 정도로 할까요?? (단위는 ml) : ");

scanf_s("%d", &base_solution); //염기성의 용액 양을 입력받아 양을 담당하는 변수에 저장함

getchar();

base_end = base_Concentration * base_solution;

printf("\n");



//acidic_end = acidic_Concentration * acidic_solution; //농도의 정도를 파악하기 위해 용액의 양과 농도를 곱함

//base_end = base_solution * base_Concentration; //농도의 정도를 파악하기 위해 용액의 양과 농도를 곱함



//acidic_end = acidic_Concentration * acidic_solution;

//printf("%d\n", acidic_end);

//base_end = base_Concentration * base_solution;

//printf("%d\n", base_end);



for (i = 0; i < 15; i++) {

if (strstr(acid, "HCl")) {

hydrogen_chloride = 1;

sulfuric_acid = 0;

nitric_acid = 0;

aCid = 1;

break;

}

}

if (aCid == 0) {

for (i = 0; i < 15; i++) {

if (strstr(acid, "H(2)SO(4)")) {

hydrogen_chloride = 0;

sulfuric_acid = 1;

nitric_acid = 0;

aCid = 1;

break;

}

}

}

if (aCid == 0) {

for (i = 0; i < 15; i++)

if (strstr(acid, "HNO(3)")) {

hydrogen_chloride = 0;

sulfuric_acid = 0;

nitric_acid = 1;

aCid = 1;

break;

}

}


for (i = 0; i < 15; i++) {

if (strstr(basic, "NaOH")) {

sodium_hydroxide = 1;

potassium_hydroxide = 0;

bAsic = 1;

break;

}

}

if (bAsic == 0) {

for (i = 0; i < 15; i++) {

if (strstr(basic, "Ca(OH)(2)")) {

sodium_hydroxide = 0;

potassium_hydroxide = 0;

bAsic = 1;

break;

}

}

}



if (acidic_end < base_end) {

printf("반응 후의 용액은 염기성이 됩니다.\n");

}

else if (acidic_end == base_end) {

printf("반응 후의 용액은 중성이 됩니다.\n");

}

else if (acidic_end > base_end) {

printf("반응 후의 용액은 산성이 됩니다.\n");

}


if (hydrogen_chloride == 1 && sodium_hydroxide == 1) { //염화수소하고 수산화나트륨반응

printf("H(2)O  +  Cl^-  +  Na^+ 가 반응 후 화학식이 됩니다.\n");

}

if (hydrogen_chloride == 1 && potassium_hydroxide == 1) { //염화수소하고 수산화칼슘반응

printf("H(2)O  +  Cl^-  +  Ca^+ 가 반응 후 화학식이 됩니다.\n");

}

if (sulfuric_acid == 1 && sodium_hydroxide == 1) { //황산하고 수산화나트륨반응

printf("H(2)O  +  H^+  +  SO(4)^2-  +  Na^- 가 반응 후 화학식이 됩니다.\n");

}

if (sulfuric_acid == 1 && potassium_hydroxide == 1) { //황산하고 수산화칼슘반응

printf("H(2)O  +  H^+  +  SO(4)^2-  +  Ca^- 가 반응 후 화학식이 됩니다.\n");

}

if (nitric_acid == 1 && sodium_hydroxide == 1) { //질산하고 수산화나트륨반응

printf("H(2)O  +  NO(3)^-  +  Na^- 가 반응 후 화학식이 됩니다.\n");

}

if (nitric_acid == 1 && potassium_hydroxide == 1) { //질산하고 수산화칼슘반응

printf("H(2)O  +  NO(3)^-  +  Ca^- 가 반응 후 화학식이 됩니다.\n");

}

printf("\n\n\n");

main();

return 0;

}


블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

코드가 생각보다 많이 더러울 수도 있음을 미리 알려드립니다.

몆년이 주기인지는 모르겠으나 무슨 조건이 있는 것은 확실하고 음력의 달이 반복되는 현상의 조건때문에 아마도 2099년까지 유효한 프로그램이 될 것 같습니다.

만약 조건을 아시는 분이 이 블로그에 오게 된다면 댓글로 알려주시면 감사할 것 같습니다.

그럼 프로그램과 함께 코드를 수정조치를 취하겠습니다.


#include <time.h>

#include <stdio.h>

#include <Windows.h>

#include <stdlib.h>

#include <string.h>


#define WA 32


#define bool int

#define true 1

#define false 0


/*int main() {

struct tm *localtime(const time_t *timer);

struct tm *date;

const time_t t = time(NULL);

처음:

date = localtime(&t);


printf(

"%d/%d/%d %d:%d:%d\n", date->tm_year + 1900, date->tm_mon + 1,

date->tm_mday, date->tm_hour, date->tm_min, date->tm_sec

);

Sleep(1000);

goto 처음;

getchar();

return 0;

}*/


int main() {

struct tm*localtime(const time_t *timer);

struct tm*date;

const time_t t = time(NULL);


int t_year; //양력 년

int t_mon; //양력 달

int t_day; //양력 일


//int i_year; //임시 년

//int i_mon; //임시 달

//int i_day; //임시 일


int m_year; //음력 년

int m_mon; //음력 달

int m_day; //음력 일


int Mn = 0; //깍인 수


bool no_moon = 0; //삭

bool crescent = 0; //초승달

bool waxing_moon = 0;//상현달

bool full_moon = 0;//보름달

bool last_quarter = 0;//하현달

bool dark_moon = 0;//그믐달


//윤달이 든 목록

int one_more_mon[30];


for (int iii = 0; iii == 30; iii++) {

one_more_mon[iii] = 0;

}

printf("해당 프로그램의 수명은 존재하나 어디까지인지는 모르겠습니다.\n");

printf("버그 제보는 https://kilo-staticgames-85326.tistory.com/notice/85 \n 이메일 제보는 kilo0103@naver.com또는 kyjkyj0816@naver.com \n");

printf("학교에서 나누어준 프린트에 있는 달의 관측시간을 기반으로 제작을 하였다는 것을 말하겠습니다.\n\n\n");

date = localtime(&t);

t_year = date->tm_year + 1900;

t_mon = date->tm_mon + 1;

t_day = date->tm_mday;

printf("양력은 %d년%d월%d일 %d:%d:%d\n\n",

t_year,

t_mon,

t_day,

date->tm_hour,

date->tm_min,

date->tm_sec);

for (;;) {

if (t_year == 2018 && t_mon == 12 && t_day == 7) {

break;

}

else {

t_day--;

Mn++;

if (t_day == 0) {

if (t_mon == 1 || t_mon == 3 || t_mon == 5 || t_mon == 7 || t_mon == 8 || t_mon == 10 || t_mon == 12) { //만약 1월,3월,5월,7월,8월,10월,12월이라면 31일로 셋팅

t_day = 31;

}

else if (t_mon == 2) { //만약 2월이라면

if (t_year % 4 == 0 || t_year % 400 == 0) { //윤년일시에 29일로 셋팅

if (t_year % 100 == 0) {

t_mon = 28;

}

else {

t_mon = 29;

}

}

else { //아니라면 28일로 셋팅

t_mon = 28;

}

}

else {//그 외는 전부 30일로 셋팅

t_day = 30;

}

t_mon--;

if (t_mon == 0) {

t_mon = 12;

t_year--;

}

}

}

}

m_year = 2018;

m_mon = 11;

m_day = 1;

/*while (AaA == Mn) {

//2월을 제외한 달은 30일이 있고 2월만 29일로 고정

printf("음력 시작\n");

m_day++;

if (m_day == 29) {

if (m_mon == 2) {

m_mon++;

m_day = 1;

}

}

else if (m_day == 30) {

m_day = 1;

if (m_mon == 12) {

m_mon = 1;

m_year++;

}

else {

m_mon++;

}

}

AaA++;

}*/

음력반복:

if (Mn == 0) {

goto 음력반복_끝;

}

else {

m_day++;

if (m_year == 2020 && m_mon == 4 && m_day == 30 && one_more_mon[0] == 0) {

one_more_mon[0] = 1;

m_day = 1;

}

else if (m_year == 2023 && m_mon == 2 && m_day == 29 && one_more_mon[1] == 0) {

one_more_mon[1] = 1;

m_day = 1;

}

else if (m_year == 2025 && m_mon == 6 && m_day == 30 && one_more_mon[2] == 0) {

one_more_mon[2] = 1;

m_day = 1;

}

else if (m_year == 2028 && m_mon == 5 && m_day == 30 && one_more_mon[3] == 0) {

one_more_mon[3] = 1;

m_day = 1;

}

else if (m_year == 2031 && m_mon == 3 && m_day == 30 && one_more_mon[4] == 0) {

one_more_mon[4] = 1;

m_day = 1;

}

else if (m_year == 2033 && m_mon == 11 && m_day == 30 && one_more_mon[5] == 0) {

one_more_mon[5] = 1;

m_day = 1;

}

else if (m_year == 2036 && m_mon == 6 && m_day == 30 && one_more_mon[6] == 0) {

one_more_mon[6] = 1;

m_day = 1;

}

else if (m_year == 2039 && m_mon == 5 && m_day == 30 && one_more_mon[7] == 0) {

one_more_mon[7] = 1;

m_day = 1;

}

else if (m_year == 2042 && m_mon == 2 && m_day == 29 && one_more_mon[8] == 0) {

one_more_mon[8] = 1;

m_day = 1;

}

else if (m_year == 2044 && m_mon == 7 && m_day == 30 && one_more_mon[9] == 0) {

one_more_mon[9] = 1;

m_day = 1;

}

else if (m_year == 2047 && m_mon == 5 && m_day == 30 && one_more_mon[10] == 0) {

one_more_mon[10] = 1;

m_day = 1;

}

else if (m_year == 2050 && m_mon == 3 && m_day == 30 && one_more_mon[11] == 0) {

one_more_mon[11] = 1;

m_day = 1;

}

else if (m_year == 2052 && m_mon == 8 && m_day == 30 && one_more_mon[12] == 0) {

one_more_mon[12] = 1;

m_day = 1;

}

else if (m_year == 2055 && m_mon == 6 && m_day == 30 && one_more_mon[13] == 0) {

one_more_mon[13] = 1;

m_day = 1;

}

else if (m_year == 2058 && m_mon == 4 && m_day == 30 && one_more_mon[14] == 0) {

one_more_mon[14] = 1;

m_day = 1;

}

else if (m_year == 2061 && m_mon == 3 && m_day == 30 && one_more_mon[15] == 0) {

one_more_mon[15] = 1;

m_day = 1;

}

else if (m_year == 2063 && m_mon == 7 && m_day == 30 && one_more_mon[16] == 0) {

one_more_mon[16] = 1;

m_day = 1;

}

else if (m_year == 2066 && m_mon == 5 && m_day == 30 && one_more_mon[17] == 0) {

one_more_mon[17] = 1;

m_day = 1;

}

else if (m_year == 2069 && m_mon == 4 && m_day == 30 && one_more_mon[18] == 0) {

one_more_mon[18] = 1;

m_day = 1;

}

else if (m_year == 2071 && m_mon == 8 && m_day == 30 && one_more_mon[19] == 0) {

one_more_mon[19] = 1;

m_day = 1;

}

else if (m_year == 2074 && m_mon == 6 && m_day == 30 && one_more_mon[20] == 0) {

one_more_mon[20] = 1;

m_day = 1;

}

else if (m_year == 2077 && m_mon == 4 && m_day == 30 && one_more_mon[21] == 0) {

one_more_mon[21] = 1;

m_day = 1;

}

else if (m_year == 2080 && m_mon == 3 && m_day == 30 && one_more_mon[22] == 0) {

one_more_mon[22] = 1;

m_day = 1;

}

else if (m_year == 2082 && m_mon == 7 && m_day == 30 && one_more_mon[23] == 0) {

one_more_mon[23] = 1;

m_day = 1;

}

else if (m_year == 2085 && m_mon == 5 && m_day == 30 && one_more_mon[24] == 0) {

one_more_mon[24] = 1;

m_day = 1;

}

else if (m_year == 2088 && m_mon == 4 && m_day == 30 && one_more_mon[25] == 0) {

one_more_mon[25] = 1;

m_day = 1;

}

else if (m_year == 2090 && m_mon == 8 && m_day == 30 && one_more_mon[26] == 0) {

one_more_mon[26] = 1;

m_day = 1;

}

else if (m_year == 2093 && m_mon == 6 && m_day == 30 && one_more_mon[27] == 0) {

one_more_mon[27] = 1;

m_day = 1;

}

else if (m_year == 2096 && m_mon == 4 && m_day == 30 && one_more_mon[28] == 0) {

one_more_mon[28] = 1;

m_day = 1;

}

else if (m_year == 2099 && m_mon == 3 && m_day == 30 && one_more_mon[29] == 0) {

one_more_mon[29] = 1;

m_day = 1;

}

if (m_day == 29) {

if (m_mon == 2) {

m_mon++;

m_day = 1;

}

}

else if (m_day == 30) {

m_day = 1;

if (m_mon == 12) {

m_mon = 1;

m_year++;

}

else {

m_mon++;

}

}

Mn--;

goto 음력반복;

}

음력반복_끝:

printf("음력은 %d년%d월%d일이고\n오늘의", m_year, m_mon, m_day);


switch (m_day) {

case 1:

no_moon = 1;

break;

case 2:

case 3:

crescent = 1;

break;

case 4:

case 5:

case 6:

case 7:

case 8:

waxing_moon = 1;

break;

case 9:

case 10:

case 11:

case 12:

case 13:

case 14:

case 15:

full_moon = 1;

break;

case 16:

case 17:

case 18:

case 19:

case 20:

case 21:

case 22:

case 23:

last_quarter = 1;

break;

case 24:

case 25:

case 26:

case 27:

case 28:

case 29:

dark_moon = 1;

break;

case 30:

no_moon = 1;

break;

}


if (no_moon == 1) {

printf("달의 위상은 '삭'입니다.\n태양과 함께 뜨고 지므로 관측은 불가능 합니다.\n");

}

else if (crescent == 1) {

printf("달의 위상은 '초승달'입니다.\n뜨는 시각은 '09시'이고\n남중하는 시각으로는 '15시'이고\n지는 시각은 '21시'입니다.\n");

}

else if (waxing_moon == 1) {

printf("달의 위상은 '상현달'입니다.\n뜨는 시각은 '12시'이고\n남중하는 시각으로는 '18시'이고\n지는 시각은 '00시'입니다.\n");

}

else if (full_moon == 1) {

printf("달의 위상은 '보름달'입니다.\n뜨는 시각은 '18시'이고\n남중하는 시각으로는 '00시'이고\n지는 시각은 '06시'입니다.\n");

}

else if (last_quarter == 1) {

printf("달의 위상은 '하현달'입니다.\n뜨는 시각은 '00시'이고\n남중하는 시각으로는 '06시'이고\n지는 시각은 '12시'입니다.\n");

}

else if (dark_moon == 1) {

printf("달의 위상은 '그믐달'입니다.\n뜨는 시각은 '03시'이고\n남중하는 시각으로는 '09시'이고\n지는 시각은 '15시'입니다.\n");

}

printf("종료하시려면 '엔터'를 눌러주세요\n");

Sleep(1000);

getchar();

return 0;

}

해당 달의 위상 조건 같은 경우는 제가 다니는 학교의 학습지를 바탕으로 만들었습니다.


해당 코드는 코드를 정리하지 않았기 때문에 쓰지 않는 코드도 존재합니다.

그렇기 때문에 그 점은 알아주시고 직접 코드를 정리하시는 것은 2차 저작물로 인정하겠습니다.

또한 학교 선생님의 노트북에서 dll이 없다고 하였는데 무슨 dll인지를 확인시켜주시지 않아서 그 점은 직접 dll을 다운로드 하실 필요가 있다고 생각합니다.


아마도 왠만하면 깔려있을 겁니다.

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

Civil War (생존장르)의 고등학생인 신분으로 만든 1세대 게임입니다.

사후관리(버그 관련 업데이트)는 발견되는 즉시 해드릴 예정이며

기간은 아마 제가 군대를 가기 전까지라고 생각을 하고 있습니다.


프로그램 코드는 전부 막아 두었으나 비밀댓글로 필요한 이유와 메일주소를 주시면 보내드리도록 하겠습니다.


언제나 저희 블로그에서는 같이 게임을 만드실 분들을 구하고 있습니다.

개발 노트

2018 / 08 / 02 ------ v.1.0

특이사항 : 개발은 7월을 기준으로 종료하였고 개발완료 기념으로 그동안 밀린 게임을 하루동안 조금(?)하였기에 8월 1일에 게시를 하지 못하고 지금 게시를 하게 되었음 작성 시작은 8/2 이었으나 프로그램 설치 프로그램을 만들고 작성하는 와중 날자가 변경되었음

업데이트 내역

-이전 알파버전과 베타버전의 모든 게시글을 암호화 하였습니다.

-베타버전을 만들며 기획을 하였던 모든 업데이트를 완료 하였습니다.

-아이콘을 만들고 바탕화면에 숏컷(바로가기)을/를 생성하는 설치 프로그램을 생성하였습니다.


2018 / 08 / 02 ------ v.1.1

특이사항 : 심각한 버그 이외의 버그는 그냥 두었습니다. 예를 들어 화면을 벗어난다거나 그런 버그는 그냥 두었습니다. 원래는 유저 친화적으로 하려고 했는데 어려운 GUI가 

업데이트 내역

- 스테미나가 마이너스로 내려가도 진행이 가능하던 버그를 수정하였습니다.

- 화면에서 일반 탐방의 숫자가 오류가 나는 것을 표기하였습니다.


게임은 세금을 물기 싫어서 내리도록 하겠습니다.


블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

일단 지켜지는 지는 뒤로 하고 이렇게 만들 것을 예상하고 있는데.....

아무래도 혼자서 만드는 것이다보니 제작을 하는 것 만으로도 상당한 시간이 걸릴 예정이고 그리고??? 버그 픽스라던가 최적화 라던가도 신경을 쓰게 된다면 아마 너무 오래 걸리지 않을까 하고 조심스럽게 생각만 하고 


그럼 이것이 어느 정도까지는 확실 한가?? 이것을 물어본다면아마도 8번까지는 확실하게 해보는 것으로.... 읍읍


맵은 해당 영상에서 제주도라는 곳의 지형을 따와서 수정을 하며 제작을 하기로 결정!!!


그러면 빠르게 제작을 시작하는 것으로 하겠습니다.


맵은 다음에 제작 시작을 하겠습니다.


블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,