Archive

Archive for January, 2010

C++ Program to implement File Handling with Command Line Arguments – Q31

January 31, 2010 Leave a comment

Q31. Program to implement File Handling with Command Line Arguments:

Copy the contents of an existing file to a new file the names of which are taken as command line arguments. The program should handle errors if the given first file name does not already exist.

… from College notes (BCA/MCA assignments):

#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
#include <string.h>
#include <conio.h>

void main(int argc, char *argv[]){
	char src[12], dest[12];
	char buff[1000];
	int len;
	clrscr();

	if(argc > 3){
		cout<<"\n Illegal Number of Arguments."<<endl;
		exit(1);
		}
	else if(argc == 2){
		cout<<"\n Enter the Destination File."<<endl;
		cin>>dest;
		}
	else if(argc == 1){
		cout<<"\n Enter Source and Destination File."<<endl;
		cin>>src;
		cin>>dest;
		}
	else{
		strcpy(src, argv[1]);
		strcpy(dest, argv[2]);
		}

	ifstream fin;
	fin.open(src, ios::in);

	if(!fin){
		cerr<<"\n File Does not Exist.";
		getch();
		exit(1);
		}
	fin.read((char*)&buff, sizeof(buff));
	fin.close();

	len = strlen(buff) - 1;

	ofstream fout;
	fout.open(dest, ios::out);
	fout.write((char*)&buff, len);
	fout.close();

	cout<<"\n File copied Successfully.";

	getch();
	}

 

Output:

C:\TC\MANOJ>31_FH.exe man.txt abc.txt

File Copied Successfully.


C++ Program to implement File Handling by using ifstream & ofstream (Prg-2) – Q30

January 30, 2010 Leave a comment

Q30. Program to implement Function Overloading:

Write a paragraph (Atleast 2 lines of sentences) in a file. Read the same file in three different ways –
  i) Reverse the whole paragraph.
 ii) Line by Line Reverse the whole para.
iii) Break the pragraph int two equal halves. Reverse the second half of the pargaraph.

… from College notes (BCA/MCA assignments):

#include <string.h>
#include <fstream.h>
#include <conio.h>

void main(){
	char para[500], ln[80];
	int len, i, half;
	clrscr();

	cout<<"\n Enter a Paragraph (Quit by ^Z):-";
	cout<<"\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
	cin.getline(para, 500, '^Z');
	len = strlen(para);

	ofstream fout;
	fout.open("para.txt", ios::out);
	fout.write((char *) &para, len);
	fout.close();

	ifstream fin;
	cout<<"\n Reverse the Whole Paragraph:-";
	cout<<"\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~";
	fin.open("para.txt", ios::in);
	fin.read((char *) &para, sizeof(para));
	len = strlen(para);
	for(i=len; i>=0; i--)
		cout<<para[i];
	fin.close();
	getch();

	cout<<"\n Line by line Reverse the Whole Paragraph:-";
	cout<<"\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
	fin.open("para.txt", ios::in);
	while(fin){
		fin.getline(ln, 80);
		len = strlen(ln);
		for(i=len; i>=0; i--)
			cout<<ln[i];
		cout<<endl;
		}
	fin.close();
	getch();

	cout<<"\n Breaking The Para Into 2 halves and Reversing the 2nd Para:-";
	cout<<"\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
	fin.open("para.txt", ios::in);
	fin.read((char *) &para, sizeof(para));
	len = strlen(para);
	half = len / 2;
	for(i=0; i<=half; i++)
		cout<<para[i];
	for(i=len; i>half; i--)
		cout<<para[i];
	fin.close();
	getch();
	}

 

Output:

Enter a Paragraph (Quit by ^Z):-

My name is Manoj Pandey.
I study in APEEJAY Institute.
I’m Doing MCA from there.
I live in Dwarka Sec. 6.
^Z

Reverse the Whole Paragraph:-

.6 .ceS akrawD ni evil I
.ereht morf ACM gnioD m’I
.etutitsnI YAJEEPA ni yduts I
.yednaP jonaM si eman yM

Line by line Reverse the Whole Paragraph:-

.yednaP jonaM si eman yM
.etutitsnI YAJEEPA ni yduts I
.ereht morf ACM gnioD m’I
.6 .ceS akrawD ni evil I

