Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++]Ciągi

Ostatnio zmodyfikowano 2015-05-23 16:45
Autor Wiadomość
chinczyk
Temat założony przez niniejszego użytkownika
[C++]Ciągi
» 2015-05-23 13:35:09
Nie mam pomysłu jak zrobić funkcje która sprawdzi mi po kolei czy wszystkie wyrazy ciągu są geometryczne czy nie. Mój program sprawdza czy pierwsze wyrazu ciągu są okej później lipa. Nie wiem jak mam to zrobić proszę o pomoc.

Podaje kawałek kodu. Licznik jest to liczba tablic, czyli inaczej ilość podanych liczb przez użytkownika.

C/C++
if( licznik > 3 )
{
   
    double q;
    q = 1.0 * liczba[ 1 ] / liczba[ 0 ];
   
   
    for( int i = 1; i < licznik - 1; i++ )
    {
        if( liczba[ i + 1 ] / liczba[ i ] != q )
        {
            cout << "Podany ciag nie jest geometryczny" "\n";
            return true;
            return false;
        }
        else
        {
           
            cout << "Podany ciag jest geometryczny" "\n";
        }
    }
   
   
}
else
{
    cout << "Ciag geometryczny: brak danych" << "\n";
}
P-132659
pekfos
» 2015-05-23 13:56:07
Nie porównuj dwóch liczb double przez ==. Zamiast tego powinno to wyglądać mniej więcej tak:
C/C++
std::abs( liczba[ i + 1 ] / liczba[ i ] - q ) < 0.0001
Im mniejsza stała, tym dokładniejsze sprawdzenie, przy czym pamiętaj o ograniczonej precyzji liczb. Jeśli tablica liczba[] nie zawiera liczb zmiennoprzecinkowych, musisz dodatkowo rzutować na double, choćby i przez przemnożenie razy 1.0, jak masz wcześniej w kodzie.
P-132660
chinczyk
Temat założony przez niniejszego użytkownika
» 2015-05-23 14:39:20
Powiem szczerze że dopiero zaczynam z c++ i nie za bardzo Cię zrozumiałem ale rozkminiłem takie coś i działa :

C/C++
double q;
q = 1.0 * liczba[ 1 ] / liczba[ 0 ];
int h = 0;

for( int i = 0; i < licznik - 1; i++ )
{
    if( liczba[ i + 1 ] ==( liczba[ i ] * q ) )
         h++;
   
}
if( h == licznik - 2 )
{
   
    cout << "Ciag jest geometryczny" << endl;
}
if( h != licznik - 2 )
{
    cout << "Ciag nie jest geometryczny" << endl;
}
P-132663
chinczyk
Temat założony przez niniejszego użytkownika
» 2015-05-23 16:45:28
Kolejny mój problem to program musi znaleźć miejsce i wielkość ilorazu największej bezwzglednej. Inaczej wpisuje użytkownik liczby 1 2 3 4 4 2 -5 -3. Najwieksza bezwzgledna w tym programie to |-5/2|=2,5.
P-132665
« 1 »
  Strona 1 z 1