Lost Password?

Go Back   CodeCall Programming Forum > Software Development > C and C++

Unregistered, Check out the Coder Battles in the Announcement and Game forums.

C and C++ C and C++ forum for discussing all forms of C except for C#. These languages are powerful low level languages used for creating Operating Systems, Device Drivers, compilers and much more.

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 05-14-2007, 07:11 PM
Murph-s Murph-s is offline
Newbie
 
Join Date: May 2007
Posts: 1
Credits: 0
Rep Power: 0
Murph-s is on a distinguished road
Default Weird problem with code, functions when not suppose to

I am working on a C++ program for my programming 1 class and the instructor said for the swap function that int "a" and "b" should be structs but however when ran through bloodshed the program completes the intended results of the program with no problem or errors.

The program is suppose to accept a chosen txt file, asks the user if they would like to sort the information by age from the struct, asks them their desirable output file and then writes it to that file in order by age from least to greatest along with the people's general info.

My teacher and I are confused about how this can possibly work and if someone gives us a detailed explantaion pertaining to how this can be possible so that we may pass it on to the other programmers in our class it will be greatly apreceated. Thanks for all your efforts!

The people program will be placed at the bottom, which should be saved as a txt file in your own notepad so that you may see that this works without the structs in the swap function.



/* Program - 19
Asks user which txt file they whish to choose,
open and reads that file and stores,
Asks the user if they would like to order the information by age,
if yes, orders by age, asks the user which txt file they whish to write to,
transfers data to the desired file.
Shane Murphy, 3/19/07 */

Code:
#include <vector>
#include <cctype>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <string>
#include <fstream>
using namespace std;

struct peopleDocument
{
    string firstName;
	string lastName;
	string address;
	string city;
	string state;
	int zipCode;
    string socialSecurity;
	int age;
};//the lines from the txt file is declared in a struct

void openFile(ifstream &infile);
void readfile(istream &infile, vector<peopleDocument> &people);
int openFile(ofstream &outfile);
int sequentialSearch(ofstream &outfile, vector<peopleDocument> &people, string
ssnumber);
int printall(ostream &outfile, vector<peopleDocument> &people);
int printone(ostream &outfile, vector<peopleDocument> &people, int y);
int closeFile(ifstream &infile);
int closeFile(ofstream &outfile);
void swap(int & a, int & b);
int sequentialSearch (const vector<peopleDocument> & people, int low, int high);
void selectionSort(vector<peopleDocument> & names);


int main()//beginning of main
{

    
	vector<peopleDocument>people(1);
	char answer = ' ';
	char goAgain = ' ';

   
    string ssnumber = "";
	ifstream infile;
	ofstream outfile;
	openFile(infile);
	readfile(infile, people);
    
    
    cout<<"Do you want to sort them by age? (y/n)";
    cin>>answer;
    
    if (answer == 'y')
    {
       do
      {     
            
       selectionSort(people);
       
       openFile(outfile);
       printall(outfile, people);
      
       cout<<"\n...completed!"<<endl;
       cout<<endl;
      
       closeFile(infile);
       closeFile(outfile);
      
   	   cout << "Would you like to go again? ";
       cin >> goAgain;
       system("cls"); //clears screen//
        
      } while (goAgain!='n');//Ends do while loop//
      
    }
    
         
         cout<<"\nGood-bye!";
         cout<<endl;
         
         closeFile(infile);
         closeFile(outfile); 
         
         system("pause");
   
   	//sequentialSearch(cout, people, ssnumber)


	return 0;
}//end of main

//Pre:takes in ifstream infile
//Post:
//Descrip:Opens the users desired file from the path
void openFile(ifstream &infile)
{

     string filename="";
     vector<peopleDocument>people(1);


	 cout<<"Please enter the name of an input file: ";
	 cin>>filename;


	 string path="C:\\Documents and Settings\\MurpJ2\\My
Documents\\Programming1\\People programs\\";
	 path += filename;

     infile.open(path.c_str());

}//end of openfile

//Pre:takes in ifstream infile and the vector
//Post:
//Descrip:Reads the data from the file and stores in a struct
void readfile(istream &infile, vector<peopleDocument> &people)
{
  int y=0;
  while(getline(infile,people[y].firstName))
  {

	   getline(infile,people[y].lastName);
	   getline(infile,people[y].address);
	   getline(infile,people[y].city);
       getline(infile,people[y].state);

       infile>>(people[y]).zipCode;
       infile.get();

       getline(infile,people[y].socialSecurity);

       infile>>(people[y]).age;
       infile.get();

       y++;

       people.resize(y+1);

   }

   people.resize(y);


}//end of readfile

//Pre:takes in ofstream outfile
//Post:
//Descrip:Opens the user's desired output file
int openFile(ofstream &outfile)
{
     string filename="";
	 cout<<"Please enter the name of an output file: ";
	 cin>>filename;

	 string path="C:\\Documents and Settings\\MurpJ2\\My
Documents\\Programming1\\People programs\\";
	 path += filename;

     outfile.open(path.c_str());


}//end of openoutputfile

