raj.nitp@gmail.com
BAN USERGood programming skill in C++. Working knowledge of Data structures. Experiance in Linux, DDS & Rational Rhapsody.
//============================================================================
// Name : MaximalCloseFactor.cpp
// Author : Nitish Raj, Scientist DRDO,raj.nitp@gmail.com
// Version :
// Copyright : Your copyright notice
// Description : MaximalCloset, Ansi-style
//============================================================================
#include <iostream>
using namespace std;
void findingMaximalCloset(int data, int &fac1 , int &fac2){
if(data == 1) return;
fac1 = 1;
fac2 = data;
bool flag = true;
while(flag)
{
fac1++;
if(fac1 == fac2) flag = false;
if(data%fac1 == 0)
{
fac2 = data/fac1;
if(fac1 == fac2) flag = false;
//cout<<"FAC 1 "<<fac1<<" FAC2 "<<fac2<<endl;
}
}
if(fac2 == 1){
data = data + 1;
fac1 = 1;
findingMaximalCloset(data,fac1,fac2);
}
else if(fac1 != 1 && fac2 != 1) return;
}
int main() {
int data,fac1 = 1,fac2 = 1;
cout << "Enter an integer for finding maximal close factor" << endl; // prints
cin>>data;
findingMaximalCloset(data,fac1 ,fac2);
cout<<"FACTORS ARE "<<fac1<<" * "<<fac2<<endl;
return 0;
}
//============================================================================
// Name : SwapLinkedListElem.cpp
// Author : Nitish Raj, Scientist DRDO
// Version :
// Copyright : Your copyright notice
// Description : Swapping of elements of Linklist at Kth Pos
//============================================================================
#include <iostream>
#include <queue>
#include <stack>
using namespace std;
struct node{
int data;
node *next;
node(int val)
{
data = val;
next = NULL;
}
};
void addTolinklistInEnd(node **p, int val){
node *tmp = new node(val);
if(*p == NULL) {
*p = tmp;
return;
}
node *Q = *p;
while(Q->next != NULL){
Q = Q->next;
}
Q->next = tmp;
}
int determineSize(node *p)
{
if(p == NULL) return 0;
int count = 1;
while(p->next != NULL){
count++;
p = p->next;
}
return count;
}
void printLinkList(node *p)
{
if(p == NULL) return;
while(p !=NULL){
if(p->next != NULL)
cout<<p->data<<"->";
else
cout<<p->data<<endl;
p = p->next;
}
}
void swapAtKthPos(node **p,int k){
node *temp = *p;
if(temp == NULL) return ;
int size = determineSize(*p);
if(k>size) return;
if(k>size/2) k = size - k + 1;
int counter = 1;
node *tmpNode;
while(temp != NULL)
{
if(counter == k) tmpNode = temp;
if(counter == size - k +1){
int val = temp->data;
temp->data = tmpNode->data;
tmpNode->data = val;
return;
}
temp = temp->next;
counter++;
}
}
int main() {
// Guys this program is running successfully but if you define any variable of let say
// int type , process occurs segmentation fault. Pse tell me reason mail me raj.nitp@gmail.com
// gcc version 4.4.7 20120313
// int thisOccurSegmentationfaultOnUncommenting;
node *start;
addTolinklistInEnd(&start, 1);
addTolinklistInEnd(&start, 2);
addTolinklistInEnd(&start, 3);
addTolinklistInEnd(&start, 4);
addTolinklistInEnd(&start, 5);
addTolinklistInEnd(&start, 6);
addTolinklistInEnd(&start, 7);
addTolinklistInEnd(&start, 8);
cout<<"PRINTING LINKLIST BEFORE SWAP :: ";
printLinkList(start);
swapAtKthPos(&start,2);
cout<<"PRINTING LINKLIST AFTER SWAP :: ";
printLinkList(start);
return 0;
}
//============================================================================
// Name : SwapLinkedListElem.cpp
// Author : Nitish Raj, Scientist DRDO
// Version :
// Copyright : Your copyright notice
// Description : Swapping of elements of Linklist
//============================================================================
#include <iostream>
#include <queue>
#include <stack>
using namespace std;
struct node{
int data;
node *next;
node(int val)
{
data = val;
next = NULL;
}
};
void addTolinklistInEnd(node **p, int val){
node *tmp = new node(val);
if(*p == NULL) {
*p = tmp;
return;
}
node *Q = *p;
while(Q->next != NULL){
Q = Q->next;
}
Q->next = tmp;
}
int determineSize(node *p)
{
if(p == NULL) return 0;
int count = 1;
while(p->next != NULL){
count++;
p = p->next;
}
return count;
}
void printLinkList(node *p)
{
if(p == NULL) return;
while(p !=NULL){
if(p->next != NULL)
cout<<p->data<<"->";
else
cout<<p->data<<endl;
p = p->next;
}
}
void swap(node **p){
node *tmp = *p;
int size = determineSize(tmp);
int counter = 1;
queue<int> myQ;
stack<int> myS;
tmp = *p;
while(tmp != NULL && counter <= size){
if(size%2?counter<=size/2 +1:counter<=size/2)
myQ.push(tmp->data);
else
myS.push(tmp->data);
tmp = tmp->next;
counter++;
}
node *temp = *p;
while(myQ.size()>0 && myS.size()>0){
temp->data = myQ.front();
myQ.pop();
temp = temp->next;
temp->data = myS.top();
myS.pop();
temp = temp->next;
}
if( myQ.size() != 0)
{
temp->data = myQ.front();
temp->next = NULL;
}
}
int main() {
node *start;
addTolinklistInEnd(&start, 1);
addTolinklistInEnd(&start, 2);
addTolinklistInEnd(&start, 3);
addTolinklistInEnd(&start, 4);
addTolinklistInEnd(&start, 5);
addTolinklistInEnd(&start, 6);
addTolinklistInEnd(&start, 7);
addTolinklistInEnd(&start, 8);
cout<<"PRINTING LINKLIST BEFORE SWAP :: ";
printLinkList(start);
swap(&start);
cout<<"PRINTING LINKLIST AFTER SWAP :: ";
printLinkList(start);
return 0;
}
//============================================================================
// Name : MatrixSorting.cpp
// Author : Nitish Raj, scientist DRDO
// Version :
// Copyright : Your copyright notice
// Description : Ansi-style
//============================================================================
#include <iostream>
using namespace std;
class Matrix
{
int r , c;
int arr[10][10];
int arrTmp[20],count;
public:
Matrix()
{}
void getArrayInput();
void makeLinearArray();
void sortSelection();
void rowWiseSwap();
void printMatrix();
};
void Matrix::getArrayInput(){
cout<<"Enter size of ROW"<<endl;
cin>>r;
cout<<"Enter szie of COL"<<endl;
cin>>c;
for(int i = 0 ; i<r ;i ++)
for(int j = 0 ; j< c ; j++)
{
cout<<" ["<<i<<"]["<<j<<"] = ";
cin>>arr[i][j];
}
}
void Matrix::printMatrix(){
for(int i = 0 ;i< r ; i++)
{
for(int j = 0; j<c;j++)
cout<<arr[i][j]<<" ";
cout<<endl;
}
}
void Matrix::makeLinearArray(){
count = 0;
for(int i = 0 ;i< r ; i++)
for(int j = 0; j<c;j++)
{
arrTmp[count] = arr[i][j];
count++;
}
}
void Matrix::sortSelection(){
for(int k = 1; k <r*c ; k++){
int data = arrTmp[k];
int j = k-1;
while(j>=0 && arrTmp[j]>data)
{
arrTmp[j+1] = arrTmp[j];
j--;
}
arrTmp[j+1] = data;
}
count = 0;
for(int i = 0 ;i< r ; i++)
for(int j = 0; j<c;j++)
{
arr[i][j] = arrTmp[count];
count++;
}
}
void Matrix::rowWiseSwap(){
for(int i = 0 ;i< r/2 ; i++)
{
for(int j = 0; j<c;j++)
{
int tmp = arr[i][j];
arr[i][j] = arr[r-i-1][j];
arr[r-i-1][j] = tmp;
}
}
}
int main() {
Matrix obj;
obj.getArrayInput();
obj.makeLinearArray();
obj.sortSelection();
obj.rowWiseSwap();
obj.printMatrix();
return 0;
}
- raj.nitp@gmail.com August 05, 2016