Pomocy!

dział ogólny

Pomocy!

Nowy postprzez motywator » niedziela, 19 grudnia 2010, 12:42

Zad 1
Wczytywać ciąg liczb całkowitych niezerowych (czyli dodatnich lub ujemnych) aż do napotkania
zera. Wydrukować informację, ile razy wczytano po sobie dwie takie same liczby oraz średnią
arytmetyczną liczb dwucyfrowych (nie dopuścić do dzielenia przez zero).
Uwaga: Zadanie rozwiązać bez użycia tablic.

Mam problem z tym zadaniem, wszystko działa oprócz tego, że nie mam pojęcia co zrobić aby po podaniu jako pierwszej liczby liczby dwucyfrowej przy podawaniu później kolejnych liczb dwucyfrowych ta pierwsza również wliczała się do średniej arytmetycznej wszystkich podanych liczb dwucyfrowych.
Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>
using namespace std;

int main(int argc, char *argv[])
{



    int liczba;
    int schowek1;
    int schowek2;
    int schowek3;
    double l_powt=0;
    int suma=0;
    double s_arytm;
    int l_dwu=0;

    cout << "Program wczytujacy ciag liczb calkowitych, az do momentu wpisania zera, podaj dowolna ilosc liczb calkowitych\n";

    do
    {

        cin >> liczba;
        if (liczba<10 || liczba>99)
        {
            if (schowek1==liczba)
            {
                l_powt = l_powt +1;
                cout <<"Dwie takie same liczby calkowiet wystapily po sobie " << l_powt << endl;
            }
        }
        else
        {

              if(l_dwu>0)
              {

                  suma=schowek2+liczba;
                  s_arytm=suma/l_dwu;
                  cout << "Srednia arytmetyczna liczb calkowitych dwucyfrowych wynosi " << s_arytm << endl;
              }
              else
              {


                 cout << "Srednia arytmetyczna liczb calkowitych dwucyfrowych wynosi " << liczba << endl;

              }
              l_dwu=l_dwu+1;

        }
    schowek1=liczba;
    schowek2=suma;
    }
    while (liczba !=0);


    return 0;
}




Pomocy!
Avatar użytkownika
motywator
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): niedziela, 19 grudnia 2010, 12:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Winows Vista
Kompilator: Code::Blocks
Gadu Gadu: 0
    Windows VistaChrome

Re: Pomocy!

Nowy postprzez polymorphism » niedziela, 19 grudnia 2010, 14:02

Dlaczego to wszystko jest w pętli?
KOD cpp:     UKRYJ  
int liczba;
int poprzednia = 0;
int l_powt = 0;
int l_dwu = 0;
int suma = 0;
       
while(cin >> liczba && liczba != 0)
{
        if(liczba == poprzednia) ++l_powt;
               
        if(liczba > 9 && liczba < 100)
        {
                suma += liczba;
                ++l_dwu;
        }
               
        poprzednia = liczba;
}

/* tu liczysz średnią i wypisujesz komunikaty */
 
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
motywator
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Pomocy!

Nowy postprzez MisticFrezer » niedziela, 19 grudnia 2010, 14:05

Powinieneś liczbę ze schowka tez uwzględnić. Zmiany głownie w bloku else
Kod: Zaznacz cały
        int main(int argc, char *argv[])
{
   int liczba;
   int schowek1;
   double l_powt=0;
    int suma=0;
   double s_arytm;
   int l_dwu=0;

   cout << "Program wczytujacy ciag liczb calkowitych, az do momentu wpisania zera, podaj dowolna ilosc liczb calkowitych\n";

   do
   {

      cin >> liczba;

      if (liczba<10 || liczba>99)
      {
         if (schowek1==liczba )
         {
            l_powt = l_powt +1;
            cout <<"Dwie takie same liczby calkowiet wystapily po sobie " << l_powt << endl;
         }
         schowek1=liczba;
      }
      else
      {
           schowek1=liczba;
           l_dwu=l_dwu+1;

           if(l_dwu>0)
           {
              suma+=liczba;
              s_arytm=suma/l_dwu;
              cout << "Srednia arytmetyczna liczb calkowitych dwucyfrowych wynosi " << (float)s_arytm << endl;
           }
      }
   }
   while (liczba !=0);

   return 0;
}
.

double schowek2 jest niepotrzebne. Aha, czy info o średniej ma się pokazywać za każdym razem?
Ostatnio edytowano niedziela, 19 grudnia 2010, 14:11 przez MisticFrezer, łącznie edytowano 1 raz

Za ten post autor MisticFrezer otrzymał podziękowanie od:
motywator
Avatar użytkownika
MisticFrezer
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): wtorek, 23 lutego 2010, 23:57
Lokalizacja: Wrocław
Podziękował : 1
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP3, Windows 7 Pro
Kompilator: BCB6, RAD Studio 2010, VS 2010
Gadu Gadu: 0
    Windows 7Opera

Re: Pomocy!

Nowy postprzez motywator » niedziela, 19 grudnia 2010, 14:10

Tak, ma się pojawiać za każdym razem.

Dzięki za pomoc :)
Avatar użytkownika
motywator
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): niedziela, 19 grudnia 2010, 12:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Winows Vista
Kompilator: Code::Blocks
Gadu Gadu: 0
    Windows VistaChrome


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 6 gości