Јас вака ја решив. Ќе беше пократка со функции но уште не сме ги учеле.
Идејата е да се направат две низи со парни и со непарни броеви па тие да се сортираат од најголема до најмала. Првата цифра е најголемиот број од подолгата низа и наизменично се земаат цифрите. Ако двете низи се со еднаква должина за првата цифра се зема поголемиот прв број од двете низи.
Можеби некој има побрзо решение? Не знам ова со двата најголеми броеви дали ќе беше пократко.
#include <iostream>
#include <cstdlib>
using namespace std;
int main ()
{
int i, j, k, l, n, t, pocetok, imaks, indeks, karta[8], broj, parna[8], neparna[8];
cin>>n;
k=0, l=0;
for (i=0;i<n;i++)
{
cin>>karta[i];
if (karta[i]%2==0) {parna[k]=karta[i];k++;}
else {neparna[l]=karta[i];l++;}
}
//sortiranje
for (pocetok=0; pocetok<k-1; pocetok++)
{
imaks=pocetok;
for (j=pocetok+1; j<k; j++)
{
if (parna[j]>parna[imaks]) imaks=j;
}
t=parna[imaks];
parna[imaks]=parna[pocetok];
parna[pocetok]=t;
}
for (pocetok=0; pocetok<l-1; pocetok++)
{
imaks=pocetok;
for (j=pocetok+1; j<l; j++)
{
if (neparna[j]>neparna[imaks]) imaks=j;
}
t=neparna[imaks];
neparna[imaks]=neparna[pocetok];
neparna[pocetok]=t;
}
if (k==l)
{
if (parna[0]>neparna[0])
{
broj=parna[0]*10+neparna[0];
for (j=1;j<k;j++)
{
broj=broj*100+parna[j]*10+neparna[j];
}
}
else
{
broj=neparna[0]*10+parna[0];
cout<<"broj pred for"<<broj;
for (j=1;j<k;j++)
{
broj=broj*100+neparna[j]*10+parna[j];
}
}
}
if (k>l)
{
broj=parna[0];
for (j=0;j<l;j++)
{
broj=broj*100+neparna[j]*10+parna[j+1];
}
}
if (k<l)
{
broj=neparna[0];
for (j=0;j<k;j++)
{
broj=broj*100+parna[j]*10+neparna[j+1];
}
}
cout<<broj;
system ("pause");
return 0;
}
|