掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.26691

進数変換
投稿者---あっちゃん(2006/04/23 17:04:24)


明日までの宿題があるんですけど誰か教えていただけないでしょうか??
C言語の進数変換なんですけど2進数から10進数、10進数から2進数、10進数から16進数、16進数から10進数、2進数から16進数、16進数から2進数変換。この中からどれでもいいんで教えて下さい!できれば2つ以上はお願いしたいです!結構切羽詰まってるんでよろしくお願いします!


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:進数変換 26692 επιστημη 2006/04/23 17:14:46
<子記事> Re:進数変換 26696 RiSK 2006/04/23 22:14:21
<子記事> Re:進数変換 26718 かずま 2006/04/30 23:22:24


No.26692

Re:進数変換
投稿者---επιστημη(2006/04/23 17:14:46)


>明日までの宿題があるんですけど誰か教えていただけないでしょうか??

どこが/なにがわからないのでしょうか?



この投稿にコメントする

削除パスワード

No.26693

Re:進数変換
投稿者---あっちゃん(2006/04/23 17:28:38)


>>明日までの宿題があるんですけど誰か教えていただけないでしょうか??
>
>どこが/なにがわからないのでしょうか?

>まずなにを使えばいいですかね?繰り返しでできますか??


この投稿にコメントする

削除パスワード

No.26694

Re:進数変換
投稿者---επιστημη(2006/04/23 17:52:43)


>>どこが/なにがわからないのでしょうか?
>>まずなにを使えばいいですかね?繰り返しでできますか??

考え方が逆。
「なにをしたいか(what)」が明確でないとと「どうやって実現するか(how)」(なにを使うか)は決まらない。

僕にはあなたのwhat、つまり「なにがわからないか」がわからない



この投稿にコメントする

削除パスワード

No.26698

Re:進数変換
投稿者---RingBuffer(2006/04/24 15:31:51)


10進→16進
16進→10進
の2つでいいということですから、
printfの構文がわからないということでしょう。


この投稿にコメントする

削除パスワード

No.26696

Re:進数変換
投稿者---RiSK(2006/04/23 22:14:21)


苦しんで覚えるC言語掲示板


この投稿にコメントする

削除パスワード

No.26718

Re:進数変換
投稿者---かずま(2006/04/30 23:22:24)


数字列と基数(2〜36)を指定して、unsigned long に変換する strtoul という
関数があるので、逆に unsigned long を、指定した基数の数字列に変換する
ultostr という関数を作ってみました。
#include <stdio.h> 
#include <stdlib.h> 
 
int ultostr(char *str, unsigned long val, int base)
{
    static char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz";
    char buf[64], *p = buf;

    if (base == 0) base = 10;
    if (base < 2 || base > 36) retursuun 0; // error
    do *p++ = digits[val % base]; while (val /= base);
    do *str++ = *--p; while (p != buf);
    *str = '\0';
    return 1;
}

int main(void)
{
    char buf[256], str[256], *p;  unsigned long val;  int base1, base2;

    for (;;) {
        printf("number, base_from, base_to? ");
        if (!fgets(buf, sizeof buf, stdin)) break;
        if (sscanf(buf, "%s%d%d", str, &base1, &base2) != 3) break;
        val = strtoul(str, &p, base1);
        if (p != str && !*p && ultostr(buf, val, base2)) puts(buf);
    }
    return 0;
}



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