Breaking The Para Into 2 halves and Reversing the 2nd Para:-

My name is Manoj Pandey.
I study in APEEJAY Institute.
.6 .ceS akrawD ni evil I
.ereht morf ACM gnioD m’I


C++ Program to implement File Handling by using ifstream & ofstream (Prg-1) – Q29

January 29, 2010 Leave a comment

Q29. Program to implement File Handling by using ifstream & ofstream:

Get the Rollno, Names and Marks Obtained of N students. The data should be stored in “RESULT” data file.
Use the same file to print the result along with aggregate percentage for all the students.

… from College notes (BCA/MCA assignments):

#include <iostream.h>
#include <fstream.h>
#include <conio.h>

class Cstud{
	private:
		char name[10];
		int roll, marks;
	public:
		void getdata();
		void putdata();
		int calc() const;
	};

void Cstud :: getdata(){
	cout<<"\n Enter Name: ";
	cin>>name;
	cout<<"\n Enter Roll No: ";
	cin>>roll;
	cout<<"\n Enter Marks: ";
	cin>>marks;
	}

int Cstud :: calc() const{
	return marks;
	}

void Cstud :: putdata(){
	cout<<"\n Name: "<<name;
	cout<<"\n Roll No: "<<roll;
	cout<<"\n Marks: "<<marks;
	}

void main(){
	int n, tot, avg;
	Cstud Ostu1, Ostu2;
	clrscr();
	cout<<"\n How many Students: ";
	cin>>n;
	ofstream fout;
	fout.open("result.txt", ios::out);
	for(int i=0; i<n; i++){
		cout<<"\n Student No: "<<i+1;
		Ostu1.getdata();
		fout.write((char *) &Ostu1, sizeof(Ostu1));
		}
	fout.close();

	ifstream fin;
	fin.open("result.txt", ios::in);
	tot = 0;
	clrscr();
	cout<<"\n Data read from File:- \n";
	for(i=0; i<n; i++){
		fin.read((char *) &Ostu2, sizeof(Ostu2));
		cout<<"\n\n Student No: "<<i+1;
		Ostu2.putdata();
		tot += Ostu2.calc();
		}
	avg = tot/n;
	cout<<"\n\n Total marks: "<<tot;
	cout<<"\n\n Average Marks: "<<avg;
	fin.close();
	getch();
	}

 

Output:

How many Students: 5

Student No: 1
Enter Name: manoj
Enter Roll No: 204
Enter Marks: 200

Student No: 2
Enter Name: Bhanu
Enter Roll No: 104
Enter Marks: 300

Student No: 3
Enter Name: Nitin
Enter Roll No: 214
Enter Marks: 350

Student No: 4
Enter Name: Prakash
Enter Roll No: 304
Enter Marks: 250

Student No: 5
Enter Name: Shilpi
Enter Roll No: 123
Enter Marks: 400

Student No: 1
Name: Manoj Roll No: 204 Marks: 200

Student No: 2
Name: Bhanu Roll No: 104 Marks: 300

Student No: 3
Name: Nitin Roll No: 214 Marks: 350

Student No: 4
Name: Prakash Roll No: 304 Marks: 250

Student No: 5
Name: Shilpi Roll No: 123 Marks: 400

Total marks: 1500
Average Marks: 300


C++ Program to implement Exception Handling by using TRY CATCH – Q28

January 28, 2010 Leave a comment

Q28. Program to implement Exception Handling by using TRY CATCH:

Write a Boolean function that returns TRUE/FALSE if the unsigned int argument passed to it is a Leap Year or Non Leap Year. The function must throw an “Out Of Range” exceptio if its argument does not lie between 0 and 2100.

… from College notes (BCA/MCA assignments):

#include <iostream.h>
#include <conio.h>

enum boolean{false, true} bool;

class Cyear{
	private:
		int dd, mm, yy;
	public:
		void getDate();
		int isLeap();
		void putDate();
	};

void Cyear :: getDate(){
	cout<<"\n Enter Date (dd mm yyyy): ";
	cin>>dd>>mm>>yy;
	try{
		if( (yy < 0) || (yy > 2100) )
			throw "Out of Range";
		}
	catch(char *errmsg){
		cout<<"\n ERROR: "<<errmsg;
      }
	}

