for a assignment i need to create an array dynamically

so then late i have to sort the array

but the problem is i an new in this cousrse and i dontknow how to creat an array dynamically

any help will be a good start for me

\thx

for a assignment i need to create an array dynamically

so then late i have to sort the array

but the problem is i an new in this cousrse and i dontknow how to creat an array dynamically

any help will be a …

You're missing a closing brace '}' at the end of main().

Here:

``````void print( int *array, int size )
{
//Original print out of array
cout << "The unsorted arangement of the array is:\n\n";
for ( int j = 0; j < size; ++j )
cout << array[ …``````

## All 7 Replies

my friend said that i might have to use
new[]
and delete[]
but the problem is i havent studied them yet

for a assignment i need to create an array dynamically

so then late i have to sort the array

but the problem is i an new in this cousrse and i dontknow how to creat an array dynamically

any help will be a good start for me

\thx

A dynamic array is just a pointer to memory returned by malloc() or new[]. You make one like this where T is some type and n is a positive integer.

``````// In C++
T *array = new T[n];

/* In C */
T *array = malloc( n * sizeof( T ) );``````

Then you have to deallocate the memory when you're done.

``````// In C++
delete [] array;

/* In C */
free( array );``````

Let's say I want a dynamic array of integers in C++. I would do this.

``````#include <iostream>

int main()
{
using namespace std;

int size = 10;
int *array = new int[size];

// Put something in the array
for ( int i = 0; i < size; i++ )
array[i] = i;

// Make sure it got putted right :)
for ( int i = 0; i < size; i++ )
cout << array[i] << ' ';
cout << '\n';

delete [] array;

return 0;
}``````

It's pretty simple, really. Besides the allocation and deallocation, using dynamic arrays is a lot like regular arrays. But if you have any problems at all, just meander over here and the smarty pants here at Daniweb can help you out. :)

``````// Assignment 1, Question #1
#include <iostream>
#include<cstdlib>
#include <ctime>
using namespace std;

void Sort( int *array , int size );
void print( int *array , int size );

int main ()
{
int arraysize;
cout << "Please enter the size of your integer array: " << endl;
cin >> arraysize;

int *array = new int[arraysize];

for ( int i = 0; i< arraysize; i++ )
*(array + i ) = rand() % 101;

Sort( array, arraysize );

print( array, arraysize );
return 0;
}
void Sort( int *array, int size )
{
for ( int next = 1; next < size; next++ )

{
int insert = array[ next ]; // store the value in the current element

int moveItem = next; // initialize location to place element

// search for the location in which to put the current element
while ( ( moveItem > 0 ) && ( array[ moveItem - 1 ] > insert ) )
{
// shift element one slot to the right
array[ moveItem ] = array[ moveItem - 1 ];
moveItem--;
} // end while

array[ moveItem ] = insert; // place inserted element into the array
} // end for

void print( int *array, int size )
{
//Original print out of array
cout << "The unsorted arangement of the array is:\n\n";
for ( int j = 0; j < size; ++j )
cout << array[ j ] << "\n" ;
cout << endl;

//Print out of listing
cout << "The aranged array is:\n\n";
for ( i = 0; i < size; ++i )
cout << array[ i ] << "\n" ;
cout << endl;
}``````

what am i doing wrong??
the compiler gives me 2 errors

"
: error C2601: 'print' : local function definitions are illegal

: fatal error C1004: unexpected end of file found

Error executing cl.exe.

"

You're missing a closing brace '}' at the end of main().

Here:

``````void print( int *array, int size )
{
//Original print out of array
cout << "The unsorted arangement of the array is:\n\n";
for ( int j = 0; j < size; ++j )
cout << array[ j ] << "\n" ;
cout << endl;

//Print out of listing of cities in alphabetical order
cout << "The aranged array is:\n\n";
for ( i = 0; i < size; ++i )``````

You forgot to declare 'i' by placing 'int' before it.

I just tried running your program now, and it works pretty well - except for this:

``````for ( int i = 0; i< arraysize; i++ )
*(array + i ) = rand() % 101;

Sort( array, arraysize );

print( array, arraysize );``````

Do you see what you're doing wrong? You only made print() with one array as a parameter, and you try to print out 2 arrays here:

``````void print( int *array, int size )
{
//Original print out of array
cout << "The unsorted arangement of the array is:\n\n";
for ( int j = 0; j < size; ++j )
cout << array[ j ] << "\n" ;
cout << endl;

//Print out of listing of cities in alphabetical order
cout << "The aranged array is:\n\n";
for ( /* 888 */ int i = 0; i < size; ++i )
cout << array[ i ] << "\n" ;
cout << endl;
}``````

So although your sort function works, you're either going to have to:

• Modify print() to accept to arrays as paramters, and print them out.
• Modify print() to only print out one array, and then call print() twice.

Both would work, although I'd probably go with the first solution (faster).

// Assignment 1, Question #1
#include <iostream.h>
#include<conio.h>

void sort(int *array , int size);
void print(int *array , int size);

void main ()
{
int arraysize;
cout << "Please enter the size of your integer array: " << endl;
cin >> arraysize;

int *array = new int[arraysize];

cout<<"Enter the values";
for ( int i = 0; i< arraysize; i++ )
cin>>*(array+i);

sort(array, arraysize );

print( array, arraysize );
getch();
}

void sort( int *array, int size )
{
for ( int next = 1; next < size; next++ )

{
int insert = array[ next ]; // store the value in the current element

int moveItem = next; // initialize location to place element

// search for the location in which to put the current element
while ( ( moveItem > 0 ) && ( array[ moveItem - 1 ] > insert ) )
{
// shift element one slot to the right
array[ moveItem ] = array[ moveItem - 1 ];
moveItem--;
} // end while

array[ moveItem ] = insert; // place inserted element into the <strong class="highlight">array</strong>
} // end for
}
void print( int *array, int size )
{
int i;
//Original print out of array
cout << "The unsorted arangement of the array is:\n\n";
for ( int j = 0; j < size; ++j )
cout << array[ j ] << "\n" ;
cout << endl;

//Print out of listing
cout << "The aranged array is:\n\n";
for ( i = 0; i < size; ++i )
cout << array[ i ] << "\n" ;
cout << endl;

}

This is perfect program............ Enjoy.............This will run perfectly

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

void main()
{

int n,size;
clrscr();

cout<<"Enter the length of array : ";
cin>>size;

int *array = new int;

cout<<"Enter elements : "<<"\n";
// Put something in the array
for ( int i = 0; i < size; i++ )
cin>>array;

for(int m=0;m<size-1;m++)
{
for(int n=m+1;n<size;n++)
{
if(array[m]>array[n])
{
int temp;
temp=array[m];
array[m]=array[n];
array[n]=temp;
}
}
}

cout<<"Sorted Array"<<"\n";
// Make sure it got putted right :)
for ( int j= 0; j < size; j++ )
cout << array[j] << ' ';
cout << '\n';

delete [] array;
getch();
}

This is program to allocate & deallocate memory and sorting that array.............................................. 100% working..

Please use code tags and standard code when posting. Also please don't resurrect dead threads. You must have seen the warning before you posted.

Be a part of the DaniWeb community

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