掲示板ランキング  プラスター(肩こり・腰痛・筋肉痛の塗り薬)


掲示板利用宣言

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

 私は

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

掲示板1

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

No.7218

配列がわかりません。
投稿者---初心者(2007/03/13 14:11:29)


C言語の問題で、実数配列scoreの中で整数値3で割り切れる値と
その数を調べるプログラムを作っています。
割り切れる値を入れておく配列をdata[10]、その数を入れる配列
をnumber[10]と定義し表示させるのですが、3で割り切る部分と
その数を調べるプログラムがわからなくて困っています。
どなたかアドバイスお願いします。
#include<stdio.h>
int main(void)
{
int i,x;
int score[10];
int data[10];
int number[10];
for(i=0;i<=9;i++){
printf("score[%d]=",i);
scanf("%d",&x);
score[i]=x;
}

return (0);
}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:配列がわかりません。 7219 επιστημη 2007/03/13 16:18:49
<子記事> Re:配列がわかりません。 7254 ルナレルナ 2007/03/18 12:27:21


No.7219

Re:配列がわかりません。
投稿者---επιστημη(2007/03/13 16:18:49)
http://blogs.wankuma.com/episteme/


> 3で割り切る部分と
> その数を調べるプログラムがわからなくて困っています。

x % y は x を y で割った余りを返すので、
n % 3 == 0 なら n は3で割り切れます。



この投稿にコメントする

削除パスワード

No.7220

Re:配列がわかりません。
投稿者---初心者(2007/03/13 21:49:44)


>x % y は x を y で割った余りを返すので、
>n % 3 == 0 なら n は3で割り切れます。

ありがとうございます。
求める式はわかったのですが、全体のプログラム
はどう作ればよいのでしょうか?
すいませんがよろしくお願いします。


この投稿にコメントする

削除パスワード

No.7221

Re:配列がわかりません。
投稿者---επιστημη(2007/03/13 22:28:39)
http://blogs.wankuma.com/episteme/


>求める式はわかったのですが、全体のプログラム
>はどう作ればよいのでしょうか?

for ( i = 0; i < 10; ++i ) {
 if ( score[i] は 3 で割り切れる ) {
  score[i] を number[?] に登録
  data[?] に 1 を足す
  ? を更新
 }
}



この投稿にコメントする

削除パスワード

No.7231

Re:配列がわかりません。
投稿者---初心者(2007/03/16 16:15:56)


ありがとうございます。
アドバイスを参考に自分でプログラム作ってみたのですが
表示例の通りにいかないのでこの問題のプログラムを全部
作って頂けないでしょうか?
これだけアドバイスを頂いてちゃんとできなくて恥ずかし
いのですが、よろしくお願いします。




この投稿にコメントする

削除パスワード

No.7232

Re:配列がわかりません。
投稿者---bugs(2007/03/16 16:23:07)


>表示例の通りにいかないのでこの問題のプログラムを全部
>作って頂けないでしょうか?

おいくら支払っていただけますか?
という話はさておき、ご自分の頭をフル回転させてこそ
身につくものです。
人からもらったプログラムでは、右から左へ抜けて、ハイおしまい。


この投稿にコメントする

削除パスワード

No.7233

Re:配列がわかりません。
投稿者---επιστημη(2007/03/16 17:16:40)
http://blogs.wankuma.com/episteme/


>表示例の通りにいかないのでこの問題のプログラムを全部
>作って頂けないでしょうか?

お断り。

お優しいどなたかが作ってくださるのを待ってください。
当然ながらご自分こしらえた方が256倍タメになります。



この投稿にコメントする

削除パスワード

No.7237

Re:配列がわかりません。
投稿者---ぽへぇ(2007/03/16 21:16:51)



>この問題のプログラムを全部作って頂けないでしょうか?

これを「丸投げ」といいます。

>アドバイスを参考に自分でプログラム作ってみたのですが
>表示例の通りにいかないので
>これだけアドバイスを頂いてちゃんとできなくて恥ずかし
>いのですが、よろしくお願いします。

