Je fais une mission hw et mon professeur utilise ce code pour tester notre programme:caractère EOF dans XCode (ctrl + d)
int main()
{
const int SZ1 = 10;
const int SZ2 = 7;
const int SZ3 = 5;
float array1[SZ1];
float array2[SZ2];
float array3[SZ3];
DisplayValues(SortValues(GetValues(array1, SZ1), SZ1), SZ1);
DisplayValues(SortValues(GetValues(array2, SZ2), SZ2), SZ2);
DisplayValues(SortValues(GetValues(array3, SZ3), SZ3), SZ3);
return EXIT_SUCCESS;
}
float *DisplayValues(float *p, size_t n)
{
float previous = *p, *ptr, *end = p + n;
setiosflags(ios_base::fixed);
for (ptr = p; ptr < end; ++ptr) // get each element
{
cout << *ptr << '\n';
if (ptr != p) // if not first element...
{
if (previous < *ptr) // ...check sort order
{
cerr << "Error - Array sorted incorrectly\n";
return NULL;
}
}
previous = *ptr; // save this element
}
resetiosflags(ios_base::fixed);
return p;
}
#endif
J'utilise
float *GetValues(float *p, size_t n)
{
float input;
float *start = p;
cout << "Enter " << n << " float values separated by whitespace: \n";
while (scanf("%f", &input) == 1) {
*p++ = input;
}
return start;
}
pour obtenir des commentaires de la fenêtre du terminal comme il l'a demandé, et utilisez ctrl + d pour entrer un caractère EOF afin que le premier appel à DisplayValues (SortValues (GetValues (array1, SZ1), SZ1), SZ1) se produise. Cependant, le reste du programme se termine juste sans me laisser entrer de nouvelles valeurs quand DisplayValues (SortValues (GetValues (array2, SZ2), SZ2), SZ2); est appelé. Y a-t-il une raison ou une solution pour cela? Merci.
Notez que votre GetValues n'utilise pas du tout * n * lors de la lecture des valeurs (dans votre boucle avec scanf). –