Başka bir işlevdeki başka değişkenlere nasıl erişirim? Ne demek istediğimi biliyorumC++ işaretçiler ve referanslar?
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, ben, parametrelerinde elle giriş s1, s2, s3 zorunda kalmak istemiyorum? Bunun işaretçilerle bir ilgisi olduğunu biliyorum, bu doğru mu?
Referans değişkenlerini kullanmak için programımı düzenledim, doğru kullanıp kullanmadığımı söyleyebilir misiniz? References vs pointers -
#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;
}
Yapmıyorsunuz.Parametreleri, adres (veya referans) yoluyla, çağrılan işlevin parametre listesinde resmi işaretçi (veya referanslar) olarak bildirerek ve bunları çağrı verenin veri değişkenlerine yazmak için bunları devre dışı bırakarak geçirirsiniz. – WhozCraig
Değişkenler farklı kapsamdadır, bu nedenle bunları yönteme iletmeniz gerekir. ** AMA ** onları sınıflara koyabilirsiniz (ve değişkenler tüm sınıf üyeleriyle paylaşılacak) – AsfK
@WhozCraig Resmi işaretçiler ve materyaller öğrenmedim, basit bir örneğim olabilir, böylece bunu uygulayabilirim benim koduma – Panthy