PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2012/06/17 12:27:49
Name Picture-of
Subject c언어 소스코딩 질문입니다...
네..안드로이드 프레임워크...를 c로 해야하는 것 때문에 질문 올립니다....
저번에도 글 올렸는데....제가..그 동생입니다..형에게 부탁하는 것보다...제 수준을 고려해서 답변을 받는게 나을 것 같아서 질문드립니다.
그때 답변드리신 분들 정말 고맙지만......뭔가 끝이 안 보입니다.. 데드라인이 늦춰져서...할 수 있게 됐네요..
일단 주된 질문은 코드 보여드리고 나서 하겠습니다

package com.example.android.supportv4;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;

public class Home extends FragmentActivity
{
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                try {
                        String a = "0.012345-0.5612378";
                        String[] c = a.split("-");
                        if( c.length == 2 ){
                                String[] c_1 = c[0].split("\\.");
                                String[] c_2 = c[1].split("\\.");
                                try {
                                        Log.w("test","ad : " +getMeth_Minus(c_1, c_2) );
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        } else {
                                String[] d = a.split("\\+");        
                                String[] c_1 = d[0].split("\\.");
                                String[] c_2 = d[1].split("\\.");
                                try {
                                        Log.e("test","ad : " + getMeth_Plus(c_1, c_2) );
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
        
        private String getMeth_Minus(String[] c_1, String[] c_2){
                int a_2_length = c_1[1].length();
                char[] a_2_c, b_2_c, c_c;
                
                int b_2_length = c_2[1].length();
                
                int d_1 = 0;
                
                if( a_2_length > b_2_length){
                        a_2_c        = new char[a_2_length];
                        b_2_c         = new char[a_2_length];
                        c_c                 = new char[a_2_length];
                        d_1 = a_2_length;
                } else {
                        a_2_c        = new char[b_2_length];
                        b_2_c         = new char[b_2_length];
                        c_c                 = new char[b_2_length];
                        d_1 = b_2_length;
                }
                
                for( int i = 0; i < d_1; i++){
                        try {
                                a_2_c[i] = c_1[1].charAt(i);
                        } catch (Exception e) {
                                a_2_c[i] = 0;
                        }
                        try {
                                b_2_c[i] = c_2[1].charAt(i);
                        } catch (Exception e) {
                                b_2_c[i] = 0;
                        }
                }
                
                int b = 0;
                String ad = "";
                
                for( int i = d_1 - 1; i >= 0; i--){
                        int z = 0, x = 0, v = 0;
                        try {
                                z = Integer.parseInt(String.valueOf( a_2_c[i] ) );        
                        } catch (Exception e) {
                                z = 0;
                        }
                        
                        try {
                                x = Integer.parseInt(String.valueOf( b_2_c[i] ) );
                        } catch (Exception e) {
                                x = 0;
                        }
                        if( b == 1 ){
                                if( z == 0 ){
                                        z = 9;
                                } else {
                                        z -= 1;
                                }
                        }
                        Log.e("test","z : " + z + " x : " + x );
                        if( z < x ) {
                                z += 10;
                                v = z - x;
                                b = 1;
                        } else {
                                v = z - x;
                                b = 0;
                        }
                        
                        ad += String.valueOf(v);
                }
                for( int i = 0; i < ad.length(); i++){
                        try {
                                c_c[i] = ad.charAt(d_1 - ( i + 1 ));
                        } catch (Exception e) {
                                e.printStackTrace();
                        }        
                }
                ad = "";
                for( int i = 0; i < d_1; i++){
                        ad += String.valueOf( c_c[i] );
                }
                return ad;
        }
        
        private String getMeth_Plus(String[] c_1, String[] c_2){
                int a_2_length = c_1[1].length();
                char[] a_2_c, b_2_c, c_c;
                
                int b_2_length = c_2[1].length();
                
                int d_1 = 0;
                
                if( a_2_length > b_2_length){
                        a_2_c        = new char[a_2_length];
                        b_2_c         = new char[a_2_length];
                        c_c                 = new char[a_2_length];
                        d_1 = a_2_length;
                } else {
                        a_2_c        = new char[b_2_length];
                        b_2_c         = new char[b_2_length];
                        c_c                 = new char[b_2_length];
                        d_1 = b_2_length;
                }
                for( int i = 0; i < d_1; i++){
                        try {
                                a_2_c[i] = c_1[1].charAt(i);
                        } catch (Exception e) {
                                a_2_c[i] = 0;
                        }
                        try {
                                b_2_c[i] = c_2[1].charAt(i);
                        } catch (Exception e) {
                                b_2_c[i] = 0;
                        }
                }
                int b = 0;
                String ad = "";
                for( int i = d_1 - 1; i >= 0; i--){
                        int z = 0, x = 0, v = 0;
                        try {
                                z = Integer.parseInt(String.valueOf( a_2_c[i] ) );        
                        } catch (Exception e) {
                                z = 0;
                        }
                        
                        try {
                                x = Integer.parseInt(String.valueOf( b_2_c[i] ) );
                        } catch (Exception e) {
                                x = 0;
                        }
                        v = ( z + x ) + b;
                        if(  v >= 10 ){
                                if( v == 10 ){
                                        v = 0;
                                } else {
                                        v = ( z + x ) - 10;
                                }
                                b = 1;
                        }  else {
                                b = 0;
                        }
                        ad += String.valueOf(v);
                }
                for( int i = 0; i < ad.length(); i++){
                        try {
                                c_c[i] = ad.charAt(d_1 - ( i + 1 ));
                        } catch (Exception e) {
                                e.printStackTrace();
                        }        
                }
                ad = "";
                for( int i = 0; i < d_1; i++){
                        ad += String.valueOf( c_c[i] );
                }                
                
                a_2_length = c_1[0].length();

                a_2_c = null;
                b_2_c = null;
                c_c = null;
                b_2_length = c_2[0].length();
                
                d_1 = 0;
                
                if( a_2_length > b_2_length){
                        a_2_c        = new char[a_2_length];
                        b_2_c         = new char[a_2_length];
                        c_c                 = new char[a_2_length];
                        d_1 = a_2_length;
                } else {
                        a_2_c        = new char[b_2_length];
                        b_2_c         = new char[b_2_length];
                        c_c                 = new char[b_2_length];
                        d_1 = b_2_length;
                }
                for( int i = 0; i < d_1; i++){
                        try {
                                a_2_c[i] = c_1[0].charAt(i);
                        } catch (Exception e) {
                                a_2_c[i] = 0;
                        }
                        try {
                                b_2_c[i] = c_2[0].charAt(i);
                        } catch (Exception e) {
                                b_2_c[i] = 0;
                        }
                }
                String ad_1 = "";
                for( int i = d_1 - 1; i >= 0; i--){
                        int z = 0, x = 0, v = 0;
                        try {
                                z = Integer.parseInt(String.valueOf( a_2_c[i] ) );        
                        } catch (Exception e) {
                                z = 0;
                        }
                        
                        try {
                                x = Integer.parseInt(String.valueOf( b_2_c[i] ) );
                        } catch (Exception e) {
                                x = 0;
                        }
                        v = ( z + x ) + b;
                        if(  v >= 10 ){
                                if( v == 10 ){
                                        v = 0;
                                } else {
                                        v = ( z + x ) - 10;
                                }
                                b = 1;
                        }  else {
                                b = 0;
                        }
                        ad_1 += String.valueOf(v);
                }
                for( int i = 0; i < ad.length(); i++){
                        try {
                                c_c[i] = ad_1.charAt(d_1 - ( i + 1 ));
                        } catch (Exception e) {
                                e.printStackTrace();
                        }        
                }
                ad_1 = "";
                for( int i = 0; i < d_1; i++){
                        ad_1 += String.valueOf( c_c[i] );
                }
                return ad_1 + "." + ad;
        }
}


일단 이 소스는 소수단위까지 있는 숫자의 덧셈 연산입니다...
그러나 여기선 어떤건 문자열로 선언했고 어떤건 int로 선언한 것 같습니다..
근데..이 코드에선 c에서 입력받는..scanf가 따로 없는 것 같습니다...
아마 c로 수정할때는 입력받는 함수까지 만들어서 제출하라고 했습니다..즉..이걸 그대로 c로 옮기는게 아니라...scanf로 입력을 받아서 출력이 되는 소스로 수정을 해야됩니다...
질문은..try-catch 구문은...c에서는 구동이 안 됩니다..어떤 걸로 대체를 해야할까요..? if-else 구문이 있다지만...중첩을 써도 잘 안 되더라구요..
그리고 string을 어떻게 처리해야할까요?
그리고 역시나 exception.e 이 꼴도...c에선 당연히 구동이 안 되죠...처음 메인 레이아웃은 어떻게 정의해야하며...어떻게 해야할까요
getmeth minus/plus 함수는 C에서 구현이 안 되구요...이걸 어찌 처리하면 좋을까요?
또 처음 메인 레이아웃에서의 변수들이 정의를 안 하고 써내려간거라...c에서는 당연히 안 되지요..
try-catch 구문이 끝난 다음 private 구문에서도 앞에 선언이 필요하다고 오류가 뜨구요..
중간중간..for 구문도 선언이 필요하다고 오류가 있더라구요....c문법이랑..자바를 기반으로 한 안드로이드 프레임워크 소스 문법이 많이 다르네요...
능력자분들..........부탁드립니다.
그냥 설명만 하시는 것보다....전체적인 소스를 짜주신다음에...설명을 해주시면 감사하겠습니다..
참고로 저는 이번 학년에 c를 처음 배운거라........정말 감을 못 잡겠습니다..
마치 덧셈 뺄셈 배우고 고차방정식을 푸는 듯한 느낌입니다...
저번에 답변하신 분들 얘기도 참고하면서 이것저것 구글링도 해보며 해봤습니다만. 첩첩산중이네요...
제대로 이해가 안 되는지 계속 막힙니다..(아직 갈 길이 먼가 봅니다.........)
꼭 소스를 짜주신 다음에 설명 첨가 해주시면 감사하겠습니다.....

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
레필리아
12/06/17 12:39
수정 아이콘
C언어는 손을 땐지 너무 오래 되기도 했고, 직접 짤려니 귀찮아서 한 마디만 던지고 갑니다.
이 자바 소스를 C언어로 그대로 옮기는 것은 정말 어렵거나 불가능 하지 않을까 생각됩니다.

이 프로그램이 하는 일이 어떤 소수점 덧셈/뺄셈 식(e.g. 12345.123 - 2345.234)을 입력받아서 그 결과를 어떤 파일(자바 소스에서는 Log객체)에 출력하는 것 이네요.
char* to float (혹은 char* to double) 하고, strtok, scanf, 파일 I/O 정도만 알고 계신다면 자바 코드를 C로 옮기는 것 보다 직접 새로 짜는게 빠르실 것 같습니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
137711 알톤은 오프라인 매장이 없나요? [6] 개떵이다2377 12/06/17 2377
137709 심즈 게임 질문입니다. [3] 베컴1337 12/06/17 1337
137708 컴퓨터 견적 질문입니다.. + 헤드셋 추천 .. [6] 텔레파시1779 12/06/17 1779
137705 짧은 시간 투자해서 체력과 지구력을 기르고 싶습니다 [3] 그럼그렇지1572 12/06/17 1572
137704 [디아3] 악사용 화살통 감정 부탁드립니다. [9] couplebada1697 12/06/17 1697
137702 구로디지털단지 vs 가산디지털단지 [6] Magicshield2423 12/06/17 2423
137701 소개팅해달라고 조르는 선배, 불편할정도로 자꾸 만나자는 여자사람동생 이 사람들 어떻게 해야할까요.. [10] 소녀시대3756 12/06/17 3756
137700 [디아]수도사와 악사, 불포니 질문입니다. [3] Tratoss1495 12/06/17 1495
137699 이런 신발에는 어떤 바지가 어울릴까요? [5] 창이1950 12/06/17 1950
137698 저희 집 개님이 사시나무떨듯 떠네요.. [1] vagabonder1486 12/06/17 1486
137697 마우스 추천 좀 부탁드립니다 (끈적임 x) [6] 천사의속삭임1693 12/06/17 1693
137696 예전 락타운 같은 사이트가 있나요? [2] 고등어3마리3793 12/06/17 3793
137695 c언어 소스코딩 질문입니다... [1] Picture-of1590 12/06/17 1590
137694 [디아3] 생명의 구슬 치유량도 가격에 충분히 반영되나요? [6] dfsefsfdfefs2183 12/06/17 2183
137693 아이폰이 갤럭시 시리즈보다 좋은 점은 어떤것들이 있나요? [5] Go_TheMarine1909 12/06/17 1909
137691 노래 제목좀 알려주세요~ [3] 더이상은무리4565 12/06/17 4565
137690 재고자산 vs 유형자산? [4] 진리는나의빛2062 12/06/17 2062
137689 요즘 스타 프로리그 재밌는가요.. [7] 아레스1821 12/06/17 1821
137688 [디아3] 마법사 템 어떻게 맞춰야 하는지 궁금합니다 [3] 라울1534 12/06/17 1534
137687 회식용 노래 어떤게 있을까요? [14] 카네다 갱신했다3650 12/06/17 3650
137686 길냥이 새끼가 집 앞에 떨어(?)졌습니다.. [1] 아스라이 사라진1567 12/06/17 1567
137685 워드패드 구버전을 쓸 수 있을까요? Siul_s1614 12/06/17 1614
137684 천만원 운용방법! [3] Unchain2171 12/06/17 2171
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로