前提・実現したいこと
以下の問題に取り組み、つまづきましたので
どこがおかしいか教えていただけると助かります。
(問題)要素数nの配列v内のkeyと等しい全要素の添字を配列idxに格納する関数search_idx を作成せよ。返却するのはkeyと等しい要素の個数とする。
int search_idx(const int v[],int idx[],int key,int n);
たとえば、vに受け取った配列の要素が{1,7,5,7,2,4,7}でkeyが7であれば、idxに{1,3,6}を格納した上で3を返却する。
発生している問題・エラーメッセージ
エラーメッセージ Segmentation fault (コアダンプ) ```C言語 ```#include <stdio.h> #define FAILED -1 int search_idx(const int v[],int idx[],int key,int n){ int a = 0; int i; for(i=0;i<n;i++){ if (v[i] == key){ idx[a] == i; a++; } } return (a==0)?FAILED:a; } int main(void){ int n; int i,ky; int vx[n]; int idx; int vy[] = {0}; printf("入力する数を教えてください");scanf("%d",&n); for(i=0;i<n;i++){ printf("vx[%d]:",i); scanf("%d",&vx[i]); } printf("探す値:"); scanf("%d",&ky); if((idx = search_idx(vx,vy,ky,n))== FAILED) puts("探索に失敗しました"); else printf("%dは%d個あります\n",ky,idx); return 0; }
試したこと
補足情報(FW/ツールのバージョンなど)
回答者の皆様、ありがとうございました。
回答3件
あなたの回答
tips
プレビュー