//Pre:takes in ofstream outfile and the vector
//Post:prints all of the information from the function printone to the output
file
//Descrip:Prints all of the data stored form the struct into the desired output
file
int printall(ostream &outfile, vector<peopleDocument> &people)
{
    for(int x=0; x<people.size(); x++)
    {
         printone(outfile, people, x);

    }//end of for loop

}//end of printall function

//Pre:takes in ofstream outfile and the vector
//Post:finds the social security number the user is looking for
//Descrip:Asks the user which social security number they would like to find
finds the social security number the user is looking for an dprints the
information to the screen
int sequentialSearch(ostream &outfile, vector<peopleDocument> &people, string
ssnumber)
{

    bool found = false;

    cout<<"Please enter the social security # you wish to search for: ";
	cin>>ssnumber;
    cout<<endl;



      for(int x=0; x<people.size(); x++)
    {


       if(people[x].socialSecurity == ssnumber)
       {

         printone(outfile, people, x);
         found = true;
         break;


       }



    }//end of for loop

    if(!found)
    {
            cout<<"\nThis is not a valid entry";
            cout<<endl;
            sequentialSearch(cout, people, ssnumber);

    }




}

//Pre:takes in ofstream outfile, the vector and the counter
//Post:prints one set of the data from the struct
//Descrip:Prints one set of the data stored form the struct that will be used by
print all
int printone(ostream &outfile, vector<peopleDocument> &people, int y)
{

       outfile<<people[y].firstName;
	      outfile<<"\n";
       outfile<<people[y].lastName;
       	  outfile<<"\n";
	   outfile<<people[y].address;
	   	  outfile<<"\n";
	   outfile<<people[y].city;
       	  outfile<<"\n";
       outfile<<people[y].state;
       	  outfile<<"\n";
       outfile<<people[y].zipCode;
       	  outfile<<"\n";
       outfile<<people[y].socialSecurity;
     	  outfile<<"\n";
       outfile<<people[y].age;
       	  outfile<<"\n";
}//end of printone function

int closeFile(ifstream &infile)
{

    infile.close();//closes the input file

}//end of closeFile

int closeFile(ofstream &outfile)
{

    outfile.close();//closes the output file

}//end of closeFile


//Pre:takes in the vector
//Post:the ordered vector by the age connected with the rest of their info
//Descrip:Orders vector by the age connected with the rest of their info
void selectionSort(vector<peopleDocument> & people)
{
	int  index = 0;

	for (int i = 0; i < people.size()-1; i++)
	{
        
		index = sequentialSearch(people, i, people.size()-1);
		swap(people[i], people[index]);
        
	}
}

//Pre:takes in int a and b
//Post:the two decided ages are switched 
//Descrip:Changes defined ages
void swap(int & a, int & b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
}

//Pre:takes in the vector and int low and high
//Post:the age next and the lowest one it found after that in line in the vector
//Descrip:The next age in line in the vector is selected then it looks through
the rest of the ages and finds and selects the lowest number 
int sequentialSearch (const vector<peopleDocument> & people, int low, int high)
{
	int ind = low;
	
	for (int i = low+1; i <=high; i++)
	{
		if (people[i].age < people[ind].age)
			ind = i;
	}
	return ind;
}


Here is the people.txt file as requested in the program.


Miguel
Hildalgo
8904 Merrill Ln 102
Laurel
MD
20878
123-43-7564
18
Antwon
LeVay
8538 Southlawn Court
Alexandria
VA
22309
235-67-4543
46
William
Wallace
7205 Rollingwood Dr
Chevy Case
MD
20815
235-23-4135
67
Charles
Absher
4119 Military Rd NW
Washington
DC
20015
123-56-3457
34
Deborah
Aceto
5211 Trailway Dr.
Rockville
MD
20853
112-35-813
19
William
Aceto
5211 Trailway Dr
Rockville
MD
20853
123-98-3453
21
Niccolo
Machiavelli
6389 Pageland Lane
Gainesville
VA
20155

Last edited by Murph-s; 05-14-2007 at 07:26 PM.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Sponsored Links
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Basic Calculator AfTriX VB Tutorials 3 02-29-2008 08:53 AM
Please Help With A C Program!! siren C and C++ 7 04-17-2007 08:45 AM
null exception problem connor7777 C# Programming 2 03-28-2007 11:37 AM
HTML table vertical aligning problem Carrym HTML Programming 2 03-22-2007 10:04 PM


All times are GMT -5. The time now is 11:35 PM.

Contest Stats

Xav ........ 1276.19
MeTh0Dz|Reb0rn ........ 1048.58
marwex89 ........ 869.98
John ........ 868.39
morefood2001 ........ 868.04
WingedPanther ........ 761.06
Brandon W ........ 684.87
chili5 ........ 294.12
Steve.L ........ 216.18
dargueta ........ 192.86

Contest Rules

CodeCall Goal

Goal: 100,000 Posts
Complete: 81%

Ads