int Cyear :: isLeap (){
	return ( (yy % 400 == 0) || ((yy % 4 == 0) && (yy % 100 != 
    0)) );
	}

void Cyear :: putDate(){
	if(isLeap())
		cout<<"\n Is a leap year.";
	else
		cout<<"\n Is not leap year.";
	}

void main(){
	clrscr();
	Cyear Odt;
	Odt.getDate();
	Odt.putDate();
	getch();
   }

 

Output:

Enter a Date (dd mm yyyy): 18 11 2004

Is a Leap Year.

Enter a Date (dd mm yyyy): 18 11 2290

ERROR: Out of Range.

Is not a Leap Year.


C++ Program to implement Generic Classes for maintaining Linked List – Q27

January 27, 2010 Leave a comment

Q27. Program to implement Generic Classes for maintaining Linked List:

Create a Template class that implements a singly-linked list. The linked list class should include following member functions-
push_front( ), push_back( ), push_at_any( ), remove_first( ), remove_last( ) & remove_at _any( ).
There may be a private data member size to keep track of no. of items remaining at any given point of time.

… from College notes (BCA/MCA assignments):

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

template <class T>
class NODE{
	private:
		T elm, key;
		NODE *next;
	public:
		void addNodeBeg(NODE **);
		void addNodeEnd(NODE **);
		void addNodePos(NODE **);
		void deleteNode(NODE **);
		void displayList(NODE *);
	};

template <class T>
void NODE<T> :: addNodeBeg(NODE<T> **node){
	NODE *temp;
	cout<<"\n Enter a Value: ";
	cin>>key;
	if(*node == NULL){	// list is Empty.
		*node = new(NODE);
		(*node)->elm = key;
		(*node)->next = NULL;
		}
	else{				// list is not empty.
		temp = new(NODE);
		temp->elm = key;
		temp->next = *node;
		*node = temp;
		}
	}

template <class T>
void NODE<T> :: addNodeEnd(NODE<T> **node){
	NODE *temp;
	cout<<"\n Enter a Value: ";
	cin>>key;
	if(*node == NULL){	// list is Empty.
		*node = new(NODE);
		(*node)->elm = key;
		(*node)->next = NULL;
		}
	else{				// list is not empty.
		temp = *node;
		while(temp->next != NULL)
			temp = temp->next;
		temp->next = new(NODE);
		temp = temp->next;
		temp->elm = key;
		temp->next = NULL;
		}
	}

template <class T>
void NODE<T> :: addNodePos(NODE<T> **node){
	NODE *temp, *ntemp;
	int pos, i=1;
	cout<<"\n Enter a Position No.: ";
	cin>>pos;
	cout<<"\n Enter a Key: ";
	cin>>key;
	if(*node == NULL){	// list is Empty.
		cout<<"\n List is Empty.";
		return ;
		}
	temp = *node;
	while(1){
		if( (temp->next == NULL) || (i == pos) )
			break;
		temp = temp->next;
		i++;
		}
	ntemp = new(NODE);
	ntemp->elm = key;
	ntemp->next = temp->next;
	temp->next = ntemp;
	}

template <class T>
void NODE<T> :: deleteNode(NODE<T> **node){
	NODE *temp, *prev;
	int i=0;
	cout<<"\n Enter an Element of List to Delete: ";
	cin>>key;
	temp = *node;
	prev = temp;
	while(1){
		if(*node == NULL){	// list is Empty.
			cout<<"\n List is Empty.";
			return;
			}
		else if(temp->elm == key){	// Element Found.
			if(i == 0){	// if Element is First Node.
				(*node) = (*node)->next;
				cout<<"\n First Node Deleted.";
				return;
				}
			else
				break;
			}
		else if(temp->next == NULL){
			cout<<"\n Element not Found.";
			return;
			}
		i++;
		prev = temp;
		temp = temp->next;
		}
	prev->next = temp->next;
	cout<<"\n Element Deleted.";
	}


template <class T>
void NODE<T> :: displayList(NODE<T> *node){
	int i=1;
	cout<<"\n\t List: ";
	if(node == NULL)
		cout<<" List is Empty.";
	while(node != NULL){
		cout<<"\t"<<node->elm;
		node = node->next;
		i++;
		}
	}

