掲示板利用宣言

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

 私は

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

掲示板2

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

No.25508

助けてください
投稿者---io(2006/01/20 14:15:03)


こんにちは、どなたかとこに問題があるかよろしければ、チェックお願いします。
getchar関数を使用し、コマンドラインからの数字を2つ入力し、
四則演算、剰余算、及び論理和、論理積を求め、それぞれ出力しなさい。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char abc(void);
int main(void)
{
    char b[10];
    b[10]=abc();
    return(0);
}
char abc(void)
{
    char a[10];
    int i,j=0;
    int c[10]={0};
    printf("数字を入力してください。");
    for(i=1; i<3; i++){
       while(1){
            a[j]=getchar();
            if(a[j]=='\n'){
                a[j]='0';break;
              }
           j++;
        }
          c[10]=atoi(a);
          memset(a, 0, sizeof(a));
          j=0;
    }
    printf("それらの和%d差%d積%d商%d乗余%d論理和%d論理積%dです。\n",c[0]+c[1],c[0]-c[1],
                                               c[0]*c[1],c[0]/c[1],c[0]%c[1],c[0]&c[1],c[0]|c[1]);
    return(0);
}
        



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:助けてください 25510 kz3 2006/01/20 15:16:59
<子記事> Re:助けてください 25511 nop 2006/01/20 15:47:40


No.25510

Re:助けてください
投稿者---kz3(2006/01/20 15:16:59)


> こんにちは、どなたかとこに問題があるかよろしければ、チェックお願いします。

よろしくない人のレスでごめんなさい。

全体的にみて勉強不足です。
変数の宣言から実際に変数に代入するところから勉強しなおしたほうがいい。
特に配列変数。

基本中の基本の変数が理解できていないんじゃおしまいです。

他にはループ処理なども。

あと、人にチェックしてもらってばっかりだと
自分でどこをどうチェックすればいいのか、
といったデバッグ力が養われませんよ。

自分はどういうところでミスをするのか、
自分の弱点を知ることも勉強のひとつ。

# 初心者ってのは教えてもらえて当然だと思っているのかの。




この投稿にコメントする

削除パスワード

No.25541

Re:助けてください
投稿者---επιστημη(2006/01/21 03:40:42)


># 初心者ってのは教えてもらえて当然だと思っているのかの。

教えてもらって(半ば)当然。
教わり方がなってないってことでしょう。



この投稿にコメントする

削除パスワード

No.25545

Re:助けてください
投稿者---kz3(2006/01/21 09:18:11)


> 教わり方がなってないってことでしょう。

それも確かです。




この投稿にコメントする

削除パスワード

No.25511

Re:助けてください
投稿者---nop(2006/01/20 15:47:40)


>こんにちは、どなたかとこに問題があるかよろしければ、チェックお願いします。

以下の様な問題があります。

1.題名が具体的ではない
2.課題の丸投げにしか見えない
3.環境(OSやコンパイラなど)や症状を具体的に書かない
4.自分でデバッグした結果を書かない
5.自分で考えている様に見えない


この投稿にコメントする

削除パスワード

No.25623

Re:助けてください
投稿者---io(2006/01/22 14:43:35)


>>こんにちは、どなたかとこに問題があるかよろしければ、チェックお願いします。
>
>以下の様な問題があります。
>
>1.題名が具体的ではない
>2.課題の丸投げにしか見えない
>3.環境(OSやコンパイラなど)や症状を具体的に書かない
>4.自分でデバッグした結果を書かない
>5.自分で考えている様に見えない


<pre>#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;

char abc(char a[10]);
int main(void)
{
char b[10];
abc(b);
return(0);
}
char abc(char a[10])
{
int i,j=0;
int c[10];
printf(&quot;数字を入力してください。&quot;);
for(i=1; i&lt;3; i++){
while(1){
a[j]=getchar();
if(a[j]=='\n'){
a[j]='0';break;
}
j++;
}
c[j]=atoi(a);
j=0;
}


printf(&quot;それらの和%d差%d積%d商%d乗余%d論理和%d論理積%dです。\n&quot;,c[0]+c[1],c[0]-c[1],
c[0]*c[1],c[0]/c[1],c[0]%c[1],c[0]&amp;c[1],c[0]|c[1]);
return(0);
}


getcharで二つの数字を取ってそれらの和などを求める問題なんですが、読み取った数字をc[j]=atoi(a);こう
配列へ格納する方法正しいでしょうか。よろしくお願いします。



この投稿にコメントする

削除パスワード

No.25624

Re:助けてください
投稿者---iijima(2006/01/22 16:10:34)


c[j]=atoi(a);

文法としては正しい。
しかし、その処理が意図通りの結果をもたらすかどうかは、
意図の方が分からないのでなんとも言えません。

# 多分、意図通りではないだろうという漠然とした予想はしています。
# それから、nopさんの指摘には全然耳を貸す気がないみたいですね。

>1.題名が具体的ではない
>2.課題の丸投げにしか見えない
>3.環境(OSやコンパイラなど)や症状を具体的に書かない
>4.自分でデバッグした結果を書かない
>5.自分で考えている様に見えない



この投稿にコメントする

削除パスワード

No.25625

Re:助けてください
投稿者---io(2006/01/22 16:19:02)


>c[j]=atoi(a);
>
>文法としては正しい。
>しかし、その処理が意図通りの結果をもたらすかどうかは、
>意図の方が分からないのでなんとも言えません。
>
># 多分、意図通りではないだろうという漠然とした予想はしています。
># それから、nopさんの指摘には全然耳を貸す気がないみたいですね。


すみません、自分なりにはまじめにやるつもりでございますがどこが足りないでしょうか、コンパイルはLSI c-86です。そしてプログラムに関してははじめたばかりですし、パソコンに関しても詳しくは知りません、だから皆さんには当たり前かも知れないですが僕はその意味も知らない時も多いのでご了承してください。
>
>>1.題名が具体的ではない
>>2.課題の丸投げにしか見えない
>>3.環境(OSやコンパイラなど)や症状を具体的に書かない
>>4.自分でデバッグした結果を書かない
>>5.自分で考えている様に見えない




この投稿にコメントする

削除パスワード

No.25626

Re:助けてください
投稿者---io(2006/01/22 16:25:20)


>c[j]=atoi(a);
>
>文法としては正しい。
>しかし、その処理が意図通りの結果をもたらすかどうかは、
>意図の方が分からないのでなんとも言えません。
>
># 多分、意図通りではないだろうという漠然とした予想はしています。
># それから、nopさんの指摘には全然耳を貸す気がないみたいですね。
>
>>1.題名が具体的ではない
>>2.課題の丸投げにしか見えない
>>3.環境(OSやコンパイラなど)や症状を具体的に書かない
>>4.自分でデバッグした結果を書かない
>>5.自分で考えている様に見えない

c[j]=atoi(a);
こうして変数を配列に代入してそれから和とかを計算しようと思ってるんですが、自分もちょっとこの文(c[j]=atoi(a);)だけでは足りない気もしなくはないですがご指導お願いします。



この投稿にコメントする

削除パスワード

No.25629

Re:助けてください
投稿者---KING・王(2006/01/22 16:41:12)


>c[j]=atoi(a);
>こうして変数を配列に代入してそれから和とかを計算しようと思ってるんですが、自分もちょっとこの文(c[j]=atoi(a);)だけでは足りない気もしなくはないですがご指導お願いします。

まず、自分で実行して、あなたの意図どおりか、まはた、意図とどのように異なるのかを試してみてください。





この投稿にコメントする

削除パスワード

No.25630

Re:助けてください
投稿者---io(2006/01/22 16:46:09)


>>c[j]=atoi(a);
>>こうして変数を配列に代入してそれから和とかを計算しようと思ってるんですが、自分もちょっとこの文(c[j]=atoi(a);)だけでは足りない気もしなくはないですがご指導お願いします。
>
>まず、自分で実行して、あなたの意図どおりか、まはた、意図とどのように異なるのかを試してみてください。
>
>意図通りいかないです。最初入力した数字が表示しないです。




この投稿にコメントする

削除パスワード

No.25633

Re:助けてください
投稿者---KING・王(2006/01/22 17:05:55)


デバッグというものを覚えましょう。

ソースデバッガが使えると、ステップ実行して、1行ずつどの順番でプログラムが実行され、
その都度、どの変数の値が、どのような値に変更されるかなどを確認するのがベストです。
LSI c-86に関しては、よく知らないので、ソースデバッガによるデバッグができないかもしれませんが、
そのような場合は、printf()を各行間に用いて、画面なり、ファイルなりにどのような順に実行されたか、
また、各変数の値がどのようになったかなどを一度調べてみてください。

例)
printf( "STEP 001:j=%d, c[j]=%d\n, a=%s\n", j, c[j], a );
c[j]=atoi(a);
printf( "STEP 002:j=%d, c[j]=%d\n, a=%s\n", j, c[j], a );



この投稿にコメントする

削除パスワード

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