ちゃんとできないのは恥ずかしくない。むしろ恥は
今のうちにかくようにしてください。皆、同じように
試行錯誤してきたのだから。

どんなプログラムを書いたのか、「表示例」とは何なのかを示すと、
幸せになれるかもね。

そうそう、ソースを貼るときは「HTML変換ツール」を使うのを忘れずに。




この投稿にコメントする

削除パスワード

No.7238

Re:配列がわかりません。
投稿者---ルナレルナ(2007/03/17 00:25:33)
http://park6.wakwak.com/~nougaki/mini_program/


>for ( i = 0; i < 10; ++i ) {
> if ( score[i] は 3 で割り切れる ) {
>  score[i] を number[?] に登録
>  data[?] に 1 を足す
>  ? を更新
> }
>}

numberとdataが逆になってませんか?


この投稿にコメントする

削除パスワード

No.7239

Re:配列がわかりません。
投稿者---επιστημη(2007/03/17 09:28:14)
http://blogs.wankuma.com/episteme/


>numberとdataが逆になってませんか?

どっちがどっちかわからんくなるよな変数名使ってる時点でアウトですねー♪



この投稿にコメントする

削除パスワード

No.7247

Re:配列がわかりません。
投稿者---初心者(2007/03/18 10:16:36)


問題を丸投げしてしまいすいませんでした。
あれから自分でやってみたのですが、割り
切れる値の数がうまく表示されないのですが
どこがわるいのでしょうか?
すいませんがよろしくお願いします。

#include<stdio.h>
int main(void)
{
int i,x;
int score[10];
int data[10];
int number[10];
for(i=0;i<=9;i++){
printf("score[%d]=",i);
scanf("%d",&x);
score[i]=x;
}
for(i=0;i<=9;++i){
if(x%3==0){
x=data[i];
number[i]=number[i]+1;
i++;
}
}
printf("%d,:%d\n",data[i],number[i]);

return (0);
}




この投稿にコメントする

削除パスワード

No.7249

Re:配列がわかりません。
投稿者---bugs(2007/03/18 11:06:45)


今回のように、データ入力のループと計算処理のループを
別々にするのであれば、

> score[i]=x;

ここで値をセットしたscore[i]を、後ろのループの