int _menu(){
	int _ch;
	cout<<"\n List Type:- \n";
	cout<<"\n 1 -> Integer.";
	cout<<"\n 2 -> Float.";
	cout<<"\n 3 -> Character.";
	cout<<"\n Enter your choice: ";
	cin>>_ch;
	return (_ch);
	}

void main(){
	int ch1, ch2;

	NODE<int> int_list;
	NODE<float> float_list;
	NODE<char> char_list;

	NODE<int> *int_start = NULL;
	NODE<float> *float_start = NULL;
	NODE<char> *char_start = NULL;

	while(1){
		clrscr();
		cout<<"\n LINK LIST PROGRAM";
		cout<<"\n ~~~~~~~~~~~~~~~~~ \n";
		cout<<"\n 1 -> Add Node at Begining.";
		cout<<"\n 2 -> Add Node at End.";
		cout<<"\n 3 -> Add Node at Position.";
		cout<<"\n 4 -> Delete Node.";
		cout<<"\n 5 -> Display List.";
		cout<<"\n 6 -> Exit.";
		cout<<"\n Enter your choice: ";
		cin>>ch1;
		switch(ch1){
			case 1:		// Add node at Begining.
				ch2 = _menu();
				switch(ch2){
					case 1:
						cout<<"\n Enter an Integer 
  Value: ";
						int_list.addNodeBeg(&int_start);
						break;
					case 2:
						cout<<"\n Enter a Float Value:”;
					float_list.addNodeBeg(&float_start);
						break;
					case 3:
						cout<<"\n Enter a Character: ";
					char_list.addNodeBeg(&char_start);
						break;
					default:
						cout<<"\n Wrong Entry. No 
  operation Done.";
					}
				break;
			case 2:		// Add node at End.
				ch2 = _menu();
				switch(ch2){
					case 1:
						cout<<"\n Enter an Integer 
  Value: ";
						int_list.addNodeEnd(&int_start);
						break;
					case 2:
						cout<<"\n Enter a Float Value:";
					float_list.addNodeEnd(&float_start);
						break;
					case 3:
						cout<<"\n Enter a Character: ";
					char_list.addNodeEnd(&char_start);
						break;
					default:
						cout<<"\n Wrong Entry. No 
  operation Done.";
					}
				break;
			case 3:		// Add node at Position.
				ch2 = _menu();
				switch(ch2){
					case 1:
						cout<<"\n Enter an Integer 
  Value: ";
						int_list.addNodePos(&int_start);
						break;
					case 2:
						cout<<"\n Enter a Float Value:";
					float_list.addNodePos(&float_start);
						break;
					case 3:
						cout<<"\n Enter a Character: ";
					char_list.addNodePos(&char_start);
						break;
					default:
						cout<<"\n Wrong Entry. No 
  operation Done.";
					}
				break;
			case 4:		// Delete Node.
				ch2 = _menu();
				switch(ch2){
					case 1:
						cout<<"\n Enter an Integer 
  Value: ";
						int_list.deleteNode(&int_start);
						break;
					case 2:
						cout<<"\n Enter a Float Value:";
					float_list.deleteNode(&float_start);
						break;
					case 3:
						cout<<"\n Enter a Character: ";
					char_list.deleteNode(&char_start);
						break;
					default:
						cout<<"\n Wrong Entry. No 
  operation Done.";
					}
				break;
			case 5:		// Display List.
				cout<<"\n\n Integer List: - ";
				int_list.displayList(int_start);
				cout<<"\n\n Float List: - ";
				float_list.displayList(float_start);
				cout<<"\n\n Character List: - ";
				char_list.displayList(char_start);
				break;
			default:
				exit(1);
			}
		getch();
		}
	}

 

Output:

LINK LIST PROGRAM

1 -> Add Node at Begining.
2 -> Add Node at End.
3 -> Add Node at Position.
4 -> Delete Node.
5 -> Display List.
6 -> Exit.

Enter your choice: 5

Integer List: –
List: 3 90 44 45 23 45

Float List: –
List: 90.449997 23.440001 12.34

Character List: –
List: e r