Wyznaczanie wartości największej oraz najmniejszej

0

Witam, mam za zadanie napisać program obliczajacy sumę, iloczyn, średnią arytmetyczną oraz wartość największą i najmniejszą, Poniższy program dodaj liczby natomiast nie zgadzadzają mi się wyniki z mnożenia oraz ze średniej, nie również jak wyznaczyć największą wartość oraz najmniejszą.

#include <iostream>
#include<math.h>>

using namespace std;
int main()
{
  int ile=0;
       int suma=0;
       int iloczyn=0;
      double srednia;
    int liczba;
    char wybor='t';
    do
    {
    cout<<"podaj liczbe"<<endl;
    cin>>liczba;

if(liczba%3==0)
{

    suma+=liczba;
    iloczyn*=liczba;
    ile++;
srednia=suma/ile;
}
    cout<<"czy chesz wczytac kolejna liczbe"<<endl;
    cin>>wybor;

}while(wybor=='t');
cout<<"suma  "<<suma<<endl;
cout<<"iloczyn "<<iloczyn<<endl;
cout<<"srednia wynosi"<<ile<<endl;
}

 
1

Po pierwsze, obsługujesz wyłącznie liczby podzielne przez trzy.

Po drugie przemnażasz pierwszą wartość zmiennej iloczyn przez kolejne podane wartości. Ile jest 0*cokolwiek? Podpowiem: zero.

Po trzecie, aby policzyć średnią bez reszty potrzebujesz aby co najmniej jedna z liczb była zmiennoprzecinkowa, więc np. srednia=(double)suma/ile;

Po czwarte, liczenie średniej wyrzuć poza pętlę, nie ma potrzeby liczenia tego wewnątrz.

Po piąte: #include<math.h>> - błąd kompilacji.

0
 #include <iostream>
#include<math.h>>

using namespace std;
int main()
{
  int ile=0;
       double suma=0;
       int iloczyn;
      double srednia;
    int liczba;
    char wybor='t';
    do
    {
    cout<<"podaj liczbe"<<endl;
    cin>>liczba;

if(liczba%3==0)
{

    suma+=liczba;
    iloczyn*=liczba;
    ile++;

}
    cout<<"czy chesz wczytac kolejna liczbe"<<endl;
    cin>>wybor;

}while(wybor=='t');
srednia=suma/ile;
cout<<"suma  "<<suma<<endl;
cout<<"iloczyn "<<iloczyn<<endl;

cout<<"srednia wynosi"<<ile<<endl;
}

Średnia nadal się nie zgadza i wartość z mnożenia również

1

Nie ustawiasz wartości początkowej iloczynu. W jaki sposób w/g Ciebie to działa?

0

Nie ustawiłam wartości początkowej iloczynu, a program ma wyznaczyć iloczyn wprowadzonych liczn

2

Ale musisz ustawić jakąś wartość początkową.

int iloczyn;

Teraz iloczyn ma wartość jakąkolwiek.

Pierwszy obieg pętli:

iloczyn*=liczba;

Czyli iloczyn = iloczyn * liczba, czyli iloczyn = COKOLWIEK * liczba. Jak to ma działać? Oczywiście wartością początkową musi być liczba neutralna dla mnożenia tj. 1.

Po co jest ten if?

0

Ok wszystko już działa, tylko zastanawiam się nad wyznaczeniem wartości max i min.

0
#include <iostream>
#include <cmath> 
using namespace std;

int main()
  {
   while(true)
     {
      unsigned count=0;
      double sum=0,min=0,max=0;
      while(true)
        {
         cout<<"\rPodaj liczbe nr "<<(count+1)<<" lub znak wykrzyknika aby zakonczyc wprowadzenie: ";
         double V;
         if(cin>>V)
           {
            if(count)
              {
               sum+=V;
               if(min>V) min=V;
               else if(max<V) max=V;
              }
            else sum=min=max=V;
            ++count;
           }
         else
           {
            cin.clear();
            if(cin.get()=='!') break;
            cout<<"Blad wprowadzenia"<<endl<<endl;
           }
         while(cin.get()!='\n') {}
        }
      if(!count) break;
      cout<<endl<<"Ilosc "<<count<<endl<<"Min "<<min<<endl<<"Max "<<max<<endl<<"Suma "<<sum<<endl<<"Srednia "<<sum/count<<endl;
     }
   return 0;
  }

http://ideone.com/5A67HI

1 użytkowników online, w tym zalogowanych: 0, gości: 1