2015-11-05 5 views
0

Итак, я пытаюсь создать массив, содержащий некоторые введенные пользователем имена, а затем сопоставить эти имена с оценками букв из тестов (например: A, B, C, D, F). Мой вопрос: как я могу использовать массив, чтобы принимать введенные пользователем имена?Использование массивов и строк вместе

EDIT:

К сожалению, это немного долго, я не знаю, какая часть положить, что бы помочь. Совершенно новый для C++, и я не могу найти что-либо в Интернете по этому вопросу, LOL.

Вот несколько кодов. Эта программа в настоящее время запрашивает у пользователя результаты тестов, затем отображает и понижает самый низкий результат теста и, наконец, вычисляет среднее значение баллов без самого низкого. Конечная цель состоит в том, чтобы спросить у пользователя имена 5 учеников и 4 оценки для каждого ученика, а затем сбросить самый низкий балл для каждого ученика и вычислить средние значения ВСЕХ баллов, внесенных вне зависимости от ученика.

#include <iostream> 
#include <string> 
using namespace std; 

void getScore(int &); 
int findLowest(int [], int); 
void calcAverage(int [], int); 

int main() { 

const int NUM_SCORES = 5; 
int scores[NUM_SCORES]; 

cout << "Welcome to test averages." << endl; 
cout << "Please enter scores for " << NUM_SCORES << " students." << endl; 
cout << endl; 

for (int i = 0; i < NUM_SCORES; i++) { 
    getScore(scores[i]); 
} 

for (int i = 0; i < NUM_SCORES; i++) { 
    cout << "Score " << (i + 1) << ": " << scores[i] << endl; 
} 

cout << endl; 
cout << "The lowest of these scores is " << findLowest(scores, NUM_SCORES) << endl; 

calcAverage(scores, NUM_SCORES); 

return 0; 
} 

void getScore(int & s) { 

s = -1; 
cout << "Please enter a test score: "; 
cin >> s; 

while (s < 0 || s > 100) { 
    cout << "Score range must be from 0-100" << endl; 
    cout << "Please re-enter a score: "; 
    cin >> s; 
} 
} 

int findLowest(int theArray [], int theArraySize) { 

int lowest = theArray[0]; 

for (int i = 1; i < theArraySize; i++) { 

    if (theArray[i] < lowest) { 
     lowest = theArray[i]; 
    } 
} 

return lowest; 
} 

void calcAverage(int theArray [], int theArraySize) { 

int sum = 0; 

for (int i = 0; i < theArraySize; i++) { 
    sum += theArray[i]; 
} 

double average = (sum - findLowest(theArray, theArraySize))/(theArraySize - 1.0); 
cout << "The average is " << average << endl; 

} 
+0

Массив строк? Или, если вы не хотите, чтобы массив фиксированного размера использовал ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector) в [' std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string) (моя рекомендация). –

+0

Какой код вы пробовали? – GreatAndPowerfulOz

+0

Я бы хотел опубликовать ответ, но вы можете опубликовать код, который у вас есть. Или вместо или в дополнение к этому точный пример ваших входных файлов –

ответ

0

Попробуйте getline из #include <string>

std::string names[5]; 
for (int i = 0; i < 5; ++i){ 
    getline(std::cin, names[i]); 
} 
Смежные вопросы