Przykład 1
//*************************************************************************
// PROGRAM WYSZUKUJE LICZBY PIERWSZE Z PLIKU LICZBY.TXT
// - liczba pierwsza to taka, ktora ma tylko 2 podzielniki, czyli 1 oraz sama siebie
// - w pliku sa liczby calkowite dodatnie (w rozumieniu matematyki)
// - w petli for sprawdza czy liczba jest pierwsza czy zlozona
// - gdy pierwsza to zapisuje ja do pliku pierwsze.txt
//*************************************************************************
// UWAGA przypominam o sprawdzeniu pliku liczby.txt i poprawnym go zapisaniu - kursor ustawic -zeby nie bylo pustego wiersza bo zle wyniki
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int a; // zmienna na wczytana liczbe ze strumienia danych czyli z pliku
// poniewaz nie interesuja mnie cyfry tej liczby tylko wartosc liczby
// to deklaruje ja jako int
bool czy_pierwsza; // zmienna pomocnicza, taki wskaźnik,
// ktory przyjmuje wartosc prawda lub falsz
ifstream odczyt("liczby.txt"); // definicja obiektu odczyt z wywolaniem konstruktora
// i konstruktor otwiera plik do odczytu
ofstream zapis("pierwsze.txt"); // definicja obiektu zapis z wywolaniem konstruktora
// i konstruktor otwiera plik do zapisu
while(!odczyt.eof()) // dopóki nieprawda, ze natrafilismy na koniec pliku
{
odczyt>>a; // czyta pierwsza liczbe z pliku
czy_pierwsza = true; // ustawienie zmiennej pomocniczej na -prawda-
// jak zmieni się na -falsz- to wtedy jest zlozona
for (int i=2; i<a; i++) // ustawienie -i- na wartosc 2, bo sprawdzam
// czy 2 jest podzielnikiem tej odczytanej liczby
// zakres sprawdzania ustawilam na -i<a- bo nie ma sensu
// sprawdzać tego, czy liczba sama przez siebie jest podzielna
{
if (a%i==0) // dzielenie modulo (symbol %) jest tylko dla liczb calkowitych
{
czy_pierwsza = false; // jak -i- jest podzielnikiem tzn, że liczba jest zlożona,
// dlatego zmienna pomocnicza ma przyjac wartosc -false-
break; // przerywa sprawdzanie po napotkaniu pierwszego podzielnika
}
}
if (czy_pierwsza==true && a!=1) // sprawdzam, jaka wartosc po wyjsciu z petli for // ma zmienna czy_pierwsza
// eliminuje 1 bo nie jest ona liczba pierwsza a moze byc w pliku
// && jest to operator logicznego iloczynu
// zeby wykonal sie zapis to obydwa warunki musza byc spelnione
zapis<<a<<endl; // zapisuje wyszukana liczbe pierwsza do pliku
}
odczyt.close();
zapis.close();
return 0;
}
Przykład 2 - bazujący na Przykładzie 1
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int a;
bool czy_pierwsza;
int lp=0; // zmienna na ilosc liczb pierwszych zainicjowana wartoscia zero
int lz=0; // zmienna na ilosc liczb zlozonych zainicjowana wartoscia zero
ifstream odczyt("liczby.txt");
ofstream zapis("pierwsze_zlozone.txt");
while(!odczyt.eof())
{
odczyt>>a;
czy_pierwsza = true;
for (int i=2; i<a; i++)
{
if (a%i==0)
{
czy_pierwsza = false;
break;
}
}
if (czy_pierwsza==true && a!=1)
{
lp=lp+1; // jak pierwsza to ja zliczam
zapis<<a<<"- liczba pierwsza"<<endl;
}
if (czy_pierwsza==false)
{
lz=lz+1; // jak zlozona to ja zliczam
zapis <<a<<"- liczba zlozona"<<endl;
}
}
zapis<<"Liczb pierwszych jest "<<lp<<endl; // po sprawdzeniu wszystkich liczb z pliku
zapis<<"Liczb zlozonych jest "<<lz<<endl; // zapisuje ilosc pierwszych i zlozonych
odczyt.close();
zapis.close();
return 0;
}