Problem ze zliczeniem zapisanych w pliku wyrazów.

0

Witam! Program poniżej ma za zadanie wczytać z pliku "In0104.txt" przedział liczbowy, z danego przedziału wyznaczyć liczby pierwsze i zapisać je do pliku "Out0104.txt". Ponadto chciałbym, aby te wypisane wartości były zliczone, jednak motam się i motam, i mam problem z tą implementacją.

IN: 2 60
OUTPUT: liczby pierwsze

Kod programu:

#include <iostream>
#include <string>
#include <fstream>
#include<cstdlib>
#include<cstdio>
 
using namespace std;
 
int main(void)
{
    int a, b, liczba, k, i, j, l;
	int ilosc;
    
    //CZYTANIE Z PLIKU
    ifstream inputFile("In0104.txt");
    if (inputFile.is_open()) {
        inputFile >> i >> j;
        cout << "Wczytano przedzial liczbowy z pliku: " << endl;
        cout << i << ", " << j << endl;
        
        cout << "Liczby pierwsze z przedzialu od " << i << " do " << j << " to : ";
		//cout << " Ilosc liczb pierwszych z danego przedzialu: " << ilosc-1 << endl;
 
        //ZAPIS WYNIKÓW DO PLIKU:
        ofstream outputFile("Out0104.txt");
        if (outputFile.is_open()) {

		//Z TYM WHILE'em jest cos nie tak ?
		/*else
		{
			while(!feof(outputFile))
				{
					fgetc (outputFile);
					ilosc++;
				}*/
		}
                // Liczby pierwsze 
                for(a = 3; a <= j; a++)
				 {
					liczba = 1;
						for(b = 2; b < a; b++)
					{
						 if(a%b == 0)
                    {
                        liczba = 0;
                        break;
                    }
                }
                
                if(liczba == 1 && a < j)
				{ 
                    cout << a << ", "; 
                    outputFile << a << ", "; 
				} 
				
				else if (liczba == 1) 
				{ 
					cout << a; 
					outputFile << a; 
				}
            }          

        }
    }                          
 
0
#include <iostream>
#include <string>
#include <fstream>
#include<cstdlib>
#include<cstdio>

using namespace std;

int main(void)
{
    int a, b, liczba, k, i, j, l;
        int ilosc=0;

    //CZYTANIE Z PLIKU
    ifstream inputFile("In0104.txt");
    if (inputFile.is_open()) {
        inputFile >> i >> j;
        cout << "Wczytano przedzial liczbowy z pliku: " << endl;
        cout << i << ", " << j << endl;

        cout << "Liczby pierwsze z przedzialu od " << i << " do " << j << " to : ";
                //cout << " Ilosc liczb pierwszych z danego przedzialu: " << ilosc-1 << endl;

        //ZAPIS WYNIKÓW DO PLIKU:
        ofstream outputFile("Out0104.txt");
                // Liczby pierwsze
                for(a = 3; a <= j; a++)
                                 {
                                        liczba = 1;
                                                for(b = 2; b < a; b++)
                                        {
                                                 if(a%b == 0)
                    {
                        liczba = 0;
                        break;
                    }
                }

                if(liczba == 1 && a < j)
                                {
                    cout << a << ", ";
                    outputFile << a << ", ";
                    ilosc++;
                                }

                                else if (liczba == 1)
                                {
                                        cout << a;
                                        outputFile << a;
                                        ilosc++;
                                }
            }

        }
    cout << endl << "było "  << ilosc << " liczb pierwszych";
    }

    }
 

Starczyło wywalić zbędny kawałek i dodać 3 linijki, w tym 2 ilosc++; (zwiększa wartość ilość przy każdym wypisaniu) oraz wypisać wartość tej zmiennej na koniec

0

To chyba zadanie z matury z infy co nie?

Więc co wczytujesz ten swój przedział następnie w tym przedziale szukasz liczb pierwszych to chyba proste zadanie nawet możesz sobie zrobić głupią pętle:

bool testPierwszosci(spr_liczba)
{
for(int i=2;i<spr_liczba;i++)
{
if(spr_liczb % i == 0) //Nie pierwsza
return false;
}
return true;
}

i sobie zliczasz jakimś licznikiem liczbę wystąpień.

1 użytkowników online, w tym zalogowanych: 0, gości: 1