2013-04-17 2 views
0

Хорошо, мне также нужно рассчитать и отобразить каждую высоту после увеличения на 5% с помощью отдельного 10-элементного массива. Есть идеи? Простите за все это. Это мой первый раз с использованием массивов.Отображение минимального значения в массиве

#include <iostream> 

using namespace std; 

int main() 
{ 
    int MINheight = 0; 
    double height[10]; 
    for (int x = 0; x < 10; x = x + 1) 
    { 
     height[x] = 0.0; 
    } 

    cout << "You are asked to enter heights of 10 students. "<< endl; 
    for (int x = 0; x < 10; x = x + 1) 
    { 
     cout << "Enter height of a student: "; 
     cin >> height[x]; 
    } 

    system("pause"); 
    return 0; 
} 
+2

Используйте существующие алгоритмы. 'std :: min_element' находится прямо у вас на пороге. – chris

+0

Прошу прощения, но я не знаю, как использовать std :: min_element, может кто-нибудь объяснить? Я в настоящее время ищу пример – user2040308

+0

Возможно, это хорошо, если вы сначала прочитали об итераторах. Благодаря этим знаниям и знаниям о том, что массивы могут распадаться на указатели на их первый элемент, вы можете использовать эти указатели как итераторы с произвольным доступом для алгоритма или использовать что-то вроде 'std :: begin' и' std :: end', который работает с обычными массивами, а также с лучшим 'std :: array'. – chris

ответ

3

Просто петля так:

MINheight = height[0]; 
for (int x = 1; x < 10; x++) 
{ 
    if (height[x] < MINheight) 
    { 
     MINheight = height[x]; 
    } 
} 
std::cout << "minimum height " << MINheight <<std::endl; 

Side Примечание: Вы не должны назвать локальную переменную, начиная с буквы, используя x в качестве индекса массива также какое-то странное, хотя они оба работают нормально, но не хороший стиль.

Вы также можете использовать std::min_element следующим образом:

std::cout << *std::min_element(height,height+10) << std::endl; 
           //^^using default comparison 

Чтобы поместить элементы в отдельный массив с увеличением высоты и отображать их, выполните следующие действия:

float increasedHeights[10] = {0.0}; 
for (int i = 0; i < 10; ++i) 
{ 
    increasedHeights[i] = height[i] * 1.05; 
} 

//output increased heights 
for (int i = 0; i < 10; ++i) 
{ 
    std::cout << increasedHeights[i] << std::endl; 
} 
+0

Хорошо, мне также нужно вычислить и отобразить каждую высоту после увеличения на 5% с помощью отдельного 10-элементного массива. Есть идеи? Простите за все это. Это мой первый раз с использованием массивов. – user2040308

+0

@ user2040308 см. Обновленный пост? Это то, что вы имеете в виду, добавив увеличенную высоту в отдельный массив? – taocp

1

По существу, вы можете следить за минимальное значение по мере его ввода так:

cout << "You are asked to enter heights of 10 students. "<< endl; 

MINheight = numerical_limits<int>::max 
for (int x = 0; x < 10; x = x + 1) 
{ 
    cout << "Enter height of a student: "; 
    cin >> height[x]; 
    if(height[x] < MINheight)MINheight = height[x]; 
} 
cout << "Minimum value was: " << MINheight << "\n"; 

Что это делает создать переменную с его значением максимально возможное значение, то когда-либо пользователь вводит новое значение, проверяйте, не меньше ли текущего минимума, если он хранит его. Затем распечатайте текущий минимум в конце.

+0

Хорошо, мне также нужно рассчитать и отобразить каждую высоту после увеличения на 5% с помощью отдельного 10-элементного массива. Есть идеи? Простите за все это. Это мой первый раз с использованием массивов. – user2040308

+0

По существу, создайте новый двойной массив, как и раньше, выполните через массив (как указано выше) и установите каждое значение в 1.05 * значение в том же индексе в массиве height и распечатайте это расчетное значение. Достаточно просто? : P – Sinkingpoint

Смежные вопросы