This forum is for all the topics that don't fit anywhere else. Post anything from Hello's to Web Links.
 #41102  by FlapJack23
 
I'm having problems with a C++ program I'm writing.
Basically, I need to get a line from one file, loop through another file, and repeat until the end of the first file.
The problem is that it's not looping through the whole first file, just one line.

Here's the code:
Code: Select all
#include <fstream>
#include <iostream>


using namespace std;

int list() {
    
    ofstream fout("primes.txt");
    
    int i, j;
 
    int numbers = 200;
 
    for ( i = 2; i < numbers; i++ ){
        for ( j = 2; j <= i/2; j++ ){
            if ( ! ( i % j ) ) break;
        }
        if ( j > i / 2 ) fout << i << endl;
    }
 
    return 0;
 
	fout.close();
}

int factor(){
    
	ifstream ifcopy("primes.txt", std::ios::binary);
	ofstream ofcopy("primes2.txt", std::ios::binary);

	ofcopy << ifcopy.rdbuf();

	ofcopy.close();
	ifcopy.close();

    ofstream fout("factors.txt");
    ifstream fin2("primes2.txt");
	ifstream fin("primes.txt");

    long double prime1;
    long double prime2;
    long double composite;
        
    fin2 >> prime1; 
	fin >> prime2;

     while (!fin2.eof()){
          while (!fin.eof()){
                composite = prime1 * prime2;
          
                fout << "INSERT INTO factor (composite, prime1, prime2) VALUES ( " << composite << ", " << prime1 << ", " << prime2 << ")" << endl;
                
                fin >> prime2;
          }	

          fin2 >> prime1;
     }

	 fout.close();
	 fin.close();
	 fin2.close();

	 return 0;
}

int main(){
    
    cout << "RSA Tables -- v -0.1 -- Written By Flapjack\n\n\n";
    
    cout << "GENERATING PRIMES...\n";
    list();
    cout << "LIST OF PRIMES GENERATED.\n";

    cout << "CREATING TABLE...\n";
    factor();
    cout << "TABLE CREATED.\n";
    
    cout << "RSA TABLE CREATED.\n";
    
    return 0;
    
}
And here's what I think is the problem spot:
Code: Select all
while (!fin2.eof()){
          while (!fin.eof()){
                composite = prime1 * prime2;
          
                fout << "INSERT INTO factor (composite, prime1, prime2) VALUES ( " << composite << ", " << prime1 << ", " << prime2 << ")" << endl;
                
                fin >> prime2;
          }	

          fin2 >> prime1;
     }
[/code]

 #41103  by jawfin
 
i found ur problem, i mean look at that gramma its all semicolons and curly brackets, how can anyone read it, and wots with only 1 word in a sentance then u make a new line??!?
seriosuly tho, can u provide those text files so i can run it? coz i coulnt be bothered to write my own.

 #41104  by FlapJack23
 
Sure

factors.txt:
Code: Select all
INSERT INTO factor (composite, prime1, prime2) VALUES ( 4, 2, 2)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 6, 2, 3)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 10, 2, 5)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 14, 2, 7)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 22, 2, 11)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 26, 2, 13)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 34, 2, 17)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 38, 2, 19)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 46, 2, 23)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 58, 2, 29)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 62, 2, 31)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 74, 2, 37)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 82, 2, 41)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 86, 2, 43)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 94, 2, 47)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 106, 2, 53)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 118, 2, 59)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 122, 2, 61)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 134, 2, 67)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 142, 2, 71)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 146, 2, 73)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 158, 2, 79)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 166, 2, 83)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 178, 2, 89)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 194, 2, 97)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 202, 2, 101)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 206, 2, 103)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 214, 2, 107)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 218, 2, 109)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 226, 2, 113)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 254, 2, 127)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 262, 2, 131)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 274, 2, 137)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 278, 2, 139)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 298, 2, 149)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 302, 2, 151)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 314, 2, 157)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 326, 2, 163)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 334, 2, 167)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 346, 2, 173)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 358, 2, 179)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 362, 2, 181)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 382, 2, 191)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 386, 2, 193)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 394, 2, 197)
INSERT INTO factor (composite, prime1, prime2) VALUES ( 398, 2, 199)
primes.txt, which is the same thing as primes2.txt:
Code: Select all
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199

 #41109  by jawfin
 
Fixed
Code: Select all
     while (!fin2.eof())
     { 
          while (!fin.eof())
          { 
                composite = prime1 * prime2;           
                fout << "INSERT INTO factor (composite, prime1, prime2) VALUES ( " << composite << ", " << prime1 << ", " << prime2 << ")" << endl;                 
                fin >> prime2; 
          }    
          fin2 >> prime1; 
          fin.clear();      //JB: Reset file to bof
          fin.seekg(0);     //JB:
          fin >> prime2;    //JB: Also, prime this variable (excuse the pun!)
     } 
You needed to reset the inner loop file.

 #41124  by Richard
 
Jawfin wrote:i found ur problem, i mean look at that gramma its all semicolons and curly brackets, how can anyone read it, and wots with only 1 word in a sentance then u make a new line??!?
seriosuly tho, can u provide those text files so i can run it? coz i coulnt be bothered to write my own.
Dunno It makes a bit more sense than some of the Acronyms and phrases I see on here :? :wink:

 #41127  by FlapJack23
 
Thanks a bundle!