tina05 0 Newbie Poster

somebory can tell me how to swap two colum of the two dimentional array that with pointer

this is the run

I did but do not work
I was in function swap
0 0x11 0
sh: pause: command not found
I was in destructor
*** glibc detected *** ./a.out: free(): invalid pointer: 0x0991d070 ***
======= Backtrace: =========
/lib/libc.so.6[0x5d5a68]
/lib/libc.so.6(__libc_free+0x78)[0x5d8f6f]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xade801]
/usr/lib/libstdc++.so.6(_ZdaPv+0x1d)[0xade85d]
./a.out[0x8048e1d]
./a.out[0x8048efd]
/lib/libc.so.6(__libc_start_main+0xdc)[0x5874e4]
./a.out(__gxx_personality_v0+0x51)[0x8048791]
======= Memory map: ========
00555000-0056e000 r-xp 00000000 fd:00 1403592 /lib/ld-2.4.so
0056e000-0056f000 r-xp 00018000 fd:00 1403592 /lib/ld-2.4.so
0056f000-00570000 rwxp 00019000 fd:00 1403592 /lib/ld-2.4.so
00572000-0069f000 r-xp 00000000 fd:00 1403660 /lib/libc-2.4.so
0069f000-006a1000 r-xp 0012d000 fd:00 1403660 /lib/libc-2.4.so
006a1000-006a2000 rwxp 0012f000 fd:00 1403660 /lib/libc-2.4.so
006a2000-006a5000 rwxp 006a2000 00:00 0
006a7000-006ca000 r-xp 00000000 fd:00 1405896 /lib/libm-2.4.so
006ca000-006cb000 r-xp 00022000 fd:00 1405896 /lib/libm-2.4.so
006cb000-006cc000 rwxp 00023000 fd:00 1405896 /lib/libm-2.4.so
00a1e000-00a29000 r-xp 00000000 fd:00 1406597 /lib/libgcc_s-4.1.1-20070108.so.1
00a29000-00a2a000 rwxp 0000a000 fd:00 1406597 /lib/libgcc_s-4.1.1-20070108.so.1
00a2c000-00b0b000 r-xp 00000000 fd:04 1282337 /usr/lib/libstdc++.so.6.0.8
00b0b000-00b0f000 r-xp 000de000 fd:04 1282337 /usr/lib/libstdc++.so.6.0.8
00b0f000-00b10000 rwxp 000e2000 fd:04 1282337 /usr/lib/libstdc++.so.6.0.8
00b10000-00b16000 rwxp 00b10000 00:00 0
00f37000-00f38000 r-xp 00f37000 00:00 0 [vdso]
08048000-0804a000 r-xp 00000000 fd:01 5998511 /home/math/santa_gm/numero3/a.out
0804a000-0804b000 rw-p 00001000 fd:01 5998511 /home/math/santa_gm/numero3/a.out
0991d000-0993e000 rw-p 0991d000 00:00 0
b7e00000-b7e21000 rw-p b7e00000 00:00 0
b7e21000-b7f00000 ---p b7e21000 00:00 0
b7f19000-b7f1b000 rw-p b7f19000 00:00 0
b7f2d000-b7f2f000 rw-p b7f2d000 00:00 0
bfee6000-bfefc000 rw-p bfee6000 00:00 0

#include <iostream>
#include <string>


using namespace std;


/*TwoDimArray::TwoDimArray()
{
}
*/
TwoD::TwoD( int r, int c)
{

x = r;

y = c;

elemtD = new int *[x]; // **elemtD is a two Dim pointer in the private sector

for (int i = 0; i < x; i++){

elemtD[i] = new int [y];

}
for (int i=0; i < x; i++){

for(int j=0; j < y; j++){

elemtD[i][j] = i*j;
}
}
}

TwoD::TwoD(const TwoD & ap1) // copy constructor
{

deepCopy( ap1 );



}

TwoD::~TwoD( )
{



for (int i = 0; i < x; i++)
{
delete[] elemtD[i];

delete[] elemtD;

}
}

/*void TwoD::operator =( const TwoDimArray &right1 ) // overload assigment operator give run time error
{

if (this == &right1 )

return this;

delete elemtD;

deeCopy (right1);

return *this;

}
TwoD::~TwoD( )
{


for (int i = 0; i < x; i++)
{
delete[] elemtD[i];

delete[] elemtD;

}
}

/*void TwoD::operator =( const TwoD &right1 ) // overload assigment operator give run time error
{

if (this == &right1 )

return this;

delete elemtD;

deeCopy (right1);

return *this;

}
*/


/*void TwoD:: operator[](int i, int j);// give run time erros

{
return elemtwoDarray[i][j];

}
*/


void TwoD::deepCopy(const TwoD & orig1 )
{

x = orig1.x;

y = orig1.y;

elemtD= new int *[x]; // dynamically allocated array of int of set rows length

for (int i = 0; i < x; i++)
{
elemtD[i] = new int[x]; // Fill up row until x row
}

for ( int i = 0; i < x; i++ )
{
for ( int j = 0; j < y; j++ )
{
elemtD[i][j] = orig1.elemtD[i][j];

//elemtD[j] = orig2.elemtD[j];

}

}

}

int TwoD::print( int r , int c)
{

x= r

y=c;

for (int i = 0; i < x; i++)
{

for(int j=0; j < y; j++)
{

cout<<" " << elemtD[i][j] <<" ";
}

putchar('\n');

cout<<endl;
}
}



int TwoD::swap(int index1, int index2 )
{

x = index1;

y = index2;

int *temp;

for (int i = 0; i< x; i++)
{

temp = elemtD[y];

elemtD[ydim] = elemtD[x];

elemtD[x] = temp;

cout<<" " << elemtD[x]<<" ";

}
// putchar('\n');


cout<<endl;
}][in main function


#include <iostream>
#include <string>
#include "numero3.h"

using namespace std;



int main()
{

TwoD TwD(3,4); // Declaring the three TwoD objects containing


cout << "\nElement values in the 2D Array are:\n";



TwD.print( 3,4 ); // Creating the arrays

TwD.deepCopy(TwD);// I have a question. If I have this function in the private section how I can call it in main?

cout << "\n The Swap element values in the 2D Array are:\n";


TwD.swap( 3,4 );



system("pause");

return 0;

};
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.