> if(x%3==0){

ここで使わないとまずいことになります。
それから、

> x=data[i];

この代入式は不可解です。何を何に代入するのが正しいのでしょうか。
また、

> i++;

これは不要です。for文の中に書いてあります。





この投稿にコメントする

削除パスワード

No.7252

Re:配列がわかりません。
投稿者---επιστημη(2007/03/18 12:12:26)
http://blogs.wankuma.com/episteme/


> printf("%d,:%d\n",data[i],number[i]);

i = 0..9 で繰り返さないと表になりません。




この投稿にコメントする

削除パスワード

No.7255

Re:配列がわかりません。
投稿者---ぽへぇ(2007/03/18 14:09:14)



>C言語の問題で、実数配列scoreの中で整数値3で割り切れる値と
>その数を調べるプログラムを作っています。
>割り切れる値を入れておく配列をdata[10]、その数を入れる配列
>をnumber[10]と定義し表示させるのですが、

私も考えてみましたが、仕様があいまいでわかりません。

たとえば 9 は 3で割り切れますが、

score[10] = {9, 9, 9, 9, 9, 9, 9, 9, 9, 9};
のとき、
data[10], number[10]はどうなって欲しいのですか?

score[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
のときは?

score[10] = {9999999999999999999, 9999999999999999999, (以下略)};
のときは?



この投稿にコメントする

削除パスワード

No.7254

Re:配列がわかりません。
投稿者---ルナレルナ(2007/03/18 12:27:21)
http://park6.wakwak.com/~nougaki/mini_program/


int main(void)
{
    int array[10];
    int i;
    
    for (i = 0; i < 10; i++)
        scanf("%d", &array[i]);
        
    for (i = 0; i < 10; i++)
        printf("%d", array[i]);
        
    return 0;
}
int main(void)
{
    int score[10];
    int i;
    
    for (i = 0; i < 10; i++)
        scanf("%d", &score[i]);
        
    for (i = 0; i < 10; i++)
        printf("%d", score[i]);
        
    return 0;
}
int main(void)
{
    int score[10];
    int i;
    
    for (i = 0; i < 10; i++)
        scanf("%d", &score[i]);
        
    for (i = 0; i < 10; i++)
        if (score[i] % 3 == 0)
            printf("%d", score[i]);
            
    return 0;
}
int main(void)
{
    int score[10];
    int data[10];
    int i, j = 0;
    
    for (i = 0; i < 10; i++)
        scanf("%d", &score[i]);
        
    for (i = 0; i < 10; i++)
        if (score[i] % 3 == 0)
            data[j++] = score[i];
            
    return 0;
}
int main(void)
{
    int score[10];
    int data[10];
    int i, j;
    
    for (i = 0; i < 10; i++)
        scanf("%d", &score[i]);
        
    for (i = j = 0; i < 10; i++)
        if (score[i] % 3 == 0)
            data[j++] = score[i];
            
    return 0;
}
int main(void)
{
    int score[10];
    int data[10];
    int number[10];
    int i, j;
    
    for (i = 0; i < 10; i++)
        scanf("%d", &score[i]);
        
    for (i = j = 0; i < 10; i++)
        if (score[i] % 3 == 0) {
            data[j] = score[i];
            number[j]++;
            j++;
        }
        
    return 0;
}
int main(void)
{
    int score[10];
    int data[10];
    int number[10] = {0};
    int i, j;
    
    for (i = 0; i < 10; i++)
        scanf("%d", &score[i]);
        
    for (i = j = 0; i < 10; i++)
        if (score[i] % 3 == 0) {
            data[j] = score[i];
            number[j]++;
            j++;
        }
        
    return 0;
}
int main(void)
{
    int score[10];
    int data[10];
    int number[10] = {0};
    int i, j;
    
    for (i = 0; i < 10; i++)
        scanf("%d", &score[i]);
        
    for (i = j = 0; i < 10; i++)
        if (score[i] % 3 == 0) {
            data[j] = score[i];
            number[j]++;
            j++;
        }
        
    //	???
    
    return 0;
}
int main(void)
{
    int socre[10];	//	実数配列じゃないのか?
    
    return 0;
}



この投稿にコメントする

削除パスワード

No.7272

Re:配列がわかりません。
投稿者---初心者(2007/03/20 08:50:23)


ありがとうございます。
アドバイスを参考に自分で作っているのですが
割り切れる値を2回入力しても割り切れる数の
値が2にならないのですが、どこが悪いのでしょうか?

#include<stdio.h>
int main(void)
{
int i;
int score[10];
int data[10];
int number[10]={0};
for(i=0;i<10;i++){
printf("score[%d]=",i);
scanf("%d",&score[i]);

}
for(i=0;i<10;i++){
if(score[i]%3==0 && ){
data[i]=score[i];
number[i]++;
printf("3:%d,:%d\n",data[i],number[i]);
}
}
return (0);
}


この投稿にコメントする

削除パスワード

No.7273

Re:配列がわかりません。
投稿者---επιστημη(2007/03/20 09:13:10)
http://blogs.wankuma.com/episteme/


>割り切れる値を2回入力しても割り切れる数の
>値が2にならないのですが、どこが悪いのでしょうか?

> for(i=0;i<10;i++){
> if(score[i]%3==0 && ){
> data[i]=score[i];
> number[i]++;
> printf("3:%d,:%d\n",data[i],number[i]);
> }
> }

dataとnumberの添え字は i じゃダメっしょ。よーく考えて。



この投稿にコメントする

削除パスワード

No.7274

Re:配列がわかりません。
投稿者---初心者(2007/03/20 10:05:16)


添え字を変えてやってみたのですが、やはり
うまくいきません。
実行結果が
3:3,:2
3:6,:1
のようになってほしいのですが、今のプログラムでは
3:3,:1
3:3,:1
3:6,:1
のようになってしまいます、なぜでしょうか?



この投稿にコメントする

削除パスワード

No.7275

Re:配列がわかりません。
投稿者---bugs(2007/03/20 10:12:53)


>のようになってほしいのですが、今のプログラムでは

今のプログラムというのは、どれでしょうか?
No.7272のコードは

>if(score[i]%3==0 && ){

この記述に誤りがあって、コンパイルできません。

思ったとおりに実行できていないプログラムのもとになっている
ソースコードを提示してください。


この投稿にコメントする

削除パスワード

No.7276

Re:配列がわかりません。
投稿者---επιστημη(2007/03/20 10:43:19)
http://blogs.wankuma.com/episteme/


>添え字を変えてやってみたのですが、やはりうまくいきません。
> ...
>のようになってしまいます、なぜでしょうか?

どう変えたか説明もコードもなしにどうしろと?
#「動くのをくれ」と言ってるのかな? お断りだけど。



この投稿にコメントする

削除パスワード

No.7277

Re:配列がわかりません。
投稿者---初心者(2007/03/20 11:08:02)


ソースコードを提示しなくてすいませんでした。
ソースコードはこのようになります。

#include<stdio.h>
int main(void)
{
int i,j;
int score[10];
int data[10];
int number[10]={0};
for(i=0;i<10;i++){
printf("score[%d]=",i);
scanf("%d",&score[i]);

}
for(i=j=0;i<10;i++){
if(score[i]%3==0){
data[j]=score[i];
number[j]++;
printf("3:%d,:%d\n",data[j],number[j]);
}
}

return (0);
}
このプログラムだと実行結果が
3:3,:1
3:3,:2
3:6,:3
のようになってしまうのですが、
3:3,:2
3:6,:1
のような実行結果にするためには
どうしたらよいのでしょうか?
何度もすいませんがよろしくお願いします。



この投稿にコメントする

削除パスワード

No.7278

Re:配列がわかりません。
投稿者---επιστημη(2007/03/20 11:28:16)
http://blogs.wankuma.com/episteme/


for ( i = 0; i < 10; ++i ) {
 if ( score[i] は 3 で割り切れる ) {
  score[i] を data[j] に登録
  number[j] に 1 を足す
  j を更新 /****** やってないでしょ!? *******/
 }
}

って、ずいぶん前に書かなかったけ?

で、この作業をやった後
printf("%d,:%d\n",data[i],number[i]);
を i = 0..(j-1) で回せばよかろ。




この投稿にコメントする

削除パスワード

No.7280

Re:配列がわかりません。
投稿者---ルナレルナ(2007/03/20 14:44:51)
http://park6.wakwak.com/~nougaki/mini_program/


//
//	type a
//

#include <stdio.h>

int main(void)
{
    int score[10];
    int data[10];
    int number[10] = {0};
    int i, j, n, n2 = 0;
    
    n = sizeof score / sizeof score[0];
    
    for (i = 0; i < n; i++)
        scanf("%d", &score[i]);
        
    for (i = 0; i < n; i++)
        if (score[i] % 3 == 0) {
            for (j = 0; j < n2; j++)
                if (data[j] == score[i])
                    break;
                    
            if (j == n2)
                data[n2++] = score[i];
                
            number[j]++;
        }
        
    for (i = 0; i < n2; i++)
        printf("%d: %d\n", data[i], number[i]);
        
    return 0;
}


//
//	type b
//

#include <stdio.h>

int main(void)
{
    int score[10];
    int data[10];
    int number[10] = {0};
    int i, j, n, n2 = 0;
    
    n = sizeof score / sizeof score[0];
    
    for (i = 0; i < n; i++)
        scanf("%d", &score[i]);
        
    for (i = 0; i < n; i++) {
        if (score[i] % 3)
            continue;
            
        for (j = 0; j < n2; j++)
            if (data[j] == score[i])
                break;
                
        if (j == n2)
            data[n2++] = score[i];
            
        number[j]++;
    }
    
    for (i = 0; i < n2; i++)
        printf("%d: %d\n", data[i], number[i]);
        
    return 0;
}



この投稿にコメントする

削除パスワード

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





掲示板提供:(有)リアル・インテグリティ