void scalanie(){ if(i1<n1 && i2<n2){ if (ciag1[i1] < ciag2[i2]) { ciag[i] = ciag1[i1]; i1=i1+1; } else { ciag[i] = ciag2[i2]; i2=i2+1; } i=i+1; scalanie(); } else if(i1<n1){ ciag[i] = ciag1[i1]; i1++; i++; scalanie(); } else if(i2<n2){ ciag[i] = ciag2[i2]; i2++; i++; scalanie(); } }
int main(void) { int i,ilosc1,ilosc2; int *tab1,*tab2,*tab; printf("Podaj ilosc elementow pierwszego zbioru: "); scanf("%d",&ilosc1); tab1=(int*)malloc(ilosc1*sizeof(int)); for(i=0;i<ilosc1;i++) { printf("\tPodaj %d element pierwszego zbioru: ",i+1); scanf("%d",&*(tab1+i)); } sort_proste(tab1,ilosc1); printf("Podaj ilosc elementow drugiego zbioru: "); scanf("%d",&ilosc2); tab2=(int*)malloc(ilosc2*sizeof(int)); for(i=0;i<ilosc2;i++) { printf("\tPodaj %d element drugiego zbioru: ",i+1); scanf("%d",&*(tab2+i)); } sort_proste(tab2,ilosc2); system("cls"); printf("Pierwszy zbior:\n"); for(i=0;i<ilosc1;i++) printf("%d\t",*(tab1+i)); printf("\nDrugi zbior:\n"); for(i=0;i<ilosc2;i++) printf("%d\t",*(tab2+i)); tab=(int*)malloc((ilosc1+ilosc2)*sizeof(int)); scalanie(tab1,tab2,tab,ilosc1,ilosc2); printf("\nZbior utworzony przez scalenie:\n"); for(i=0;i<ilosc1+ilosc2;i++) printf("%d\t",*(tab+i)); printf("\n"); system("pause"); free(tab1); free(tab2); free(tab); return 0; }
main() { printf("\nDlugosc pierwszego ciagu niemalejacego: "); scanf("%i", &n1); printf("wyrazy pierwszego ciagu:\n "); for (i1=0; i1<n1; i1=i1+1) scanf("%f", &ciag1[i1]); printf("\nDlugosc drugiego ciagu niemalejacego: "); scanf("%i", &n2); printf("wyrazy drugiego ciagu:\n "); for (i2=0; i2<n2; i2=i2+1) scanf("%f", &ciag2[i2]); n = n1+n2; i1=0; i2=0; i=0; /* while (i1<n1 && i2<n2) { * if (ciag1[i1] < ciag2[i2]) { ciag[i] = ciag1[i1]; i1=i1+1; } else { ciag[i] = ciag2[i2]; i2=i2+1; } i=i+1; } while (i1<n1) { ciag[i] = ciag1[i1]; i1=i1+1; i=i+1; } while (i2<n2) { ciag[i] = ciag2[i2]; i2=i2+1; i=i+1; } */ scalanie(); printf("\nCiag scalony:\n"); for (i=0; i<n; i=i+1) printf(" %f", ciag[i]); printf("\n\n"); }