2013-04-17 2 views
0

Я пытаюсь написать программу для подсчета и отображения высот студентов выше 60 дюймов. Например: мне нужно, чтобы он подсчитывал и показывал число студентов выше 60 дюймов и отображал их соответствующие высоты. Я не уверен, как хранить отдельные значения и отображать их высоту. Я получил программу, чтобы подсчитать количество студентов выше 60 дюймов, но мне нужна помощь, отображающая их конкретную высоту.Нужна помощь, отображающая значения в программе цикла/массива C++

#include <iostream> 

using namespace std; 

int main() 
{ 
    double count60 = 0.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]; 
    if (height[x] > 60) 
    { 
     count60 = count60 + 1; 
    }  
    } 

    cout << "The number of students taller than 60 inches: "<< count60 << endl; 
    cout << "The heights of these students are: " 

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

Вы должны рассмотреть приращений письма как «++ х», а не «х = х + 1». Это лучший стиль. Кроме того, count60 должен быть int, а не double. – Muscles

ответ

1

Здесь вы идете ... Не самый лучший с точки зрения использования космоса, но избегает STL.

 #include <iostream> 

     using namespace std; 

     int main() 
     { 
      int count60 = 0; 
      double height[10]; 
      double maxheight[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]; 
      if (height[x] > 60) 
      { 
       maxheight[count60] = height[x]; 
       count60 = count60 + 1; 
      }  
      } 

      cout << "The number of students taller than 60 inches: "<< count60 << endl; 

      for (int i = 0; i < count60; i = i + 1) 
      { 
       cout<<"The heights of these students are: "<< maxheight[i] << endl; 
      } 

      system("pause"); 
      return 0; 
     } 
3

Не уверен, что я полностью понимаю, где ваша проблема.

Это видно из кода, который вы дали вы знаете, как:

  • итерации через массив (ваш for заявление для ввода);
  • решить, если что-то больше 60 (ваш if заявление для подсчета обновлений); . И
  • выходной переменной (ваш предпоследний cout << заявление

Следовательно, она должна быть простой вопрос, чтобы объединить тех, кто что-то вроде:

for (int x = 0; x < 10; x = x + 1) { 
    if (height[x] > 60) { 
     cout << height << '\n'; 
    } 
} 
+0

Просто добавьте, используя '\ n' вместо endl, будет означать, что буфер не будет очищаться после каждого вызова. – iambeanie

+0

Да, и я подозреваю, что, как и C, если он подключается к терминалу (если он может быть «определен для обращения к интерактивному устройству»), он будет сброшен на строку. Если это не так, его не нужно размывать. В любом случае это не имеет значения, так как промывка не нужна (и endl в этом случае неэффективен). – paxdiablo

1

Вот код:

#include <iostream> 

using namespace std; 

int main() 
{ 
double count60 = 0.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]; 
if (height[x] > 60) 
{ 
    count60 = count60 + 1; 
}  
} 

cout << "The number of students taller than 60 inches: "<< count60 << endl; 
cout << "The heights of these students are: "; 
for(int i=0;i<10;++i) 
    if(height[i]>60) 
     cout<<' '<<height[i]; 
cout<<endl; 

return 0; 

}

Кстати, я думаю count60 s лучше было бы неподписанным int.

1

Пробуйте использовать std::vector. Они в основном представляют собой оболочку вокруг массива и позволяют динамически добавлять значения. В этом случае вы бы добавили код:

#include <vector> // obviously with the rest of the includes. 

std::vector<int> tallPeople; 
for (int x = 0; x < 10; x = x + 1) 
{ 
    if (height[x] > 60) 
    { 
     count60 = count60 + 1; 
     tallPeople.push_back(height[x]); 
    } 
} 

//... 

for (int num = 0; num < tallPeople.size(); num++) 
{ 
    cout << tallPeople[num] << endl; 
} 
0

, если вы хотите, чтобы удалить дубликаты, то сделать это

//bubble sort 
for(int i=0;i<9;i++) 
{ 
    for(int j=i+1;j<10;j++) 
    { 
     if(height[i]>height[j]) 
     { 
      double temp = height[i]; 
      height[i] = height[j]; 
      height[j] = temp; 
     }  
    } 
} 
//print 
for(int i=0;i<10;i++) 
{ 
    if(height[i]>60 && (i==0 || height[i]!= height[i-1])) 
    { 
     cout << ' ' << height[i]; 
    } 
} 

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

  • Нет связанных вопросов^_^