私の割り当ては、テキストファイルから読み込まれた配列の中で最も高い数値を決定する関数の作成です。私は、ソート、バブルを使用してに見てきたと私は以来、割り当てが、ここでは、そのようなバブルソートを使って最高の数を決定する方法[C++]
としてそれらを格納する必要がなく、ソートされた番号を尋ねていないと思い、私がこれまで
void determineWinner(string namesArr[], float votesArr[], int size)
{
int temp = 0;
string tempname;
for (int i = 0; i < size; i++)
{
if (votesArr[i] > votesArr[i + 1])
{
temp = votesArr[i];
tempname = namesArr[i];
votesArr[i] = votesArr[i + 1];
namesArr[i] = namesArr[i + 1];
votesArr[i + 1] = temp;
namesArr[i + 1] = tempname;
}
}
}
を持っているものです私はそれを作成して条件をテストし(最小から最大までソートすることを念頭に置いて)、iをi + 1に置き換えます。そして、「投票」が特定の名前にリンクされているので、私は投票が動くにつれて名前を切り替える。
は、例えば、配列は、最初の
5000, 4000, 6000, 2500, 1800
に配置されるだろうと私はプログラム名が動作を停止しました「と、実行時エラーになっていると思う
1800, 2500, 4000, 5000, 6000
として終わる必要があるだろう"これを修正するために私は何ができますか?
私は直接の回答はしませんが、ファイルの内容(あまり大きすぎない場合)を 'std :: vector'に格納し、' std :: max_element'を使って最大値を見つけます。 – ArchbishopOfBanterbury
'max = -some_big_number;配列内の各要素{if(element> max)max = element} ' – John3136
デバッガの使い方を調べてください。クラッシュの理由は、配列の終わりを過ぎてアクセスしている可能性が高いためです。 'size-1'までループする必要があります。しかし、コードでは問題は解決しません。挿入ソートは常にバブルソートよりも優れているため、配列をソートする必要はありません。 –