/ / C ++ Podstawowe funkcje - c ++, funkcja

Podstawowe funkcje C ++ - c ++, funkcja

Zostałem przydzielony do pracy domowej w mojej klasie programowania. Rozumiem istotę tego, ale czuję się trochę zagubiony. Chciałbym uzyskać pomoc i informacje zwrotne na ten temat.

Mój problem: Szczególny skład talentów ma 5 sędziów, z których każdy przyznaje każdemu z wykonawców ocenę od 0 do 10. Dopuszczalne są wyniki ułamkowe, takie jak 8.3. Ostateczną punktację wykonawcy określa się, opuszczając najniższy i najwyższy wynik, a następnie uśredniając 3 pozostałe punkty. Napisz program, który używa tej metody do obliczenia wyniku zawodnika. Powinien zawierać następujące funkcje:

double getJudgeData () powinien zapytać użytkownika o aOcena sędziego i zatwierdzenie wyniku, funkcja ta powinna zostać wywołana 5 razy od głównej, raz dla każdego z 5 sędziów. void calcScore () powinien obliczyć i wyświetlić średnią z trzech wyników, które pozostają po usunięciu najwyższych i najniższych wyników uzyskanych przez wykonawcę. Ta funkcja powinna zostać wywołana jeden raz z głównego i powinna zostać przekazana 5 punktom. Dwie ostatnie funkcje, opisane poniżej, powinny być wywoływane przez calcScore, która wykorzystuje zwrócone informacje w celu ustalenia, które wyniki mają zostać usunięte.

double findLowest () powinien znaleźć i zwrócićnajniższy z pięciu wyników przeszedł do niego. double findHighest () powinien znaleźć i zwrócić najwyższą z pięciu otrzymanych wyników. Weryfikacja danych wejściowych: nie akceptuj ocen sędziów niższych niż 0 lub wyższych niż 10.

Rozumiem, że kod służący do uzyskania danych sędziów będzie wyglądał dokładnie tak samo

Double getJudgeData(double score){
cout << "Judge, please enter your score";
cin >> score;
while (score<0.0 || score> 10.0){
cout << "Invalid score. Please enter a correct one";
cin>>score
}
return score;
}

Zasadniczo to powtórzone 4 razy, na 5 razyw sumie. Pomyślałem, że po prostu zmienię nazwę zmiennej na score1, score2 itd. Aby dowiedzieć się, jakie są najwyższe i najniższe wyniki, pomyślałem, że mogę użyć kilku instrukcji if. Na przykład,

if (score < lowest)
lowest=score;
else if (score1 < score)
lowest = score1;
else if (score2 < score)
lowest = score2;
else if (score3 < score)
lowest = score3;
else if (score4 < score)
lowest = score4;

a przeciwieństwo dla najwyższych.

Domyślam się, że moim największym problemem jest kodowanievoid calcscore () i zrozumienie tego wszystkiego. Czuję, że zupełnie tego nie rozumiem, tak jak rozumiem, że używam funkcji, aby dowiedzieć się o wynikach sędziów w każdym przypadku i odesłać wynik do głównego. "BUt, po prostu nie mam ochoty rozumiem, czym jestem robić. Chciałbym wskazówek. Z góry dziękuję.

EDYTOWAĆ Okej, pracowałem nad moim kodem i kontynuowałem.

    #include <iostream>

using namespace std;

double getJudgeData(double score) {

cout << "Judge 1 please enter your score: ";
cin >> score;

while (score < 0.0 || score > 10.0) {
cout << "Invalid score. Please enter a correct one" << endl;
cin >> score;
}
return score;
}

double getJudgeData1(double score1) {

cout << "Judge 2 please enter your score: ";
cin >> score1;

while (score1 < 0.0 || score1 > 10.0) {
cout << "Invalid score. Please enter a correct one" << endl;
cin >> score1;
}
return score1;
}

double getJudgeData2(double score2) {

cout << "Judge 3 please enter your score: ";
cin >> score2;

while (score2 < 0.0 || score2 > 10.0) {
cout << "Invalid score. Please enter a correct one" << endl;
cin >> score2;
}
return score2;
}

double getJudgeData3(double score3) {

cout << "Judge 4 please enter your score: ";
cin >> score3;

while (score3 < 0.0 || score3 > 10.0) {
cout << "Invalid score. Please enter a correct one" << endl;
cin >> score3;
}
return score3;
}

double getJudgeData4(double score4) {

cout << "Judge 5 please enter your score: ";
cin >> score4;

while (score4 < 0.0 || score4 > 10.0) {
cout << "Invalid score. Please enter a correct one" << endl;
cin >> score4;
}
return score4;
}
double findHighest(double score, double score1, double score2, double score3, double score4) {

double highest = score;
if (score1 > highest)
highest = score1;
else if (score2 > highest)
highest = score2;
else if (score3 > highest)
highest = score3;
else if (score4 > highest)
highest = score4;

return highest;

}

double findLowest(double score, double score1, double score2, double score3, double score4) {

double lowest = score;
if (score1 < lowest)
lowest = score1;
else if (score2 < lowest)
lowest = score2;
else if (score3 < lowest)
lowest = score3;
else if (score4 < lowest)
lowest = score4;

return lowest;
}


void calcScore(double score, double score1, double score2, double score3, double score4, double highest, double lowest) {

double findHighest(highest);
double findLowest(lowest);
double avgScore = (score + score1 + score2 + score3 + score4 - lowest - highest) / 3;

cout << "nThe contestant"s average score is: " << avgScore << endl;
}

int main(double score, double score1, double score2, double score3, double score4, double highest, double lowest) {

getJudgeData(score);
getJudgeData1(score1);
getJudgeData2(score2);
getJudgeData3(score3);
getJudgeData4(score4);



system("PAUSE");

return 0;

}

Działa i jest w stanie wykryć, czy kod jestnieważne dla wszystkich sędziów. Zaraz po otrzymaniu wszystkich danych wejściowych dla sędziów po prostu powie "naciśnij dowolny klawisz, aby kontynuować" dwa razy i koniec.Nie wydaje się, że nie przechodzi przez pustą sekcję calcscore.

Odpowiedzi:

0 dla odpowiedzi № 1

Chciałbym zebrać 5 punktów w wektorze. Następnie obliczyć wynik iteracji wszystkich, podsumowując je, śledząc najniższy / najwyższy, a następnie odjąć oba od sumy.

Nie zamierzam napisać dla ciebie kodu, ale wydaje mi się, że to dobry sposób na zrobienie tego.

Odpowiedź na komentarz:

Wtedy twoja min / max będzie musiała być jakąś głupotą:

double min(double a0, double a1, double a2, ...)
{
double min = a0;

if (a1 < min) min = a1;
if (a2 < min) min = a2;
...

return min;
}

Pomiń lub nie uzyskaj parametrów końca ogona, jeśli którakolwiek z pierwszych jest mniejsza niż a0.


0 dla odpowiedzi nr 2

Prawdopodobnie rozwiązanie powinno się kręcić wokół

averageScore = (score1 + score2 + score3 + score4 + score5 - findLowest() - findHighest()) / 3;

To pozwoli ci nie dbać o to, który wynik jest najniższy i najwyższy, tylko o wartości najwyższych i najniższych wyników.