質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1417閲覧

C++で線形探索時におけるコードについて

ryamamot0

総合スコア3

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/04/27 20:52

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
今C++で線形探索を勉強しています。
エラーではないのですが、理解できていない部分があるので、質問させて頂きます。
下記のコードの"void Linear(int arr[], int size, int key);"の部分が理解できていません。この引数は何を意味しているのかを教えていただけると助かります。

該当のソースコード

c++

1#include <iostream> 2using namespace std; 3#include <cstdlib> 4#include <ctime> 5void Linear(int arr[], int size, int key); //function prototype 6int main(){ 7 srand(time(nullptr)); 8 int arr[100]; 9 int size = sizeof(arr) / sizeof(arr[0]); 10 for (int i = 0; i < size; i++){ 11 arr[i] = rand() % 50 + 1 ; //配列を1~50の範囲のランダムな数値で埋める 12 } 13 for (int i = 0; i < size; i++){ 14 cout << arr[i] << endl; 15 } 16 cout << "After the array, there was sorted." << endl; 17 for (int j = 0; j < size-1; j++){ 18 for (int i = 0; i < size-1-j ; i++){ 19 if(arr[i] > arr[i+1]){ 20 int temp; 21 temp = arr[i]; 22 arr[i] = arr[i+1]; 23 arr[i+1] = temp; 24 } 25 } 26 } 27 for (int i = 0; i <= 99; i++){ 28 cout << arr[i] << endl; 29 } 30 cout << "Enter a key to search for\n"; 31 int key; 32 cin >> key; 33 Linear(arr, size, key); 34} 35void Linear(int arr[], int size, int key){ 36 bool flag = true; 37 for (int i = 0; (i < size) && (flag) ; i++){ 38 int compare = 0; 39 compare++; 40 if (arr[i] == key){ 41 cout << "Key found at index position: " << i << endl; 42 cout << " It took " << compare << " comparisons to find key";//or use compare 43 flag = false; 44 } 45 } 46 if (flag){ 47 cout << "not found, "; 48 } 49}

補足情報(FW/ツールのバージョンなど)

c++
xcodeで記述

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

void Linear(int arr[], int size, int key)

arr[0]~arr[size-1] の中から arr[i] == key を満たすiを見つける。

投稿2020/04/27 21:02

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryamamot0

2020/04/27 22:10

なるほど。因みになんでint main()のなかの最後にLinear(arr, size, key)と書いているのでしょうか?arrは[]要らないんですか? 後、基本的なところの反復になってしまうのですが、Linearの中のif(flag)についても教えていただけませんか?
episteme

2020/04/27 23:21

> arrは[]要らないんですか? 要りません。てか、それだとコンパイルエラーになります(やってみて) > if(flag)について flagはarr[]からkeyを見つけることができなかったときtrueになります。
ryamamot0

2020/04/27 23:26

大変助かりました。有難う御座いました!
episteme

2020/04/27 23:45

あとLinear()の中にバグがあります。
ryamamot0

2020/04/28 00:03

本当ですか?良ければご指導頂けると助かります。
episteme

2020/04/28 00:18

> cout << " It took " << compare << " comparisons to find key"; ココ、常に 「1回比較した」ことになっちゃってます。
ryamamot0

2020/04/28 09:24

有難う御座います!お陰で気付いていないミスを修正できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問