Problem z poruszaniem się po pliku
Ostatnio zmodyfikowano 2014-02-20 20:02
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): #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? |
|
« 1 » |