Форум программистов, компьютерный форум CyberForum.ru

Задача на целочисельное решение - C++

Восстановить пароль Регистрация
 
maksym08
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 10
29.10.2012, 20:54     Задача на целочисельное решение #1
У меня есть задача: дано уравнение x1+x2+...+xn=r. Известны n и r.
Посмотрите пожалуста мой код. Тут находит количество решений, а надо + все эти решения. Спасибо!

#include <iostream>
#include <iomanip>
#include <sstream>
#include <conio.h>
#include <cmath>
using namespace std;

int main()
{
cout.width(62);
cout<<"Znahodgennia rozvazkiv rivniannia X1+X2+...+Xn=r"<<endl<<endl;
long int n,r,K;
cout<<"Vvedit kilkist zminnyh n: ";
cin>>n;
if (n<1) {cout<<"Pomylka: n>=1 !";getche();return 0;}
cout<<"Vvedit cilu constantu r: ";
cin>>r;
if (r<0) {cout<<"Pomylka: r>0 !";getche();return 0;}
long int fv=1;
for (int i=1;i<=(n+r-1);++i)
fv*=i;
long int f1=1;
for (int i=1;i<=(n-1);++i)
f1*=i;
long int f2=1;
for (int i=1;i<=r;++i)
f2*=i;
K=fv/(f2*f1);
cout<<"Kilkist rozvazkiv = "<<K<<endl;

getche();
return 0;
}

Добавлено через 33 минуты
Цитата Сообщение от maksym08 Посмотреть сообщение
У меня есть задача: дано уравнение x1+x2+...+xn=r. Известны n и r.
Посмотрите пожалуста мой код. Тут находит количество решений, а надо + все эти решения. Спасибо!

#include <iostream>
#include <iomanip>
#include <sstream>
#include <conio.h>
#include <cmath>
using namespace std;

int main()
{
cout.width(62);
cout<<"Znahodgennia rozvazkiv rivniannia X1+X2+...+Xn=r"<<endl<<endl;
long int n,r,K;
cout<<"Vvedit kilkist zminnyh n: ";
cin>>n;
if (n<1) {cout<<"Pomylka: n>=1 !";getche();return 0;}
cout<<"Vvedit cilu constantu r: ";
cin>>r;
if (r<0) {cout<<"Pomylka: r>0 !";getche();return 0;}
long int fv=1;
for (int i=1;i<=(n+r-1);++i)
fv*=i;
long int f1=1;
for (int i=1;i<=(n-1);++i)
f1*=i;
long int f2=1;
for (int i=1;i<=r;++i)
f2*=i;
K=fv/(f2*f1);
cout<<"Kilkist rozvazkiv = "<<K<<endl;

getche();
return 0;
}
Вот правильное решение на паскале, но паскаль я не учил. Помогите пожалуста!
type list=^node;
node=record
el:integer;
next:list;
end;
procedure poisk(r,n:integer;l:list);
var d:list;
q:integer;
begin
if r<n then exit;
if (r=0)and(n=0) then begin
d:=l;
while d<>nil do begin
write(d^.el,' ');
d:=d^.next;
end;
writeln;
exit
end;
q:=r-n+1;
while q>=1 do begin
new(d);
d^.el:=q;
d^.next:=l;
poisk(r-q,n-1,d);
dispose(d);
d:=nil;
if n=1 then exit; {последний Х может принять только одно значение}
q:=q-1;
end;
end;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2012, 20:54     Задача на целочисельное решение
Посмотрите здесь:

C++ Задача на строки(поправьте решение)
Решение на С++ C++
C++ Решение на С++
C++ решение
РЕШЕНИЕ??? C++
C++ Решение
Решение в VC++ C++
C++ Решение СЛАУ методом простых итераций, задача решена, только написать код осталось

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 21:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru