ページ 11

また復習しててわからないことがあったので・・・

Posted: 2010年1月05日(火) 15:41
by tovira
大学でもらったプリントの復習をやっています。またわからないことが二つあるので教えてもらえるとうれしいです。
一つ目ですが、lower_dec()を定義してそれぞれの桁の合計をもとめるというもので、自分なりにやってみた結果、エラーは出なかったのですが、警告が3つでました。プログラムは
#include <stdio.h>
void lower_dec(int n)
{

n = n%10;

}

int main(void)
{
int z,n,ans;
printf("正の値を入力してください。");
scanf("%d",&n);
while(1){
z = n;
lower_dec(n);
ans = n;
n=(double)z/10;
n=(int)n;
}


printf("それぞれの桁の値の合計は%dです。\n",ans);
return 0;
}
です。これが自分で書いたものですが、警告が出てしまいます。警告の内容は
5: 'n' に代入した値は使われていない(関数 lower_dec)
23: 実行されないコード(関数 main )
17: 'ans' に代入した値は使われていない(関数 main )
の三つです。教えてもらえるとうれしいです。
もう一つは

#include <stdio.h>
int total_mat(int mat[/url])
{
int i;
int sum = 0;

for(i=0;i<6;i++)
sum += mat;

return( sum );
}
int main(void)
{
int va[6] = {0};
int j;
double ans ;
for(j=0;j<6;j++){
printf("整数%d:",j+1);
scanf("%d",&va[j]);
}

ans=(double)total_mat(va)/6;

printf("それらの平均値は%fです。\n",ans);

return 0;
}
平均を求めるプログラムなのですが、私はint total_mat(int mat[/url])の部分がよくわからないのです。というのはvoid関数は良く知っています。void putschar(int n1)みたいなものです。なのでなぜvoidではなく、int total_mat(int mat[/url])なのかが不思議です。voidの場合とintの場合の使い分けがわかるように説明してもらえるとうれしいです。
以上です、お願いします。

Re:また復習しててわからないことがあったので・・・

Posted: 2010年1月05日(火) 15:46
by non
最初の警告について
>5: 'n' に代入した値は使われていない(関数 lower_dec)
関数で計算した値が、呼び出し側に反映されないから。

>23: 実行されないコード(関数 main )
whileが永久ループのため、実行されない。

>17: 'ans' に代入した値は使われていない(関数 main )
上記理由により、実行されない。

Re:また復習しててわからないことがあったので・・・

Posted: 2010年1月05日(火) 15:51
by non
2つめ
>void putschar(int n1)みたいなものです。
この関数は私は知らない。どんな関数ですか?

仮にputcharと誤入力したとしても、
int putchar(int c) のはず。

Re:また復習しててわからないことがあったので・・・

Posted: 2010年1月05日(火) 15:52
by sizuma
先ほどまずは規約を読みなさい、とかかれてましたよね。
なぜ読まないのですか?

とりあえずぺたっと。
・ ソースコードは< pre>と< /pre>のタグで囲んでください
詳しくはこの掲示板の使い方をご覧ください→ http://dixq.net/board/board.html

見たところ全然授業内容を理解していないようなので、もう一度最初の講義のプリントからの復習をした方がいいと僕は思います。 画像

Re:また復習しててわからないことがあったので・・・

Posted: 2010年1月05日(火) 15:53
by MNS
>なぜvoidではなく、int total_mat(int mat[/url])なのかが不思議です。
return文で、int型の変数を返しているからです。
詳しくは、wikipedia(http://ja.wikipedia.org/wiki/Return%E6%96%87)や、
その他C/C++入門サイトなどで学んでみてください。

Re:また復習しててわからないことがあったので・・・

Posted: 2010年1月05日(火) 16:01
by たかぎ
> 先ほどまずは規約を読みなさい、とかかれてましたよね。
> なぜ読まないのですか?

もしかすると日本語がわからないのかもしれません。
ソースコードだけでなく、文章も(誰かが書いたものの)コピペの可能性があります。
留学生も多いので、十分あり得ることです。

Re:また復習しててわからないことがあったので・・・

Posted: 2010年1月05日(火) 17:21
by さかまき
>もしかすると日本語がわからないのかもしれません。
>留学生も多いので、十分あり得ることです。

勤勉な留学生や日本かぶれした外国人のほうが余程、美しい日本語を話されます。
最近は、日本人の話す日本語が「びみょう」に「ヤバイ」感じがします。

Re:また復習しててわからないことがあったので・・・

Posted: 2010年1月05日(火) 17:28
by たかぎ
> 勤勉な留学生や日本かぶれした外国人のほうが余程、美しい日本語を話されます。

そういう人ばかりではないですよ。
留学生の言語スキルは千差万別ですので、一概にはいえません。