Rotate an array


 
Thread Tools Search this Thread
Top Forums Programming Rotate an array
# 8  
Old 05-05-2009
You are basically divvying up the array into two parts i.e. the last two elements make up one part while the rest make up the other part and the two parts are then swapped...am I correct in assuming that.
# 9  
Old 05-05-2009
I think the OP wants to "shift right" and "shift left" the elements of a sub-array.

Since the OP didn't post any code, I held off a little. This is some very old code for shifting array elements. I changed it to work on int arrays.

Code:
static
int *shift_arr(int *arr, const size_t nelems, const int dir)
{
	int *temp=malloc(nelems * sizeof(int) );
	if(temp==NULL)
		return NULL;
	switch (dir)
	{
	    default:
		case '>':
		    memcpy(&temp[1], arr, (nelems -1) * sizeof(int));
		    temp[0]=arr[nelems -1];
			break;
		case '<':
		    memcpy(temp, &arr[1], (nelems -1) * sizeof(int));
		    temp[nelems -1]=arr[0];
			break;
	}
	memcpy(arr, temp, nelems * sizeof(int));
	free(temp);

	return arr;
}

int *shift(int *arr,
          const size_t nelems,
          const size_t cnt,
          const int dir)
{
    int i=0;
    int *result=NULL;
	if(nelems > 1 && cnt > 0 && strchr("><", dir) !=NULL)
	   for(i=0;
	       i<cnt && (result=shift_arr(arr, nelems, dir))!=NULL;
	       i++);

	return result;
}

# 10  
Old 05-05-2009
TIMTOWTDI...
Code:
#include <stdio.h>

#define SZ (sizeof a / sizeof a[0])

void swap(int b[], int *p, int *q, int s)
{
    int i=0;
    while (i < 2) b[i++] = *p++;
    while (i < s) b[i++] = *q++; 
}

void btoa(int a[], int b[], int s)
{
    for (int i=0; i<s; i++)
        a[i]=b[i];
} 

int main()
{
    int a[] = {1,3,5,7,9,11,13};
    int b[SZ];
    int *p = (a+SZ-2);
    int *q = a;
    swap(b,p,q,SZ);
    btoa(a,b,SZ);
}

# 11  
Old 05-08-2009
Error Rotate an array

Nice work Mr shamrock.

Thanks for the program
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Logs do not rotate

My problem: Both access and error logs do not rotate any more and get really large. They are located here: /srv/www/+vHost name here+/logs/ Configuration seems to be here: /etc/logrotate.conf => looks OK, including "size 10M" to avoid large files (/etc/logrotate.d => is empty) manually... (4 Replies)
Discussion started by: floko
4 Replies

2. Shell Programming and Scripting

Log rotate

Hi, I have below script in logrotate.d to rotate logs. logs are not rotating after the file grow to 1k, do you have any idea? Is it because of it just only 1K? Please let me know if the below syntax is in correct. # more trotate /sourcepath/*/servers/*/logs/*log... (2 Replies)
Discussion started by: lpprasad321
2 Replies

3. HP-UX

How To Rotate A File in HP-UX?

I need to rotate a file in HP-UX of a application. I´ve tried to do a task in the cron with a script (with sed and ed commands) but it was a successfully option (the application continued writing the file :( ) LINEAS_OUT=$(wc -l < $RMISTDOUT) LINEAS_FIN=1,expr $LINEAS_OUT - 100p sed... (19 Replies)
Discussion started by: werkraft
19 Replies

4. UNIX for Dummies Questions & Answers

How to rotate the log messages?

Hi, i want to log rotate the /var/adm/messages file after reaching the specified limit and delete those logs. how do i do that. i you solaris 10 OS ,Please help me in doing the same.... (2 Replies)
Discussion started by: Rahulne25
2 Replies

5. Shell Programming and Scripting

Mysqldump rotate backup

I have a very simple script that uses a cron job to take a daily backup of our orders database. echo "Dumping ORDERS database"; mysqldump -u root --password='mypassword' -h '1.1.1.1' --opt --compress ORDERS $tbl_names > /Volumes/Files_Backup_1/db_backups/orders.sql echo "Copied database to... (2 Replies)
Discussion started by: timgolding
2 Replies

6. Shell Programming and Scripting

Help with a rotate log script

Hi all, Am trying to write my own log rotate script. Curremtly, what I have is as below: #!/bin/ksh file_to_rotate=${1} x=${2} while ] do let curr=${x} let prev=${x}-1 if ] ; then #echo "cp -p ${file_to_rotate} ${file_to_rotate}.${curr}" cp -p... (7 Replies)
Discussion started by: newbie_01
7 Replies

7. UNIX for Dummies Questions & Answers

Rotate logs every 1 hour

Hello All, I am learning unix and basically I want to rotate one of my application logs every 1 hour. I need to rotate that file every one hour. I looked in the forums and googled.. but couldn;t get proper information. Requesting you all to kindly guide me. Our application is running on... (4 Replies)
Discussion started by: arunpvp
4 Replies

8. Shell Programming and Scripting

Rotate an array by 2 places

I have an array a={0,1,2,3,4} The out put should be: 3,4,0,1,2 Please can any body write code for this program? Thanks! (4 Replies)
Discussion started by: ansar basha.k
4 Replies

9. Shell Programming and Scripting

Rotate log files

I have a big log,separated by the character:, one of the fields is the date in the format "day / month / year" and I need to remove the lines prior to 30 days. Can help me? (7 Replies)
Discussion started by: msanbrug
7 Replies

10. UNIX for Advanced & Expert Users

log rotate

hi , what is the meaning of log rotate? how do i rotate /var/adm/wtmps log and gzip it? (6 Replies)
Discussion started by: cromohawk
6 Replies
Login or Register to Ask a Question