C言語にてゾーン10進数→パック進数、パック10進数→ゾーン10進数にする
簡単な方法ありませんか?

A 回答 (4件)

どのレベルの質問かわかりませんが、4bit単位のアクセスが出来ると簡単に移行できるので、



union zone_t{
char a;
struct hb_t {
char l:4;
char h:4;
} hb;
} a[100]; /* this is for zone */
struct pack_t {
char b:4;
} b[50]; /* this is for pack */

みたいに4bit単位に操作できるように宣言してあげると、関数の中ではbit操作しなくてもいいから楽に処理できます。

一例として、zone -> pack
i = 0;
while (a[i].hb.h == 0x3) {
b[i].b = a[i].hb.l;
i++;
};
b[i].b = a[i].hb.h;

でしょうか。
ちゃんと動作は確認していないので、ちょっと自信ないですが。
    • good
    • 0

下のものですが、もしかしたら、


struct pack_t {
char b:4;
} b[50]; /* this is for pack */
だと、50byte使ってしまったような、、、
(仕様を忘れてしまいました。)
この場合は、やはりzoneと同じようにh,lみたいに2つ定義する必要があります。

では。
    • good
    • 0

こんにちは。



C言語では、Pack/Unpackに対応した進数変換関数はありません。
ゾーンの場合であれば、EBCDICコードかJISコード化によって変わってきます。
ただ、ゾーンもパックも後ろのバイトに符号(+/-)がつきますので
規則性はありますので、自作するしかないのでは。

以下、私が作るとしたらと仮定して
1.必要なものをクラス化する。(Cであれば適せん修正)
  元の値の変数、ゾーン値変数、パック値変数、等の変数
  Base2Zone(...)関数、Base2Pack(...)、
  Zone2Pack(...)関数、Pack2Zone(...)、等の関数

関数の中は、ビット演算のあらしになりますが、それほど難しいものでは
ないと思います。
尚、大きな値を使用するようであればバイト数にも注意してください。
    • good
    • 0

C言語には自信があるのですが、ゾーンとパックって何ですか?って感じで回答出来ないので補足して欲しいな。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q顔パック☆

乾燥肌で、顔パックをしたらかなり調子がよくなりました。
(今回使ったのは友達の友達に頂いた韓国土産の顔パック)

どこの顔パックをみなさん使っていますか?
安くていいものありましたら教えて下さい。

韓国の顔パックを通販とかで購入できたりするんですかね。

SK-2の顔パックも気になったのですが、値段が高くて。。。泣
試供品とかあるのでしょうか。

宜しくお願いします。

Aベストアンサー

試供品はあるはずですよ。

余談ですが顔パックはわかりませんが、化粧品などはポイントサイトなどを利用すると購入分キャッシュバックとかありますので結構いいですよ(^^)

Qn進数を10進数に変換するプログラムがわかりません

整数n(2<=n<=16)とn進数の数字列digitsを与えると10進数に変換して表示するプログラム
関数void base2dec(int n, string digits, int &dec)を使用する

実行例 110101(2)=53
123(8)=83
7ACE(16)=31438
以下はとりあえずつくったみたプログラムです
#include<iostream>
#include<string>
using namespace std;
void base2dec(int n, string digits, int &dec)
{
int i,x=0;
for(i=0; i=digits.size()-1; i++)
{
if(n<10)
{
x=digits[i]-'0';
}
else
{
x=digits[i]-'A'+10;
}
dec=(x*n);
if(cin >> digits[i++])
{
if(n<10)
{
dec=dec+(digits[i++]-'0');
}
else
{
dec=dec+(digits[i++]-'A'+10);
}
}
}
int value = dec;
}

int main()
{
int n,value;
string digits;
cout << "何進数ですか-->";
cin >>n;
cout << "数字列を入力してください-->";
cin >>digits;;
base2dec(n,digits,value);
cout << digits << "(" << n << ")=" << value << endl;
return 0;
}

