###前提・実現したいこと
16進数または10進数の2つの整数の和を16進数と10進数で求めるコードを書いています。
2つの整数は共に16進数または10進数とします。16進数は「0x」を頭につけて、「0xabcd」のように入力します。Javaでは以下のように実装することができたのですが、C言語でインライン引数を用いたコードに書き直す際に以下の3点で困っています。
###発生している問題・エラーメッセージ
①コマンドライン引数で2つの整数の値と演算子を取得する方法が分からない
c
1 //aの値、演算子、bの値を取得する 2 int a; 3 a = strtol(argv[1], NULL, 0); 4 5 //ここが分からない 6 char operator; 7 operator = strol(0, ,0); 8 int b; 9 b = strtol(0, NULL, argv[1]);
②JavaのコードにおけるInteger.decode部分をC言語でどのように実装したら良いか分からない。
java
1 int a_dec = Integer.decode(a); 2 int b_dec = Integer.decode(b);
③switch文中の10進数で出た計算結果を16進数に変換する部分を C言語でどのように実装したら良いか分からない。
case "+": int result_dec = a_dec + b_dec; //10進数から16進数に変更 char result_hex = Integer.toHexString(result_dec); printf(" %s¥n", result_hex); printf("(" ); printf(" %d", result_dec); printf(")"); break;
###該当のソースコード
c
1#include<stdio.h> 2#include<stdlib.h> 3 4 5int main(int argc, char** argv) 6{ 7 //aの値、演算子、bの値を取得する 8 int a; 9 a = strtol(argv[1], NULL, 0); 10 11 char operator; 12 operator = strol(0, ,0) 13 14 int b; 15 b = strtol(0, NULL, argv[1]); 16 17 //計算式を表示 18 printf(a + operator + b); 19 20 //ここでInteger.decodeをしたい 21 22 switch(operator){ 23 case "+": 24 int result_dec = a_dec + b_dec; 25 // 26 char result_hex = Integer.toHexString(result_dec); 27 printf(" %s¥n", result_hex); 28 printf("(" ); 29 printf(" %d", result_dec); 30 printf(")"); 31 break; 32 33 case "-": 34 int result_dec = a_dec - b_dec; 35 // 36 char result_hex = Integer.toHexString(result_dec); 37 printf(" %s¥n", result_hex); 38 printf("(" ); 39 printf(" %d", result_dec); 40 printf(")"); 41 break; 42 } 43 44 45 46}
###試したこと
Javaでの実装
java
1import java.util.Scanner; 2 3public class trial_java { 4 5 public static void main(String[] args) { 6 Scanner stdIn = new Scanner(System.in); 7 System.out.println("2つの整数の和か差を求めます。"); 8 9 System.out.println("aの値:"); String a = stdIn.next(); 10 System.out.println("演算子"); String operator = stdIn.next(); 11 System.out.println("bの値:"); String b = stdIn.next(); 12 System.out.println(a + "+" + b); 13 14 int a_dec = Integer.decode(a); 15 int b_dec = Integer.decode(b); 16 17 switch(operator){ 18 case "+": 19 int result_dec = a_dec + b_dec; 20 String result_hex = Integer.toHexString(result_dec); 21 System.out.print(result_hex); 22 System.out.print("(" + result_dec + ")"); 23 break; 24 25 case "-": 26 result_dec = a_dec - b_dec; 27 result_hex = Integer.toHexString(result_dec); 28 System.out.print(result_hex); 29 System.out.print("(" + result_dec + ")"); 30 break; 31 } 32 33 } 34 35}
実行結果
2つの整数の和か差を求めます。 aの値: 0xc 演算子 - bの値: 0xb 0xc+0xb 1(1)
###補足情報(言語/FW/ツール等のバージョンなど)
Eclipse Java EE IDE for Web Developers.
Version: Neon.3 Release (4.6.3)
Build id: 20170314-1500
ターミナル バージョン2.8 (400)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/19 02:46