Program obliczajacy srednia liczb parzystych, komenda while.

0

Witam, ponownie zadam moje pewnie błahe pytanie tym razem co do komendy while,
otóż uczę sie programowania z http://cpp.jcom.pl/lekcja6.php i za zadanie mam między innymi
"Napisz program pobierający liczby z klawiatury (zero kończy wpis) i obliczający średnią liczb parzystych."

#include <iostream>
#include <conio.h>
using namespace std;

int main()

{
    cout<<"Program obliczajacy srednia liczb parzystych"<<endl;
    cout<<"Podaj liczbe(zero konczy wpis) "<<endl;
    int n ,liczba;
    cin>>liczba;
    float wynik; 
    while(liczba%2==0 && liczba!=0)
    {
        cout<<"podaj liczbe"<<endl;
        cin>>liczba;
        n++;
        wynik=wynik+liczba/n;
    }
    cout<<"srednia wynosi "<<wynik<<""<<endl;
    getch();
}

Prosze o objaśnienie o robię źle.
Próbowałem już zmienic zmienną wyniku z float na int, podstawić na początku pod wynik 0, zmienic z wynik=wynik+liczba/n; na wynik==liczba/n; i kilka innych.

3

1.Pętla do..while byłaby adekwatniejsza w tym wypadku.
2.Wynik średniej powinien być liczony po wczytaniu wszystkich liczb, pod sam koniec: wynik = (float)liczba/n;
3.Nazwa zmiennej n nie mówi wiele - nazwanie jej ilosc_liczb byłoby lepsze.
4.Nigdzie nie ustawiasz n żadnej wartości - a na początku powinna być równa 0.

0

Masz czytać wszystkie liczby ale do sumy dodawac tylko parzyste.

0

zmienilem trochu kod i dalej jest problem srednią liczy mi 0

#include <iostream>
#include <conio.h>
using namespace std;

int main()

{
    float wynik; 
    int liczba;
    cout<<"Program obliczajacy srednia liczb parzystych"<<endl;
    cout<<"Podaj liczbe(zero konczy wpis) "<<endl;
    int n=0;
    cin>>liczba;
    do
    {
        cout<<"podaj liczbe"<<endl;
        cin>>liczba;
        n++;
    }while(liczba%2==0 && liczba!=0);
    wynik=liczba/n;
    cout<<"srednia wynosi "<<wynik<<""<<endl;
    getch();

}

próbowałem zmienić rodzaj zmiennej liczby z int na float ale wtedy wyskakiwał mi blad

invalid operands of types 'float' and 'int' to binary 'operator%'

wynik=liczba/n;

próbowałem umieścić to tez na koncu petli do.

0

1.wynik=(float)liczba/n;
2.Sumować masz jedynie liczby parzyste, a Twój program po napotkaniu liczby parzystej przestanie wczytywać dane.
3.Po co to cin>>liczba; przed pętlą?
4.Nigdzie nie sumujesz niczego, więc jak zamierzasz policzyć średnią?

0

1.yhm czyli ma być (float) w kodzie tak? myślałem ze mam zmienic zmienna int liczba; na float liczba,co to robi?
2.hmm czyli zamiastliczba%2==0 mam dac liczba%2!=0?
3.przeoczenie
4.wynik=wynik+liczba a na koncu wynik=wynik/n?

1

1.Jeżeli zmienisz liczba na float, nie będziesz mógł użyć operatora %.
Przecież podałem co masz napisać: wynik=(float)liczba/n;, przy czym wynik to float, a liczba oraz nint-ami - to float w nawiasie oznacza rzutowanie.
2.Programowanie przez permutacje jest złe - pomyśl!
Program ma sumować liczby parzyste, a pod koniec podzielić tę sumę przez ilość tych liczb - to będzie średnia arytmetyczna.
4.Poddaję się:

#include <iostream>
using namespace std;

int main()
{
  float wynik = 0; 
  int liczba;
  unsigned int n=0;

  cout<<"Program obliczajacy srednia liczb parzystych"<<endl;
  cout<<"Podaj liczby (zero konczy wpisywanie):"<<endl;

  while (true)
  {
    cin>>liczba;

    if (liczba == 0)
      break;

    if (liczba%2 == 0)
      n++, wynik += liczba;
  }

  if (n == 0)
    cout << "Nie podales odpowiednich liczb!"; else
  {
    wynik /= n;
    cout << "Srednia wynosi: " << wynik;
  }
  return 0;
}

Pisane z palca, ale powinno działać...

0
 #include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    float srednia, suma=0;
    int ilosc_liczb=0; 
    int liczba;

    cout<<"program obliczajacy srednia liczb parzystych (0 – konczy wpis): "<<endl;
    do
    {
        cout<<"Podaj liczbe: ";
        cin>>liczba;
        if (liczba%2!=0 && liczba!=0) // jesli liczba jest nieparzysta
        {
            cout<<"Podaj liczbe: ";
            cin>>liczba;
        }
        if (liczba!=0) //jesli liczba jest jakakolwiek liczba parzysta
        {
            suma=suma+liczba;
            ilosc_liczb++;
        }
    }   
    while(liczba!=0);
    srednia=suma/ilosc_liczb;
    cout<<"Srednia: "<<srednia;
    getch();
    return 0;
}

Jest to rozpisane bardziej po chłopsku, dla nowych.

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