No.1 caliculate.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int get_cnt;
char ch;
char* s;
int logic();
void error(){
printf("error");
exit(0);
}
int ch2int(char c){
if(ch=='0') return 0;
else if(ch=='1') return 1;
else error();
}
void get_char(void){
ch = s[get_cnt];
get_cnt++;
}
int logic_val(){
int val;
if('0'<=ch && ch<='9'){
val = ch - '0';
printf("%d\n",val);
get_char();
return val;
}else error();
}
int element(){
int tmp;
if(ch=='('){
printf("%c\n",ch);
get_char();
tmp = logic();
if(ch==')'){
printf("%c\n",ch);
get_char();
}else error();
return tmp;
}else return logic_val();
}
int operand(){
if(ch=='-'){
printf("%c\n",ch);
get_char();
return -(element());
}
return element();
}
int logic(){
int tmp;
tmp = operand();
while(ch=='*'||ch=='+'){
if(ch=='*'){
printf("%c\n",ch);
get_char();
tmp *= operand();
}else if(ch=='+'){
printf("%c\n",ch);
get_char();
tmp += operand();
}
}
return tmp;
}
int main(int argc,char *argv[]){
int i,result;
get_cnt=0;
s = argv[1];
get_char();
result = logic();
printf("result: %d\n",result);
}
No.2 notation.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int get_cnt, temp;
char ch;
char* s;
int digit;
int logic();
void error(){
printf("error");
exit(0);
}
void get_char(void){
ch = s[get_cnt];
get_cnt++;
}
int val(){
int val;
if('0'<=ch && ch<='9'){
val = ch - '0';
printf("%d\n",val);
get_char();
return val;
}else error();
}
void binary(){
int val;
if(ch=='0' || ch=='1'){
val = ch - '0';
get_char();
if(ch!='\0'){
binary();
}
temp += val * digit;
digit*=2;
}else error();
}
void octal(){
int val;
if('0'<=ch && ch<='7'){
val = ch - '0';
get_char();
if(ch!='\0'){
octal();
}
temp += val * digit;
digit *= 8;
}else error();
}
void decimal(){
int val;
if('0'<=ch && ch<='9'){
val = ch - '0';
get_char();
if(ch!='\0'){
decimal();
}
temp += val * digit;
digit *= 10;
}else error();
}
int notation(void){
int tmp;
if(ch=='2'){
get_char();
if(ch=='#'){
get_char();
binary();
return temp;
}
}else if(ch=='8'){
get_char();
if(ch=='#'){
get_char();
octal();
return temp;
}
}
if('0'<=ch && ch<='9'){
decimal();
return temp;
}else error();
}
int main(int argc,char *argv[]){
int result;
temp = 0;
digit=1;
get_cnt=0;
s = argv[1];
get_char();
result = notation();
printf("result: %d\n",result);
}
今日友達に「意志が弱い」って言われた。
大抵は終電まで大学にいるけど、それでも家が近いから帰ってもまだ深夜一時位だ。それならあと2時間は勉強できるはずなのに、勉強してない。それが出来ない原因は俺の意志が弱いからだ、って言われた。
核心つきすぎて笑えたw確かにw
OS advance courceとlanguage processorのおかげで、どれだけ勉強しても多分taskが0になる事はほぼない。というか、UMLとかdata miningとかCPUの中の人とか、色々勉強したいこともある。だから、勉強出来る時間と体力が残っていれば、少しでも取り掛かるべきだ。でなければ、友達や天才ハカーに追いつくことは出来ないし、一方的に離されていくだけだ。ただでさえ動くのが遅かったのに。
すぐに現状に満足してしまうのは悪い癖だ。まだまだ精神的に幼稚。もっと自分自身を律する生活を心がけよう。
0 件のコメント:
コメントを投稿