👤

Cunoscându-se limitele întregi a, b ale unui interval şi un şir de n valori, să se realizeze un program care determină media aritmetică a numerelor citite, pentru care suma cifrelor aparţine intervalului [a,b]. Exemplu: Pentru a=2, b=10, n=5 şi valorile 11,39,32,80,84 se va afişa 41.00.



CE E GRESIT IN PROGRAMUL MEU ??

#include
#include
using namespace std;

int main()
{
int n,a,b,i,nr,u,z,scif,k=0,S=0,knt=0;

cin>>a>>b>>n;
for(i=1; i<=n; i++)
{
cin>>nr;
u=nr%10;
z=nr/10;
scif=z+u;
knt++;
}
while(scif>=a && scif<=b)
{
S+=nr;
k++;
}
cout< return 0;
}


Răspuns :

Răspuns:

Partea asta trebuie sa apara in for, cu if nu cu while.

while(scif>=a && scif<=b)

{

S+=nr;

k++;

}

Partea aceasta pune in scif valoarea nr/10 + nr%10. Merge doar in cazul cu 1 sau 2 cifre.

u=nr%10;

z=nr/10;

scif=z+u;

Explicație:

#include <iostream>

#include <iomanip>

using namespace std;

int main()

{

int n,a,b,i,nr,u,z,scif,k=0,S=0;

cin>>a>>b>>n;

for(i=1; i<=n; i++)

{

 cin>>nr;

 scif = 0;

 z = nr;

 while(z){

  u=z%10;

  z=z/10;

  scif+=u;

 }

 if(scif >= a && scif <= b){

  S += nr;

  k++;

 }

}

if(k != 0)

 cout << fixed << setprecision(2) << static_cast<double>(S)/static_cast<double>(k);

else  cout << "NaN";

return 0;

}