Je n'arrive pas à comprendre comment mettre en œuvre CETTE boucle for imbriquée PARTICULIÈRE (je l'ai déjà utilisée pour une tâche similaire). J'ai besoin de 4 entrées utilisateur (plage de longueur et de rayon) et ensuite je dois afficher un tableau de valeurs calculées comme suit :
Radius Length Volume Area
1 1 *.** *.**
1 2 *.** *.**
1 3 *.** *.**
2 1 *.** *.**
2 2 *.** *.**
2 3 *.** *.**
Comme vous pouvez le constater, j'ai besoin de plusieurs longueurs pour chaque rayon. J'ai passé des heures à essayer de comprendre ce qui suit comment Je pourrais éventuellement obtenir plusieurs valeurs de la "colonne 2" pour la même valeur de la "colonne 1". Mon code n'affiche pas ce qui précède, mais plutôt ce qui suit :
[ Enter only positive integers! ]
Enter starting length: 1
Enter end length: 3
Enter starting radius: 1
Enter end radius: 3
Radius Length Volume Area
1 1 3.14 6.28
1.00 1 3.14 6.28
1.00 1 3.14 6.28
1.00 1 3.14 6.28
Voici mon code (à l'origine, je voulais en mettre moins et suivre les lignes directrices du "code minimal", mais j'avais peur de manquer des informations importantes si je me contentais d'omettre tout ce qui se trouve en dehors de la boucle for. Je m'en excuse).
#include <iostream>
#include <iomanip>
using namespace std;
// func prototyping
float volCalc(float pi, float rad, float len);
float surfCalc(float pi, float rad, float len);
int main()
{
float pi = 3.14159265;
int radStart, radEnd, lenStart, lenEnd;
// data i/o
cout << "[ Enter only positive integers! ]" << endl
<< "Enter starting length: ";
cin >> lenStart;
cout << "Enter end length: ";
cin >> lenEnd;
cout << "Enter starting radius: ";
cin >> radStart;
cout << "Enter end radius: ";
cin >> radEnd;
cout << "Radius Length Volume Area" << endl;
// for each radius, there will be lenStart to lenEnd calculations
int totalRows = (radEnd - radStart) * (lenEnd - lenStart);
for (int rows = 0; rows < totalRows; rows++) // iterate through all rows
{
// column iterator
for (int i = lenStart; i < (lenEnd - lenStart); i++)
{
float radius = radStart, length = lenStart;
// outputting each row
cout << radius << setprecision(2) << fixed << " "
<< length << " " << volCalc(pi,radius,length) << " "
<< surfCalc(pi,radius,length) << " " << endl;
radius++;
length++;
}
}
return 0;
}
float volCalc(float pi, float rad, float len)
{
return (pi*rad*rad*len);
}
float surfCalc(float pi, float rad, float len)
{
return (2.0f*pi*rad*len);
}
(P.S. Oui, cela fait partie du programme d'études que je suis en train d'apprendre. J'ai essayé de faire des recherches sur Stack Overflow, sur d'autres forums, et j'ai essayé de passer au crible un peu plus de documentation sur la boucle for, mais je n'arrive pas à trouver la solution).