Помогите с задачками по С++ Среди N целых положительных чисел не больше 1000 найти числа...

0 голосов
11 просмотров

Помогите с задачками по С++

Среди N целых положительных чисел не больше 1000 найти числа с
наибольшей суммой цифр и наименьшей. Если таких чисел несколько,
то следует выбирать те, что идут в перечне первыми.
В первой строке дано число N (N <= 1000). В следующей строке<br> содержатся же числа. В выходной поток вывести два числа через пробел,
соответствующие условию задачи. Сначала вывести число с наибольшей
суммой цифр, а затем с наименьшей.

Входные данные
5
12 10 101 1000 102

Выходные данные
12 10


Информатика (46 баллов) | 11 просмотров
Дан 1 ответ
0 голосов

Считываешь все числа примяняя к ним фунцию (f) которая будет считать сумму цифр, запоминая 2 числа в которых f вернет максимальное и минимальное. Или тебе код нужен?


#include using namespace std;int f(int a){    int r=0;    r+=a/1000;    a=a%1000;    r+=a/100;    a=a%100;    r+=a/10;    a=a%10;    r+=a;return (r);}int main(){    int nf,num,n,ansm=0,ansmax=0,min1=100,max1=-100;cin>>n;for(int i=1;i<=n;i++) {     cin>>num;    nf=f(num);    if(nfmax1){max1=nf;ansmax=num;}}cout<<ansmax<<' '<<ansm;}<br>

(320 баллов)
0

спасибо, но лучше бы код, поджимает время...

0

Надо код!!!

0

#include
using namespace std;
int f(int a){
int r=0;
r+=a/1000;
a=a%1000;
r+=a/100;
a=a%100;
r+=a/10;
a=a%10;
r+=a;
return (r);
}
int main()
{
int nf,num,n,ansm=0,ansmax=0,min1=100,max1=-100;
cin>>n;
for(int i=1;i<=n;i++)<br> {
cin>>num;
nf=f(num);
if(nf if(nf>max1){max1=nf;ansmax=num;}
}
cout<<ansmax<<' '<<ansm;<br>}
// извиняй что калично

0

Ай, тут неправильно, я неправильно понял условие

0

а не, норм

0

Я тут немного поменял код под себя и он неправильно работает. Можешь обьяснить, где ошибка? А то я слишком дремучий.

0

Ну если напишешь как поменял

0

#include
using namespace std;
int f (int n)
{
int s=0;
s=n/1000+n%1000+n/100+n%100+n/10+n%10+n;
return s;
}
int main()
{
int nf,num,a,chm=0,chmax=0,min1=0,max1=0;
cin>>a;
for(int i=1;i<=a;i++)<br>{
cin>>num;
nf=f(num);
if(nf{
min1=nf;
chm=num;
}
if(nf>max1)
{
max1=nf;
chmax=num;
}
}
cout<<chmax<<" "<<chm;<br>}

0

Потому-что перекаверкали функцию (в таком плане как у вас - очень длинная будет) и потому-что сделали минимальное число сразу 0 (а куда еще меньше?) Вот так опять будет работать

0

#include
using namespace std;
int f (int n)
{
int s=0;
for(int i=1000;i>1;i/=10)
{
s+=n/i;
n%=i;
}
return s+n;
}
int main()
{
int nf,num,a,chm=0,chmax=0,min1=30,max1=0;
cin>>a;
for(int i=1;i<=a;i++)<br>{
cin>>num;
nf=f(num);
if(nf{
min1=nf;
chm=num;
}
if(nf>max1)
{
max1=nf;
chmax=num;
}
}
cout<<chmax<<" "<<chm;<br>}