/ / Die größte Zahl im Array finden [geschlossen] - C ++, Arrays

Die größte Zahl im Array finden [geschlossen] - C ++, Arrays

Kann mir bitte jemand sagen, was mit meinem Programm nicht stimmt? Mein Programm soll den größten Wert in finden int i[] aber wenn ich es leite, fordert es mich auf, 11 Zahlen einzugeben, und stattdessen wird die größte Anzahl der 11 Zahlen angezeigt.

#include<stdio.h>
void main(void)
{
int i[] =
{
88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85, //bus 8
98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89, //bus15
88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85, //22
98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89, //23
};
int j;
int number,largest;
largest=0;
for(j=0;j<11;j++)
{
scanf_s("%d",&number);
if(number>largest)largest=number;
}
printf("Largest=%dn",largest);
}

Wie stelle ich das Programm so ein, dass es den größten Wert in findet int i[]?.

Antworten:

9 für die Antwort № 1

Versuchen Sie es mit std::max_element von <algorithm>:

#include <algorithm>

int i[] = { 1, 84, 11, 31 };

// for C++11 and later:
int max = *std::max_element(std::begin(i), std::end(i));

// for C++03 or earlier:
int max2 = *std::max_element(i, i + (sizeof(i) / sizeof(*i)));

oder wenn Ihr Array statisch ist, können Sie einfach eine C ++ 11-Initialisierungsliste verwenden:

auto i = { 1, 84, 11, 31 };
int max = std::max(i);
int max2 = std::max({ 1, 84, 11, 31 });

PS: Ein Live-Beispiel mit diesen Methoden kann gefunden werden Hier.


4 für die Antwort № 2

im <algorithm>:

std::cout << *std::max_element(std::begin(i), std::end(i)) << std::endl;

Live-Beispiel

oder wenn Sie eine initializer_list verwenden, um Ihre Nummern zu enthalten, die Sie direkt verwenden können std::max:

auto i =
{
88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85,
98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89,
88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85,
98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89,
};
std::cout << std::max(i) << std::endl;

Live-Beispiel


1 für die Antwort № 3

Sie müssen die Nummer und den größten Wert auf 0 initialisieren.

number = 0;
largest = 0;

oder es wird eine Zufallszahl gespeichert in Position im Speicher.

Versuchen

int largerst = 0;

for(int j=0;j < sizeof i;j++) {
if (i[j] > largest) largest = i[j];
}
cout << largest << endl;