Funkcja scalająca dwie tablice posortowane rosnąco w jedną

0

Witam,
mam za zadanie stworzyć funkcję w C, która łączy dwie posortowane tablice T1 i T2 w jedną posortowaną rosnąco T3.
Nie wiem jak to zrobić: gdy pętla dojdzie do końca krótszej tablicy reszta wartości z dłuższej powinna również znaleźć się w T3 na końcu.
Napisałem taki kod, który się nie kompiluje, ale nie pokazuje też błędów.
Proszę o pomoc.

#include<stdio.h>
#include<stdlib.h>

void Scal(int T1[], int n1, int T2[], int n2, int T3[]){
	int x,i=0,j=0,k=T1[i];

for(x=0;x<n1||x<n2;x++){

if(k<=T2[j]){
	T3[x]=T1[i];
	k=T1[i];
	i++;
	}

if(k>T2[j]){
	T3[x]=T2[j];
	k=T2[j];
	j++;
	}

	}
}
	
int main(){
	int tab1[6]={1,2,5,9,13,25};
	int n1=6;
	int tab2[4]={3,14,30,32};
	int n2=4;
	int i,n;
	int tab3[n];
	
	Scal(tab1,n1,tab2,n2,tab3);
	
	for(i=0;i<n;i++)
	printf("Elementy scalonej tablicy: %d\n",tab3[i]);
	
	return 0;
}
0

Dosłownie to samo pytanie było dwa dni temu. ;-)

0

Poszukam na forum :)
Tymczasem poprawiłem trochę kod, ale coś dalej nie tak.

#include<stdio.h>
#include<stdlib.h>

void Scal(int T1[], int n1, int T2[], int n2, int T3[]){
	int x,i=0,j=0,k=T1[i];

for(x=0;i<n1&&j<n2;x++){

if(k<T2[j]){
	T3[x]=T1[i];
	i++;
	k=T1[i];
	}

if(k>=T2[j]){
	T3[x]=T2[j];
	j++;
	k=T2[j];
	}

}
	
	if(i=n1)
	while(j<n2){
	T3[x]=T2[j];
	j++;
	}
	
	if(j=n2)
	while(i<n1){
	T3[x]=T2[i];
	i++;}
	
}
	
int main(){
	int tab1[6]={1,2,5,9,13,25};
	int n1=6;
	int tab2[4]={3,14,30,32};
	int n2=4;
	int i,n;
	int tab3[n];
	
	Scal(tab1,n1,tab2,n2,tab3);
	
	for(i=0;i<n;i++)
	printf("Elementy scalonej tablicy: %d\n",tab3[i]);
	
	return 0;
} 
0

który się nie kompiluje, ale nie pokazuje też błędów.

Niemożliwe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1