void関数の中、特に計算方法が間違っていると思うのですが、なにがいけないかわかりません。ちなみにn進数から10進数に直す方法は理解しています。

整数n(2<=n<=16)とn進数の数字列digitsを与えると10進数に変換して表示するプログラム
関数void base2dec(int n, string digits, int &dec)を使用する

実行例 110101(2)=53
123(8)=83
7ACE(16)=31438
以下はとりあえずつくったみたプログラムです
#include<iostream>
#include<string>
using namespace std;
void base2dec(int n, string digits, int &dec)
{
int i,x=0;
for(i=0; i=digits.size()-1; i++)
{
if(n<10)
{
x=digits[i]-'0';
}
else
{
...続きを読む

Aベストアンサー

★アドバイス
>for(i=0; i=digits.size()-1; i++){
 ↑
 この行がおかしいです。
 間違い⇒for(i=0; i=digits.size()-1; i++){
 正しい1⇒for(i=0; i<=digits.size()-1; i++){
 正しい2⇒for(i=0; i<digits.size(); i++){
 ※回答者 No.1 さんのアドバイス通りです。
>void関数の中、特に計算方法が間違っていると思うのですが、なにがいけないかわかりません。
 ↑
 『dec=(x*n);』ここが違う気がします。
 『dec=(dec*n+x);』とすればいいと思いますけど。
>ちなみにn進数から10進数に直す方法は理解しています。
 ↑
 理解しているのなら『dec=(dec*n+x);』となると思いますが…。

その他:
>if(cin >> digits[i++]){ … }
 ↑
 このifブロック内は必要なのか?
 どういう意味。
>int value = dec;
 ↑
 最後のこの行は意味ないね。
 『value』を参照してないし。
 戻してないし。
 そもそも dec が『参照』ですよ。
 http://next1.msi.sk.shibaura-it.ac.jp/MULTIMEDIA/CPPPUBLISH/node8.html→『ポインタと参照』
 このリンクを読みましょう。
・以上。あと16進などのA~Fは大文字専用ですね。小文字だと上手く変換できませんよ。

参考URL:http://next1.msi.sk.shibaura-it.ac.jp/MULTIMEDIA/CPPPUBLISH/node8.html

★アドバイス
>for(i=0; i=digits.size()-1; i++){
 ↑
 この行がおかしいです。
 間違い⇒for(i=0; i=digits.size()-1; i++){
 正しい1⇒for(i=0; i<=digits.size()-1; i++){
 正しい2⇒for(i=0; i<digits.size(); i++){
 ※回答者 No.1 さんのアドバイス通りです。
>void関数の中、特に計算方法が間違っていると思うのですが、なにがいけないかわかりません。
 ↑
 『dec=(x*n);』ここが違う気がします。
 『dec=(dec*n+x);』とすればいいと思いますけど。
>ちなみにn進数から10進数に直す方法...続きを読む

Q使用済み顔パック。人が使った後のとか使えますか?

1回使いきりの顔パック(シートマスク)。
人が使った後の使用済み顔パックとか、また使えますか?
母が使った後の顔パックを使う?と言ってきたので、人が使った後のとか使わない、いらないと言ったところ、キレてヒステリー起こされました。
使い捨ての顔パックとか、また使いますか...?自分が使ったあとのとかならまだしも...。

Aベストアンサー

絶対に嫌です。

顔って洗ったばかりでもない限り、菌やらダニやらがいっぱい付いてるって言いますよね?

使用済みのパックなんて、美容液は無くなってるは、お母さんの顔の菌やらダニやらがくっついているは、肌に悪いことしかなさそうですよね。

Qn進数の値を10進数の値に変換するには?

こんにちは。

C言語において、n進数の値を10進数の値に変換する方法を考えています。
例えば、2進数の101を、10進数で表すと5になります。
これを関数化し、
n_to_m(int x, unsigned n); といったプロトタイプで、
渡された整数x(n進数)を、10進数での値に変換する関数を作りたいのです。
逆に、10進数の値を、n進数の値に変換する関数も一緒に作りたいと考えています。
何かいい方法を思いついた方がいらっしゃれば、是非アドバイスを頂きたいと思います。
では、よろしくお願い致します。

Aベストアンサー

>n_to_m(int x, unsigned n); といったプロトタイプで、
>渡された整数x(n進数)を、10進数での値に変換する関数を作りたいのです。

変換後の10進数を戻り値とする必要がありそうであるのと、
n_to_mという名前では何のことやらよくわからなそうなので、
こんなプロトタイプがいいのではないかと思います。

int toDecimal(int x, unsigned int n);

1)変換結果を格納する変数を0で初期化する。
2)変換元が0でない間、2-1)~2-3)を繰り返す。
2-1)変換元を10で割った剰余がn未満ならば、変換結果に加える。
2-2)変換元を10で割った剰余がn以上ならば、変換元の数値をn進数で表現できないため、
エラーとする。エラー時の戻り値をどうするかは考えてみてください。
2-3)変換元を10で割った商を、新たな変換元とする。
3)求めた変換結果を呼び出し元へ返す。

こんなところでしょうか。

Q顔パックについて

顔パックを購入しました。顔パックのパッケージはチャック付きではないので使い捨てかと思ったのですが、パッケージ裏に「週に2、3回使うと繰り返し良いです」と書いてありました。同じ顔パックを数回使っても大丈夫ということでしょうか?

Aベストアンサー

多分 使い捨てだと思いますよ。
私も色々なの使ったことありますけど
「衛生上 1度使用したものは 繰り返し使わないで下さい」みたいな注意書きがあります。
週に2~3回っていうのは
“1回に1枚使う→捨てる” これを1週間のうちに2~3回する。つまり2~3日に1回パックすると効果が上がるという意味だと思います。
でも もしかしたらお使いのパックは繰り返し使用可能なものかもしれませんので(私は今までにそのような商品に出会ったことはありませんが)裏面の使用上の注意みたいな所をよく読んで見て下さいね。

QC言語C++言語アセンブラ言語の就職先

自分は以前Javaプログラマをやってました。

あまりに、便利なライブラリばかりで、「なんかプログラムを書いているというより、ソフトウェアの振る舞いを書いているだけだ。。」とおもってしまい、すきになれませんでした。正直、苦痛でした。

今、上記言語を勉強しているのですが、コンピュータの根本からプログラムをしている実感が沸き、とても面白いです。

でも、これらの言語を習得したところでどんなところに就職できるのかさっぱりわかりませんし、需要があるのかもしりません。いわゆる組み込み系統は就職できるんでしょうが、私としてはアルゴリズムでUNIXのプログラムをシコシコ書いているような作業がすきなのです。いってみれば、私はクラシックな人間だとおもいます。

そんな僕ですが、就職先はあるのでしょうか?よろしくお願いします。

Aベストアンサー

 勉強熱心ですね。
 実際に、kamkamkam3-san の言われている、
「なんかプログラムを書いているというより、ソフトウェアの振る舞いを書いているだけだ。。」というのは的を得ています。
 
 経験からなんですが、ソフトウェア会社では、ノウハウとしてライブラリをもっています。ちょうど、Java のクラス・ライブラリーなようなものです。ですから、それらを使って製品を効率良く製品をつくれるかが重要です。実際のソフトウェア・エンジニアは、それをうまく使って効率良くコーディングすることを要求されます。

 ソフトウェア業界は、1人で閉じた製品を開発することは、まずないです。製品=プロジェクトだとすると、最低3名~100人以上が同時進行となります。そうなると、割り当てられたノルマを効率良く行うかが評価のポイントになります。つまり、「ソフトウェアの振る舞いを書いているだけ」ということにもなります。

 コンピュータ言語は、あくまでもツール(道具)です。
 kamkamkam3-san が、今後どういった分野の仕事を希望している(興味がある)かが重要だと思います。
 その答えとして、「C言語C++言語アセンブラ言語」を勉強することで実感できると思います。ですので、ぜひ、勉強を続けてください。

 勉強熱心ですね。
 実際に、kamkamkam3-san の言われている、
「なんかプログラムを書いているというより、ソフトウェアの振る舞いを書いているだけだ。。」というのは的を得ています。
 
 経験からなんですが、ソフトウェア会社では、ノウハウとしてライブラリをもっています。ちょうど、Java のクラス・ライブラリーなようなものです。ですから、それらを使って製品を効率良く製品をつくれるかが重要です。実際のソフトウェア・エンジニアは、それをうまく使って効率良くコーディングすることを要求さ...続きを読む

Qレモンとグレープフルーツどちらが顔のパックに適切なのか教えてほしいです

レモンとグレープフルーツどちらが顔のパックに適切なのか教えてほしいです。


アボカドのパックをするのに、サブでレモンがいいかグレープフルーツがいいかを考えています。


乾燥肌で顔に負担の少ない方がいいかなと思ったりします。


よろしくお願いしますm(__)m

Aベストアンサー

どちらともダメです。
乾燥肌であるなら、なおさら。
「光毒性」で調べてね。

ちなみに、レモンとクレープフルーツ、この二つを選んだ理由が知りたいです。

QC言語 10進数→2進数

キーボードで入力された1以上の正の整数n(1~15)を2進数(4bit)で出力するプログラムを作りたいんですが、
出力例に書かれている内容、

-出力例-

正の整数:12
整数 12 を2進数表記すると下位bitより 0011 となります。

----

上記の下位bit、というのはどういう意味でしょうか?

また、この下位bitというものをどうやってプログラム上で
表記すればいいのでしょうか?
教えてください。

Aベストアンサー

bitは10進数でいうところの桁のような意味で
数値が下の桁から順に書かれているということです.
下位bitより0011 = 上位ビットより1100 = 2^3 + 2^2 = 12 です.

プログラムは参考URLを見ればすぐ作成できると思います.
上位bitからの出力になっているので,そこを変更すればできます.

参考URL:http://www.geocities.jp/KY_webid/c/049ans.html

Q顔を保湿するパックって、週に何回ぐらいがオススメですか?毎日するものですか?(冬)

顔を保湿するパックって、週に何回ぐらいがオススメですか?毎日するものですか?(冬)

Aベストアンサー

一から2万のは週2ほどがいいとも言われています。
でもルルルみたいなものは、化粧水なので、あまり決まりはありません。
本当に肌が綺麗な人はそれ相応の時間とお金を肌にかけてますね。。。

保湿しないと乾燥して、老化まっしぐらなので、やらないよりはやったほうがいいです。

QBorland C++ Builderで簡単なC言語プログラムの作成・実行

Borland C++ Builderで簡単なCのプログラムを作り実行させるにはどうしたらよいですか?
DOS窓上でコンパイルするのではなく、Borland C++ Builderのメニューから行いたいのです。
一応、「ファイル→新規作成→その他→Cファイル」でCのファイルは作成できるのですが、このファイルを「プロジェクト→ユニットのコンパイル」でコンパイルすることができません。
Formオブジェクト(?)を作成しておくとコンパイルできます。
Formは特に必要ないので、FormなしでCのファイルだけをコンパイルしたいのです。

DOS窓でのコンパイル・実行はできます。

事情があってBorland C++ Builderを使わなくてはなりませんので、他のIDEはこの際全く解決になりません。

よろしくお願いします。

Aベストアンサー

プロジェクトを[コンソールアプリケーション]で作成して置く必要があります。

TurboC++での例。
画面は多少違いますがC++Builderでも同じです。
http://www.asahi-net.or.jp/~qb3k-kwsk/rpg/program/tool/tcpp/tcpp.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング