Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void main(String[] args){
- Scanner sc=new Scanner(System.in);
- int rows=sc.nextInt();
- int cols=sc.nextInt();
- int[][] data=new int[rows][cols];
- manipulate(data);
- }
- public static void manipulate(int[][] data){
- for(int i=0;i<data.length;i++)
- for(int j=0;j<data[0].length.j++){
- System.out.print(data[i][j]);
- }
- }
- #include "boost/multi_array.hpp"
- #include <cassert>
- int
- main () {
- // Create a 3D array that is 3 x 4 x 2
- typedef boost::multi_array<double, 3> array_type;
- typedef array_type::index index;
- array_type A(boost::extents[3][4][2]);
- // Assign values to the elements
- int values = 0;
- for(index i = 0; i != 3; ++i)
- for(index j = 0; j != 4; ++j)
- for(index k = 0; k != 2; ++k)
- A[i][j][k] = values++;
- // Verify values
- int verify = 0;
- for(index i = 0; i != 3; ++i)
- for(index j = 0; j != 4; ++j)
- for(index k = 0; k != 2; ++k)
- assert(A[i][j][k] == verify++);
- return 0;
- }
- Multi-Array test!
- Please enter the size of the dimension 0 : 4
- Please enter the size of the dimension 1 : 6
- Please enter the size of the dimension 2 : 2
- Text matrix with 3 dimensions of size (4,6,2) have been created.
- Ready!
- Type 'help' for the command list.
- >read 0.0.0
- Text at (0,0,0) :
- ""
- >write 0.0.0 "This is a nice test!"
- Text "This is a nice test!" written at position (0,0,0)
- >read 0.0.0
- Text at (0,0,0) :
- "This is a nice test!"
- >write 0,0,1 "What a nice day!"
- Text "What a nice day!" written at position (0,0,1)
- >read 0.0.0
- Text at (0,0,0) :
- "This is a nice test!"
- >read 0.0.1
- Text at (0,0,1) :
- "What a nice day!"
- >write 3,5,1 "This is the last text!"
- Text "This is the last text!" written at position (3,5,1)
- >read 3,5,1
- Text at (3,5,1) :
- "This is the last text!"
- >exit
- const unsigned int DIMENSION_COUNT = 3; // dimension count for this test application, change it at will :)
- // here is the type of the multi-dimensional (DIMENSION_COUNT dimensions here) array we want to use
- // for this example, it own texts
- typedef boost::multi_array< std::string , DIMENSION_COUNT > TextMatrix;
- // this provide size/index based position for a TextMatrix entry.
- typedef std::tr1::array<TextMatrix::index, DIMENSION_COUNT> Position; // note that it can be a boost::array or a simple array
- /* This function will allow the user to manipulate the created array
- by managing it's commands.
- Returns true if the exit command have been called.
- */
- bool process_command( const std::string& entry, TextMatrix& text_matrix );
- /* Print the position values in the standard output. */
- void display_position( const Position& position );
- int main()
- {
- std::cout << "Multi-Array test!" << std::endl;
- // get the dimension informations from the user
- Position dimensions; // this array will hold the size of each dimension
- for( int dimension_idx = 0; dimension_idx < DIMENSION_COUNT; ++dimension_idx )
- {
- std::cout << "Please enter the size of the dimension "<< dimension_idx <<" : ";
- // note that here we should check the type of the entry, but it's a simple example so lets assume we take good numbers
- std::cin >> dimensions[dimension_idx];
- std::cout << std::endl;
- }
- // now create the multi-dimensional array with the previously collected informations
- TextMatrix text_matrix( dimensions );
- std::cout << "Text matrix with " << DIMENSION_COUNT << " dimensions of size ";
- display_position( dimensions );
- std::cout << " have been created."<< std::endl;
- std::cout << std::endl;
- std::cout << "Ready!" << std::endl;
- std::cout << "Type 'help' for the command list." << std::endl;
- std::cin.sync();
- // we can now play with it as long as we want
- bool wants_to_exit = false;
- while( !wants_to_exit )
- {
- std::cout << std::endl << ">" ;
- std::tr1::array< char, 256 > entry_buffer;
- std::cin.getline(entry_buffer.data(), entry_buffer.size());
- const std::string entry( entry_buffer.data() );
- wants_to_exit = process_command( entry, text_matrix );
- }
- return 0;
- }
- void write_in_text_matrix( TextMatrix& text_matrix, const Position& position, const std::string& text )
- {
- text_matrix( position ) = text;
- std::cout << "Text "" << text << "" written at position ";
- display_position( position );
- std::cout << std::endl;
- }
- void read_from_text_matrix( const TextMatrix& text_matrix, const Position& position )
- {
- const std::string& text = text_matrix( position );
- std::cout << "Text at ";
- display_position(position);
- std::cout << " : "<< std::endl;
- std::cout << " "" << text << """ << std::endl;
- }
- // First dimension
- int** array = new int*[3];
- for( int i = 0; i < 3; ++i )
- {
- // Second dimension
- array[i] = new int[4];
- }
- // You can then access your array data with
- for( int i = 0; i < 3; ++i )
- {
- for( int j = 0; j < 4; ++j )
- {
- std::cout << array[i][j];
- }
- }
- int* buffer = new int[3*4];
- int** array = new int*[3];
- for( int i = 0; i < 3; ++i )
- {
- array[i] = array + i * 4;
- }
- // You can then access your array data with
- for( int i = 0; i < 3; ++i )
- {
- for( int j = 0; j < 4; ++j )
- {
- const int index = i * 4 + j;
- std::cout << buffer[index];
- }
- }
- void *Array_get_2d(Array_T a, int width, int height, int i, int j) {
- return Array_get(a, j * width, i, j);
- }
- std::vector< std::vector<int> > v;
- v.resize(rows, std::vector<int>(cols, 42)); // init value is 42
- v[row][col] = ...;
- std::vector<int> v(col_count * row_count, 42);
- v[col_count * row + col) = ...;
- int ** rows = new int*[row_count];
- for(std::size_t i = 0; i < row_count; i++) {
- rows[i] = new int[cols_count];
- std::fill(rows[i], rows[i] + cols_count, 42);
- }
- // use it... rows[row][col] then free it...
- for(std::size_t i = 0; i < row_count; i++) {
- delete[] rows[i];
- }
- delete[] rows;
- int array [ rows ] [ columns ];
- int array [ rows * columns ]
- void * array = malloc ( rows * columns * sizeof(int) );
- int main( int argc, char ** argv )
- {
- UASSERT( argc, >, 2 ); // My own macro...
- int rows = atoi( argv[1] );
- int columns = atoi( argv[2] );
- int data [ rows ] [ columns ]; // Yes, legal!
- memset( data, 0, sizeof(data) );
- print( data, rows, columns );
- manipulate( data, rows, columns );
- print( data, rows, columns );
- }
- void manipulate( void * theRealData, int theRows, int theColumns )
- {
- int (* p) [ theRows ] [ theColumns ];
- *(void **)&p = theRealData; //Need *&. Issue with casting lvalues.
- for ( int r = 0; r < theRows; r ++ )
- for ( int c = 0; c < theColumns; c ++ )
- (*p) [r] [c] = r*10 + c;
- }
- void print( void *theRealData, int theRows, int theColumns )
- {
- int (* p) [ theRows ] [ theColumns ];
- *(void **)&p = theRealData; //Need *&. Issue with casting lvalues.
- for ( int r = 0; r < theRows; r ++ )
- {
- for ( int c = 0; c < theColumns; c ++ )
- {
- cout << (*p) [r] [c] << " ";
- }
- cout << endl;
- }
- cout << endl;
- }
- main()
- {
- int i;
- int rows;
- int cols;
- int **array = NULL;
- array = malloc(sizeof(int*) * rows);
- if (array == NULL)
- return 0; // check for malloc fail
- for (i = 0; i < rows; i++)
- {
- array[i] = malloc(sizeof(int) * cols)
- if (array[i] == NULL)
- return 0; // check for malloc fail
- }
- // and now you have a dynamically sized array
- }
Add Comment
Please, Sign In to add comment