現在C言語を使って基数変換プログラムを作ろうとしています。
しかし、ヘッダファイルとポインタを使って作れという課題がでており、大変苦戦しております。
ヘッダファイルを使ってプログラムを組んだ経験が無いので、全くと言っていいほど分かりません。
c、h共に完成系のコードを教えていただけると幸いです。
甘えだとは思いますが、どうしても分かりません。よろしくお願いいたします。
10進数で数値を入力→変換したい基数を選択→変換後の数値を出力
といった流れで、簡単で良いのでどうかお願いいたします。
基数変換プログラム
Re: 基数変換プログラム
ヘッダファイルを使うやり方の例を示します。
conv.h conv.c
main.c
実行結果
上記のプログラムは、次の点で質問にある完成系(形?)のコードではありません。
・ポインタを使っているようには見えない。
・変換したい基数を選択するのではなく、入力させている。
・基数の範囲が勝手に 36まで拡張されている。
・基数ごとに関数を呼び出すようになっていない。
・名前に英数字以外の文字を使っている。(VC++ ではコンパイルできますが)
・main の中でループしている。
ポインタを使うためには、
int i = 0, j = 0;
を
char *p = バッファ, *q = 結果;
として、*p++ や *--p に書き換えればよいでしょう。
基数の選択や、基数ごとに関数を呼び出すというのが
どういうことなのか、よくわかりません。
課題の原文はどうなっているんですか?
コンパイラは何を使っていますか?
フォーラムルールに従って質問してください。
conv.h conv.c
#include "conv.h"
void 基数変換(unsigned 数, unsigned 基数, char 結果[])
{
static const char 数字[] = "0123456789abcdefghijklmnopqrstuvwxyz";
char バッファ[33];
int i = 0, j = 0;
do バッファ[i++] = 数字[数 % 基数]; while (数 /= 基数);
do 結果[j++] = バッファ[--i]; while (i != 0);
結果[j] = '\0';
}
#include <stdio.h>
#include "conv.h"
int main(void)
{
char 変換結果[33];
unsigned 数, 基数;
while (printf(">> "), scanf("%u%u", &数, &基数) == 2
&& 基数 >= 2 && 基数 <= 36) {
基数変換(数, 基数, 変換結果);
puts(変換結果);
}
}
>> 1000 2
1111101000
>> 1000 8
1750
>> 1000 10
1000
>> 1000 16
3e8
>> 1000 24
1hg
>> 1000 36
rs
>> .
・ポインタを使っているようには見えない。
・変換したい基数を選択するのではなく、入力させている。
・基数の範囲が勝手に 36まで拡張されている。
・基数ごとに関数を呼び出すようになっていない。
・名前に英数字以外の文字を使っている。(VC++ ではコンパイルできますが)
・main の中でループしている。
ポインタを使うためには、
int i = 0, j = 0;
を
char *p = バッファ, *q = 結果;
として、*p++ や *--p に書き換えればよいでしょう。
基数の選択や、基数ごとに関数を呼び出すというのが
どういうことなのか、よくわかりません。
課題の原文はどうなっているんですか?
コンパイラは何を使っていますか?
フォーラムルールに従って質問してください。