
29.02.2008, 16:08
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
С нами:
10042776
Репутация:
275
|
|
Код:
void sort(int* a, int* b, int* c, int size_a, int size_b)
{
for(int i=0, j=0, k=0; k < size_a + size_b;) {
if( a[i] > b[j] )
c[k] = a[i++];
else if ( a[i] < b[j] )
c[k] = b[j++];
else
c[k] = a[i++], ++j;
++k;
}
}
|
|
|

29.02.2008, 16:18
|
|
Новичок
Регистрация: 08.02.2008
Сообщений: 12
С нами:
9607368
Репутация:
2
|
|
Во спс....
работает только при size_a = size_b
если же
size_a=4
size_b=4
снова билиберда.....
кароче, вот код
Код:
#include <iostream.h>
#include <conio.h>
void input (int a[],int n);
void output (int a[],int n);
void sort (int a[],int b[],int c[],int n, int m);
void main ()
{
int n,m;
int a[100],b[100],c[200];
cout<<"n?" ; cin>> n;
cout<<"m?" ; cin>> m;
input (a,n);
input (b,m);
sort (a,b,c,n,m);
output (c,n+m);
getch();
}
void input(int a[], int n)
{
cout<< "vvedite "<<n<<" 4isel: "<<endl ;
for(int i=0;i<n;i++)
cin>>a[i];
}
void output(int a[], int n)
{
for(int i=0;i<n;i++)
cout<<a[i]<<endl;
}
void sort ()
Последний раз редактировалось }I{ek; 29.02.2008 в 16:21..
|
|
|

29.02.2008, 16:41
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
С нами:
10042776
Репутация:
275
|
|
Код:
#include <iostream>
using namespace std;
void sort(int*,int*, int*, int, int);
void print(const int*, int);
void input(int*, int);
int main()
{
int sizeN;
int sizeM;
cout << "Input sizeN and sizeM" << endl;
cin >> sizeN >> sizeM;
int* a = new int[sizeN];
int* b = new int[sizeM];
int* c = new int[sizeN+sizeM];
if( ( a && b && c ) == 0 ) {
cerr << "Not enought memory" << endl;
return 1;
}
cout << "1st array : " << endl;
input(a, sizeN);
cout << "2d array : " << endl;
input(b, sizeM);
sort(a, b, c, sizeN, sizeM);
cout << "New array : " << endl;
print(c, sizeN + sizeM);
delete [] a;
delete [] b;
delete [] c;
return 0;
}
void print(const int *iptr, int size)
{
for(int i=0; i < size; ++i)
cout << iptr[i] << '\t';
cout << endl;
}
void input(int *iptr, int size)
{
cout << "Input " << size << " elements : " << endl;
for(int i=0; i < size; ++i)
cin >> iptr[i];
}
void sort( int* a, int* b, int* c, int size_a, int size_b)
{
int i=0, j=0, k=0;
for( ; i < size_a; ++i, ++k ) {
for(; j < size_b && b[j] > a[i]; ++j,++k )
c[k] = b[j];
c[k] = a[i];
}
for( ; j < size_b; ++j, ++k )
c[k] = b[j];
}
Последний раз редактировалось Forcer; 01.03.2008 в 00:41..
|
|
|

29.02.2008, 16:41
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами:
11099536
Репутация:
518
|
|
Код:
a[0]=20;
a[1]=19;
a[2]=16;
a[3]=12;
b[0]=13;
b[1]=5;
b[2]=4;
int i,j,l;
int m=4;
int n=3;
for(i=0,j=0,l=0;i<n;i++,l++)
{
for(;j<m && a[i]<b[j];j++,l++)
c[l]=b[j];
c[l]=a[i];
}
for(;j<m;j++,l++)
c[l]=b[j];
ну это на пятерку 
|
|
|

29.02.2008, 16:44
|
|
Новичок
Регистрация: 08.02.2008
Сообщений: 12
С нами:
9607368
Репутация:
2
|
|
неа....тож самое....
|
|
|

29.02.2008, 16:50
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
С нами:
10042776
Репутация:
275
|
|
мой вариант посмотри на предыдущей странице. там полностью прога написана. всё работает.
|
|
|

29.02.2008, 17:04
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами:
11099536
Репутация:
518
|
|
2 Forcer подебагь с разными рядами и сам поймешь!
|
|
|

29.02.2008, 18:53
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
С нами:
10042776
Репутация:
275
|
|
Извиняюсь. Первоначальный вариант компилировал в студии 2005 - в ней всё нормально было. MinGW "указал" на явную ошибку. Изменил код. Надеюсь, я буду прощён! ))
|
|
|

29.02.2008, 19:31
|
|
Новичок
Регистрация: 08.02.2008
Сообщений: 12
С нами:
9607368
Репутация:
2
|
|
кк код в студию плз!
|
|
|

29.02.2008, 19:33
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
С нами:
10042776
Репутация:
275
|
|
}I{ek
Я на предыдущей странице заменил код.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|