Как получить доступ к другим функциям, определенным переменным в другой функции?C++ указатели и ссылки?
void gradesInput() {
int s1, s2, s3;
cout << "Please enter your test scores, in order from the first to last.\n";
cin >> s1 >> s2 >> s3;
if (s1 < 0 || s1 > 100) {
cout << "Your first test score is not a valid number, please re-enter: ";
cin >> s1;
}
else if (s2 < 0 || s2 > 100) {
cout << "Your second test score is not a valid number, please re-enter: ";
cin >> s2;
}
else if (s3 < 0 || s3 > 100) {
cout << "Your third test score is not a valid number, please re-enter: ";
cin >> s3;
}
}
double average3Scores(int s1, int s2, int s3) {
gradesInput();
double avg = (int)(((s1 + s2 + s3)/3.0) + 0.5); //rounded average
return avg;
}
В Average3Scores, я не хочу, чтобы вручную вводить s1, s2, s3 в параметрах, если вы знаете, что я имею в виду? Я знаю, что это имеет какое-то отношение к указателям, это правильно?
Я редактировал свою программу для использования ссылочных переменных, можете ли вы сказать мне, правильно ли я использую ее?
#include <iostream>
using namespace std;
void gradesInput(int &test1, int &test2, int &test3) {
cout << "You will be prompted to enter your three test scores" << endl;
cout << "Please make sure your number is between 0 and 100." << endl;
cout << "Please enter your first test score: ";
cin >> test1;
cout << "\nPlease enter your second test score: ";
cin >> test2;
cout << "\nPlease enter your third test score: ";
cin >> test3;
}
double average3Scores(int test1, int test2, int test3) {
double avg1 = ((test1 + test2 + test3)/3.0); // calculating the average without rounding
avg1 = (int)(avg1 + 0.5); //this rounds the test average
return avg1;
}
double average2Scores(int test2, int test3) {
double avg2 = ((test2 + test3)/2.0);
avg2 = (int)(avg2 + 0.5);
return avg2;
}
char toLetterGrade(double avg1, double avg2, int test3) {
if (avg1 >= 90)
return 'A';
else if (avg1 >= 70)
if (test3 >= 90)
return 'A';
else
return 'B';
else if (avg1 >= 50)
if (avg2 >= 70)
return 'C';
else
return 'D';
else
return 'F';
}
void displayGrade(double avg, char lGrade) {
cout << "Your average is: " << avg << endl;
cout << "Your grade is: " << lGrade << endl;
}
int main() {
int test1, test2, test3;
double avg1, avg2;
char lGrade;
gradesInput(test1, test2, test3);
average3Scores(test1, test2, test3);
average2Scores(test2, test3);
toLetterGrade(avg1, avg2, test3);
displayGrade(avg1, lGrade);
system("pause");
return 0;
}
У вас нет.Вы передаете параметры по адресу (или ссылке), объявляя их как формальные указатели (или ссылки) в списке параметров вызываемой функции и разыгрывая их внутри для записи в переменные данных вызывающего. – WhozCraig
Переменные находятся в разных областях, поэтому вы должны передать их в методе. ** BUT ** вы можете поместить их в класс (и переменные будут делиться со всеми членами класса) – AsfK
@WhozCraig Я еще не изучил формальные указатели и прочее, могу ли я иметь простой пример, чтобы я мог его реализовать к моему коду? – Panthy