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

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

 詳しくはこちら



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

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


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

No.20141

プログラム作成
投稿者---RYU(2005/02/23 19:43:47)


〃り返し文を用いて文字列を表示するプログラム作成。
入力された文字を1行に1文字ずつ”−”の文字を前後につけて、表示するプログラム。

実行結果
moji ==> ABCDE
-A-
-B-
-C-
-D-
-E-


#include<stdio.h>
void main(void)
{
char w[50]
int k;

printf("moji==>");
scanf( );
??????
while( ){
printf( );
?????????
}
}




配列変数に設定されたデータの平均を表示するプログラム。
ただし、データは整数のみで、データの終わりは負数により判定するものとする。

#include<stdio.h>
void main (void)
{
double a[]={1,3,5,7,9,2,-9999};
double *p;
double s,av;
int n;
??????????
??????????
??????????
while( ){
??????????
??????????
??????????
}
av=s/n;
printf(" averge=%10.5 \n",av);
}


( )と???????の所に適切な語句を入れるのですが、困ってます。分かる方いますか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:プログラム作成 20142 REE 2005/02/23 19:45:09
<子記事> Re:プログラム作成 20146 επιστημη 2005/02/24 04:17:11
<子記事> Re:プログラム作成 20147 イチカワ 2005/02/24 09:47:51
<子記事> Re:プログラム作成 20149 RiSK 2005/02/24 10:34:07
<子記事> Re:プログラム作成 20150 Masuo 2005/02/24 11:07:59


No.20142

Re:プログラム作成
投稿者---REE(2005/02/23 19:45:09)


※学校の課題の丸投げ禁止!



この投稿にコメントする

削除パスワード

No.20146

Re:プログラム作成
投稿者---επιστημη(2005/02/24 04:17:11)


>( )と???????の所に適切な語句を入れるのですが、困ってます。分かる方いますか?

何に困っているのかわからないので答えようがありません。



この投稿にコメントする

削除パスワード

No.20147

Re:プログラム作成
投稿者---イチカワ(2005/02/24 09:47:51)


>( )と???????の所に適切な語句を入れるのですが、困ってます。分かる方いますか?
自分で、ちゃんと考えましたか?1時間以上考えたり調べたりしましたか?この投稿内容からは、そういう考えた過程というか、そういうのが書かれていないと答える側もしらけるんじゃないの?
一つ目のヒントだけ言います。scanfの二つ目の引数にはアドレスを渡しなさい。
つまり、wを渡しなさい。wとか書くと配列名を表しますが、これは配列wの
アドレスでもあります。
それから、while()の()の中はどうするべきか?
配列wの中に入力した文字列の終わりはNULL文字が入っています。
()の中に「配列wがNULLでなければ真である」という条件にしなさい。
printf("-%c-\n",w[k]);が一体どういう意味か考えなさい。
k++;がどういう意味か考えなさい。
二つ目の課題は自分で考えるべきだ。
「猫でもわかるC言語入門」を買うべきだ。



この投稿にコメントする

削除パスワード

No.20149

Re:プログラム作成
投稿者---RiSK(2005/02/24 10:34:07)


>(1)繰り返し文を用いて文字列を表示するプログラム作成。
>入力された文字を1行に1文字ずつ”−”の文字を前後につけて、表示するプログラム。
#include <stdio.h>
int main(void)
{
    char s[64];
    unsinged i;
    printf("moji ==> ");
    if (scanf("%64s", s) != 1) return 1;
    for (i = 0; s[i] != '\0'; ++i) printf("-%c-\n", s[i]);
    return 0;
}

>(2)配列変数に設定されたデータの平均を表示するプログラム。
>ただし、データは整数のみで、データの終わりは負数により判定するものとする。
#include <stdio.h>
int main(void)
{
    const double a[] = {1, 3, 5, 7, 9, 2, -9999};
    double sum = 0;
    unsigned n;
    for (n = 0; a[n] >= 0; ++n) sum += a[n];
    printf("average = %10.5lf\n", sum / n);
    return 0;
}

>( )と???????の所に適切な語句を入れるのですが、困ってます。分かる方いますか?

分かりません。


この投稿にコメントする

削除パスワード

No.20187

Re:プログラム作成
投稿者---かずま(2005/02/28 21:39:03)


>    char s[64];
>    unsinged i;
>    printf("moji ==> ");
>    if (scanf("%64s", s) != 1) return 1;

unsinged が間違っているのは、コンパイルエラーで分かりますが、"%64s" で
s[64] に '\0' を書き込んでしまうことがあるのを、コンパイラに見つけて
もらうのは難しいでしょう。


>    const double a[] = {1, 3, 5, 7, 9, 2, -9999};

この const にはほとんど意味がありません。static と書くつもりだったので
しょうか?


>    printf("average = %10.5lf\n", sum / n);

最新の C の規格では "%lf" も認められるようになりましたが、昔から
printf で double を表示する書式は "%f" と決まっています。



この投稿にコメントする

削除パスワード

No.20189

Re:プログラム作成
投稿者---RiSK(2005/02/28 22:20:36)


かずまさん,いつもありがとうございます。

>unsinged が間違っているのは、コンパイルエラーで分かりますが、

あらー? コンパイル通したはずなのになー。
ご指摘に感謝です。unsigned です。

>"%64s" で
>s[64] に '\0' を書き込んでしまうことがあるのを、コンパイラに見つけて
>もらうのは難しいでしょう。

あらー。
この変換は、文字列の終わりを示すナル文字を自動的に付加する。
だそうで…。
最大フィールド幅を指定しているのにそれを越えるなんて...
知りませんでした。今までずっと危険なコード書いていました。
おそろしや…


>この const にはほとんど意味がありません。static と書くつもりだったので
>しょうか?

変更されないので const にしました。
static にすると何かいいことがあるのでしょうか?
分からないです。


>最新の C の規格では "%lf" も認められるようになりましたが、昔から
>printf で double を表示する書式は "%f" と決まっています。

うーん。C99 で認められたことを分かっていて %lf にしたのですが,
やっぱり %f がいいですか。今後そうします。


この投稿にコメントする

削除パスワード

No.20215

Re:プログラム作成
投稿者---かずま(2005/03/03 02:04:52)


> 変更されないので const にしました。
> static にすると何かいいことがあるのでしょうか?
> 分からないです。
double a[] = {1, 3, 5, 7, 9, 2, -9999}; において、static をつけないと
a は自動変数になりますから、初期化を実行するコードが生成され、わずかながら
実行時間とメモリーの使用量が増えます。

今の場合、main だからほとんど問題になりませんが、何度も呼び出されたり、
再帰呼び出しされる関数ではちょっと問題になるかもしれません。



この投稿にコメントする

削除パスワード

No.20150

Re:プログラム作成
投稿者---Masuo(2005/02/24 11:07:59)


>配列変数に設定されたデータの平均を表示するプログラム。
>ただし、データは整数のみで、データの終わりは負数により判定するものとする。

#include<stdio.h>

void main( void )
{
double a[] = { 1, 3, 5, 7, 9, 2, -9999 };
double* p;
double s, av;
int n;


n = 0;
s = 0.0;
while( a[ n ] >= 0 ){
s += a[ n++ ];
}
av = s / (double)n;


printf( "averge=%10.5f\n", av );
}


この投稿にコメントする

削除パスワード

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