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

Problem z poruszaniem się po pliku

Ostatnio zmodyfikowano 2014-02-20 20:02
Autor Wiadomość
szymon2432
Temat założony przez niniejszego użytkownika
Problem z poruszaniem się po pliku
» 2014-02-20 20:02:39
Tak więc mam problem z programem, który miał sprawdzać czy 2 liczby są sąsiednie (Liczbę nazywamy sąsiednią jeżeli jest pierwsza, a liczba o 2 większa lub o 2 mniejsza od niej też jest pierwsza):
C/C++
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

bool pierwsza( int n );



int wynik( int a )
{
    int i = 0;
    ifstream licz( "dane.txt" );
    int n;
    if( pierwsza( a ) )
    {
        while( licz.good() )
        {
            licz >> n;
            if( pierwsza( n ) )
            {
                if(( a == n + 2 ) ||( a == n - 2 ) )
                {
                    i++;
                }
            }
        }
    }
    return i;
}

bool pierwsza( int n )
{
    if( n < 2 )
    {
        return false;
    }
    int p = 2;
    while( n % p != 0 )
    {
        p++;
    }
    if( n == p )
    {
        return true;
    }
    else
    {
        return false;
    }
}

int main()
{
    int l, m;
    l = 0;
   
    ifstream liczby( "dane.txt" );
    int x;
    if( liczby.is_open() )
    {
        while( liczby.good() )
        {
            liczby >> x;
            l += wynik( x );
        }
    }
   
   
   
    cout << "liczb sasiednich  mamy " << l;
    return 0;
}
Problem polega na tym, że dla danych liczb 2,3,5,17,19 program zwraca liczbę 4, a powinien zwracać 8 ( wiem, powinno być 5, a na końcu (l/2)-1, ale nie o to chodzi) po przeanalizowaniu, stwierdziłem, że program sprawdza czy liczby są sąsiednie, tylko dla liczb, które są "pod" sprawdzaną liczbą w pliku dane.txt, ktoś pomoże?
P-105028
« 1 »
  Strona 1 z 1