←検索窓の楽しみ方
  ショッピングモール  掲示板ランキング


【掲示板ご利用上の注意】

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

 詳しくはこちら


 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


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

No.4642

ドリル&ゼミナ−ルC言語 演習120
投稿者---panzer(2005/09/24 20:26:59)


ドリル&ゼミナ−ルC言語 演習問題120の中の、
27行目から30行目

for(i = 0; i < BIT; i++){
temp = *(b+i);
for(j = MSB; j != 0; j >>= 1)
printf((temp & j) ? "■" : "□");

とあるのですが、実行結果を見ると、僕には■と□が逆に思えるのです。
何かとんでもない勘違いをしているような気にもなるのですが、
コンパイルして確かめようにもMacOs 8.6なのでそれもできません。
どなたか解説していただけないでしょうか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ドリル&ゼミナ−ルC言語 演習120 4643 panzer 2005/09/24 20:36:57
<子記事> Re:ドリル&ゼミナ−ルC言語 演習120 4644 ともじ 2005/09/24 23:50:00


No.4643

Re:ドリル&ゼミナ−ルC言語 演習120
投稿者---panzer(2005/09/24 20:36:57)


なぜかコ−ド部分の字下げができず、読みづらくなって
申し訳ありません。




この投稿にコメントする

削除パスワード

No.4644

Re:ドリル&ゼミナ−ルC言語 演習120
投稿者---ともじ(2005/09/24 23:50:00)


panzerさん、ドリル&ゼミナールC言語をお使いくださりありがとうございます。

> printf((temp & j) ? "■" : "□");
>
>とあるのですが、実行結果を見ると、僕には■と□が逆に思えるのです。

このページの実行結果はwindowsのコマンドプロンプトの実行画面なので、
白と黒が反転して表示されます。ですから、黒い四角は白い四角で、白抜き
の四角は黒抜きの四角で表示されています。ご了解ください。

> コンパイルして確かめようにもMacOs 8.6なのでそれもできません。

コンパイル環境が無いのですか?Macでもフリーのコンパイラはありますね。
ダウンロードしてみてはいかがでしょう。
以下はもぐりんさんご紹介のページですが、参考になるのではないでしょうか。
http://www.geocities.co.jp/SiliconValley-PaloAlto/4654/mpws/tool_of_mpw1.html




この投稿にコメントする

削除パスワード

No.4649

Re:ドリル&ゼミナ−ルC言語 演習120
投稿者---panzer(2005/09/26 19:26:56)


ともじさん、(ひょっとして"ドリル&ゼミナ−ル"の筆者の方ですか?)
有り難うございました。
反転表示されるとは思いませんでした。(これって、何か訳があるんでしょうか?)
おまけにMPWの情報まで教えて頂きまして、重ねて有り難うございます。
OSX以外のMacOsではあり得ないものなのかと諦めていました。


この投稿にコメントする

削除パスワード

No.4650

Re:ドリル&ゼミナ−ルC言語 演習120
投稿者---REE(2005/09/26 20:20:55)


>反転表示されるとは思いませんでした。(これって、何か訳があるんでしょうか?)

Web上では、白地に黒で書いてあるのに対し、
コマンドプロンプトでは、黒地に白で書いてあるだけです。
この記号にかかわらず、すべての文字がそうなっています。
コマンドプロンプトでも設定を変更して、白地に黒とすることもできます。



この投稿にコメントする

削除パスワード

No.4673

Re:ドリル&ゼミナ−ルC言語 演習120
投稿者---panzer(2005/10/02 14:23:40)


>コマンドプロンプトでは、黒地に白で書いてあるだけです。

そう言う訳だったのですね。
別な本のコマンドプロンプトのペ−ジを見たら、確かに黒字に白で書いてあります。以前見たときに、不思議に感じていたのを思い出しました。
有り難うございました。

ところで、再びドリル&ゼミナ−ル演習120について、
もう1箇所質問。

43行目 temp <<= 1;
44行目 temp |=(*(b+j)>>i & LSB);

順番が逆に思えるのですが・・・




この投稿にコメントする

削除パスワード

No.4674

Re:ドリル&ゼミナ−ルC言語 演習120
投稿者---shu(2005/10/02 15:21:08)


>ところで、再びドリル&ゼミナ−ル演習120について、
>もう1箇所質問。
>
>43行目 temp <<= 1;
>44行目 temp |=(*(b+j)>>i & LSB);
>
>順番が逆に思えるのですが・・・

代入する前にビットシフトしてずらすのか、
代入した後に次のことを考えてずらしておくのかの違いだと思いますが、
後者の場合だと、ループを抜けた場合に余慶にずれませんか?

@おまけ
panzerさんの書き込みに触発されて、こんなプログラムを作ってみました。

//
//  ビットを表示するプログラム
//

//
#include <stdio.h>

//
#define N   8
#define MSB 0x80
#define LSB 0x01

//
void puts_bits( const unsigned char bit[] );
void put_variety_bit( unsigned char bit[] );

//
//
int main( void )
{
    unsigned char bit[N] = {
        0x00, 0x30, 0x30, 0x30,
        0x30, 0x3c, 0x3c, 0x00
    };
    
    //
    puts_bits( bit ), putchar( '\n' );
    
    //
    put_variety_bit( bit ), putchar( '\n' );
    
    return 0;
}

//
static void put_bit( const unsigned char bit );
void puts_bits( const unsigned char bit[] )
{
    int i;
    
    for (i = 0; i < N; i++)
        put_bit( bit[i] ), putchar( '\n' );
}
static void put_bit( const unsigned char bit )
{
    int i;
    
    for (i = 0; i < N; i++)
        putchar( (bit & MSB >> i) ? '+' : '-' );
}

//
void put_variety_bit( unsigned char bit[] )
{
    int i, j;
    
    //
    for (i = 0; i < N; i++)
    {
        //  そのまま
        for (j = 0; j < N; j++)
            putchar( (bit[i] & MSB >> j) ? '+' : '-' );
            
        putchar( ' ' );
        
        //  右90度回転
        for (j = 0; j < N; j++)
            putchar( (bit[j] & LSB << i) ? '+' : '-' );
        
        putchar( ' ' );
        
        //  左90度回転
        for (j = 0; j < N; j++)
            putchar( (bit[N - i - 1] & LSB << j) ? '+' : '-' );
        
        putchar( ' ' );
        
        //  180度回転
        for (j = 0; j < N; j++)
            putchar( (bit[N - j - 1] & MSB >> i) ? '+' : '-' );
        
        putchar( ' ' );
        
        //  上下反転
        for (j = 0; j < N; j++)
            putchar( (bit[N - i - 1] & MSB >> j) ? '+' : '-' );
            
        putchar( ' ' );
        
        //  左右反転
        for (j = 0; j < N; j++)
            putchar( (bit[i] & LSB << j) ? '+' : '-' );
        
        putchar( ' ' );
        
        //  ビット反転
        for (j = 0; j < N; j++)
            putchar( !(bit[i] & MSB >> j) ? '+' : '-' );
        
        putchar( '\n' );
    }
}



この投稿にコメントする

削除パスワード

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




掲示板提供:Real Integrity