» »

[C++] Harmonična sredina

[C++] Harmonična sredina

Ciklamen ::

Pozdrav fantje.

Delam eno vajo (ni vaja za šolo ali kar koli, zgolj za lasten gušt) in se mi je zataknilo pri enem delu, vbistvu najpomembnejšem, pa ga ne znam razrešit.

Stvar je takšna, navodilo: Izračunaj harmonično sredino vnesenih vrednosti uporabnika (čist posplošil sem navodilo).

Če se kdo ne spomni iz glave, kaj je harmonična vrsta, je obratno sorazmerna z aritmetično sredino (kar pomeni da so vrednosti pod ulomkom (1/1+1/2+1/3+1/4+1/5+...+1/n). V knjigi mi piše, da je har. sredina vrednosti 2,4 in 8 enaka 3.428571 (za izračun tega je tak: 1/((1/2+1/4+1/8)/3)). Zdaj ne vem, ali bi moral ustvarjati razne funkcije, da izračunam to, ampak po knjigi še do funkcij nismo prišli, zato verjamem da obstaja neka druga pot, ki je sam zaenkrat še ne najdem.

Anyways, tu je en snippet kode:

#include <iostream>
#include <exception>

int main() {
    try {
        double total(0.0);
        double value(0.0);
        double harSredina(0.0);
        int count(0);

        do {
            std::cout<<"Vnesite stevilo vrednosti: ";
            std::cin>>value;
            if(not std::cin) throw std::exception();
            harSredina=harSredina+1.0/value; //Tu bi bilo treba popraviti kodo, pa ne vem kako, če ima kdo kak namig
           // kako naj nadaljujem bi lepo prosil (še bolje bi bilo, da samo zapiše odgovor brez kode, da se sam namučim)
            if(value>99) break;
            count++;
        } while(true);    
        std::cout<<'\n';
        if(count!=0) std::cout<<"Aritmeticna sredina je: "<<harSredina*count<<'\n';
        else std::cout<<"NE SMEM DELITI Z 0! \n";
    }
    catch(...) {
        std::cerr<<"***Prislo je do napake!***\n";       
    }
    
    system("PAUSE");
    return 0;
}
- End of the Post ->
  • spremenil: Ciklamen ()

mallard ::

Se mi zdi, da si pomešal harmonično vrsto in harmonično sredino?

Harmonična vrsta: 1 + 1/2 + 1/3 + 1/4...
Harmonična sredina: H(a1, a2, ... an) = n / ( 1/a1 + 1/a2 + ... + 1/an )

Psevdokoda za harmonično sredino:
imenovalec = 0;
n = 0;

za vsak veljaven vnos integerja i && i > 0
{
    imenovalec += 1 / i;
    ++n;
}

if (n > 0)
    harmonična sredina = n / imenovalec

Ciklamen ::

Oh pa res, hvala da si me opozoril!

Sem sledil tvojemu nasvetu in sedaj deluje, hvala! :)
- End of the Post ->


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Matlab problem

Oddelek: Pomoč in nasveti
281435 (859) bluefish
»

C (Izračun povprečja)

Oddelek: Programiranje
141618 (1252) joze67
»

[java] problem z decimalkami

Oddelek: Programiranje
91591 (1265) NeOman
»

[C++] velikost matrike

Oddelek: Programiranje
191696 (1508) Jean-Paul
»

Problemi pri C++ programiranju...

Oddelek: Programiranje
363899 (3374) George

Več podobnih tem