配列内に同じ値がいくつあるのかを表示するプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
よしずーみ

配列内に同じ値がいくつあるのかを表示するプログラム

#1

投稿記事 by よしずーみ » 14年前

下のプログラムを行うと
入力してください:4
1個目:1
2個目:1
3個目:1
4個目:2
2が1個
1が3個
1が2個
1が1個    となるのを

入力してください:4
1個目:1
2個目:1
3個目:1
4個目:2
2が1個
1が3個  としたいのですが

どうもわかりません教えてくれませんか
お願いします。 

#include <stdio.h>
#define number 1000

int n()
{int x;
printf("入力する数を決めてください:");
scanf("%d", &x);

return (x);
}

int a(int x)
{ int i=0,j=0,men,p,y;
int v[number];int c[number]={0};

for(;i<x;i++)
{
printf("%d個目:",i+1);
scanf("%d", &v);
men=i;
i=men;
j=men;

for(;j>=0;j--)
{
if(v==v[j]){c+=1;}
}
}
for(i=x-1;0<=i;i--){
if(p=x)printf("%dが%d個\n",v,c);
}}

int main(void)
{
int d;
d=n();
a(d);
return 0;
}

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 配列内に同じ値がいくつあるのかを表示するプログラム

#2

投稿記事 by h2so5 » 14年前

ソースはコードタグで囲ってください。
また、変数名が短すぎて意味が分からないのでちゃんと名前をつけてください。

とりあえず、
if(p=x)printf("%dが%d個\n",v,c);

の部分が問題です。比較演算子が間違っているし、pの数値が不定です。

[追記]
int c[number] も初期化していないのにインクリメントされています。

コード:

#include <stdio.h>
#define number 1000
 
int n()
{
        int x;
        printf("入力する数を決めてください:");
        scanf("%d", &x);
        
        return (x);
}
 
int a(int x)
{
        int i=0,j=0,men,p,y;
        int v[number];int c[number]={0};
        
        for(;i<x;i++)
        {
                printf("%d個目:",i+1);
                scanf("%d", &v[i]);
                men=i;
                i=men;
                j=men;
        
                for(;j>=0;j--)
                {
                if(v[i]==v[j]){c[i]+=1;}
                } 
        }
        
        for(i=x-1;0<=i;i--){
                if(p=x)printf("%dが%d個\n",v[i],c[i]);
        }
}
 
int main(void)
{
        int d;
        d=n();
        a(d);
        return 0;
}

naohiro19
記事: 256
登録日時: 15年前
住所: 愛知県

Re: 配列内に同じ値がいくつあるのかを表示するプログラム

#3

投稿記事 by naohiro19 » 14年前

警告レベル4でビルドしたときのログを以下にしめします。

コード:

(13): warning C4101: 'y' : ローカル変数は 1 度も使われていません。
(30): warning C4706: 条件式の比較値は、代入の結果になっています。
(31): warning C4716: 'a' : 値を返さなければいけません
マルチポストです。
http://detail.chiebukuro.yahoo.co.jp/qa ... 1065276200
最後に編集したユーザー naohiro19 on 2011年6月26日(日) 14:31 [ 編集 4 回目 ]

nominio

Re: 配列内に同じ値がいくつあるのかを表示するプログラム

#4

投稿記事 by nominio » 14年前

コード:


#include <stdio.h>
#define number 1000
 
int n()
{
        int x;
        printf("入力する数を決めてください:");
        scanf("%d", &x);
        
        return (x);
}
 
int a(int x)
{
        int i=0,j=0,men,p,y;
        int v[number];int c[number]={0};
        
        for(;i<x;i++)
        {
                printf("%d個目:",i+1);
                scanf("%d", &v[i]);
                men=i;
                i=men;
                j=men;
        
                for(;j>=0;j--)
                {
                if(v[i]==v[j]){c[i]+=1;}
                } 
        }
        
        for(i=x-1;0<=i;i--){
                printf("%dが%d個\n",v[i],c[i]);
        }
}
 
int main(void)
{
        int d;
        d=n();
        a(d);
        return 0;
} 



閉鎖

“C言語何でも質問掲示板” へ戻る