954,480 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

array problem

two static arrays size 10 need to be copied to an empty target array size 20.
like this: you copy from the first array the nums till arr1[i] = 0 then
you switch to the second array and copy to the nums till arr2[i] = 0.
then you switch back, and continue to copy the nums, without copying the '0's.
example :
arr1[10] = {1,1,1,0,2,2,2,2,0,0)
arr2[10] = {3,3,3,3,0,4,4,4,0,5}
then the result array will be:
result[20] = {1,1,1,3,3,3,3,2,2,2,2,4,4,4,5,0,...0}

the thingy i wrote prints all the nums allright except the last ones in the second array. any ideas why?
thanx in advance.

#include <stdio.h>
#define size 10
//int Get_Num ();
//void Fill_Arr(int a[]);
void Print_Arr(int arr[],int num);
void Switch (int *a, int *b, int *res);


void main()

{
	int arr1[size]={9,9,0,8,8,8,8,0,7,7};
	int arr2[size]={1,1,1,0,2,2,0,3,3,3};
	int i;
	int arr3[20]={0};

//Fill_Arr(arr1);
//Fill_Arr(arr2);
Switch(arr1,arr2,arr3);
Print_Arr(arr3,20);
}


void Switch (int *a, int *b, int *res)
{
	int *ptr = res;
	int i;
	int *temp1 = a;
	int *temp2 = b;
	
	while(ptr-res<20)
		{
			if (*a)
		{
			while(*a)
			{
				*ptr = *a;
	            a++;
				ptr++;
			}
			
		}
	
	else if(*b)
		{
		    if(a-temp1<10)
			 a++;
			
			while(*b)
			{
			   
			*ptr = *b;
			b++;
			ptr++;
			}

			if(b-temp2<10)  //till the end of arr2[]
				b++;
			
		
  	}
	if(!(*b)&&!(*a))   
			b++;	
}
}
yila
Newbie Poster
17 posts since Jun 2009
Reputation Points: 7
Solved Threads: 0
 

http://sourceforge.net/apps/mediawiki/cpwiki/index.php?title=Indentation
Your code is awful to look at.

While you're there, look up void main as well.

Salem
Posting Sage
Team Colleague
11,531 posts since Dec 2005
Reputation Points: 5,862
Solved Threads: 953
 

thanks for the advice.
can you say anything constructive about the code itself as well?

yila
Newbie Poster
17 posts since Jun 2009
Reputation Points: 7
Solved Threads: 0
 

Nope - if you can't be bothered to make a decent job of presentation, then I can't be bothered to read it.

Like the sig says, post crap and be ignored.

If this were a CV, it would have gone in the bin in a hot second.

Salem
Posting Sage
Team Colleague
11,531 posts since Dec 2005
Reputation Points: 5,862
Solved Threads: 953
 

I want to see your print function . If it is some thing of this sort

for(i=0;i<20;i++)
                printf("%d\n",arr3[i]);


Then you will get junk characters in the ending. The reason for this is that there are less than 20 numbers in arr 3.

abhimanipal
Master Poster
742 posts since Dec 2009
Reputation Points: 114
Solved Threads: 104
 

I want to see your print function . If it is some thing of this sort

for(i=0;i<20;i++)
                printf("%d\n",arr3[i]);

Then you will get junk characters in the ending. The reason for this is that there are less than 20 numbers in arr 3.

well...you're right. my print is:

void Print_Arr(int arr[], int num)
{
	int i;
for(i=0 ; i<num ; i++)
printf("%d",arr[i]);
printf("\n");
}


but i thought that the

int arr3[20]={0};


in the main()
took care of the junk values. my main problem is that the program won't print the last nums of the second source array and nothing i try helps :(

yila
Newbie Poster
17 posts since Jun 2009
Reputation Points: 7
Solved Threads: 0
 

Can you post the output that you are getting. This is the output that I am getting when I run your code

timberlake {~} > ./test1
9 9 1 1 1 8 8 8 8 2 2 7 7 3 3 3 4196247 9 9 8

timberlake {~} >

The last 4 values are junk. But the main point is I think no values from array B have been skipped

abhimanipal
Master Poster
742 posts since Dec 2009
Reputation Points: 114
Solved Threads: 104
 

Can you post the output that you are getting. This is the output that I am getting when I run your code

timberlake {~} > ./test1 9 9 1 1 1 8 8 8 8 2 2 7 7 3 3 3 4196247 9 9 8

timberlake {~} >

The last 4 values are junk. But the main point is I think no values from array B have been skipped

that's funny, my compiler didn't print the last values 3 3 3 putting junk instead of them. but you were right. one of my problems was that i didn't took care of the junk values by setting a counter and sending it to a print function as to print the arr till it.
anyho, your answer was very helpful, thanks! :)
in the end i decided on a bit different approach and re-wrote the whole damn thing. :/

yila
Newbie Poster
17 posts since Jun 2009
Reputation Points: 7
Solved Threads: 0
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: