이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
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은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
|