PDA

View Full Version : Решение на лесна задача на С++. Много Ви моляяя



SweetBunny
06-20-2007, 17:59
Ето задачата, спешно е!

Да се напише програма, която намира произведението на целите числа в интервала (m,n) m<=n.

Задачата трябва да се реши по 2начина: 1-вия с oператорът do; 2-рия с операторът while.

Спешно е! Много Ви моля, помогнете ми!
Мерси предварително :)

т.1 от Правилника!

Модерирано от sh3_1s_7h3_0n3

06-20-2007, 18:33
Program Proizvedenie;
Var m,n,i:integer;
pr:integer;
Begin
printf('vyvedete n');scanf(%d,n);
printf('vyvedete m');scanf(%d,m);
pr=1;
for(i=n;i<=m;i++);
pr=pr*i;
scanf('prozivdenieto e', pr);



Program Pr2;
....
i=n;
while (n<m) do
pr:=pr*i;
i++;
...
Zna4i dano sym ti pomognala, samo da ti kaja, 4e za formatirashite stringove, demek printf i scanf ne sym sig kak bqha, vij si gi ot knigata, vtoriq varinat samo sym smenila fragmenta s cikyla, drugoto si e pak kato v pyrvata zad. Uspeh :)

SweetBunny
06-20-2007, 20:29
Program Proizvedenie;
Var m,n,i:integer;
pr:integer;
Begin
printf('vyvedete n');scanf(%d,n);
printf('vyvedete m');scanf(%d,m);
pr=1;
for(i=n;i<=m;i++);
pr=pr*i;
scanf('prozivdenieto e', pr);



Program Pr2;
....
i=n;
while (n<m) do
pr:=pr*i;
i++;
...
Zna4i dano sym ti pomognala, samo da ti kaja, 4e za formatirashite stringove, demek printf i scanf ne sym sig kak bqha, vij si gi ot knigata, vtoriq varinat samo sym smenila fragmenta s cikyla, drugoto si e pak kato v pyrvata zad. Uspeh :)
Това С++ ли е, миличка, че от първото нищо не разбирам.
Трябват ми 2решения на задачата - едното да е само с while, другото с do. Bez nikakki masivi, ne sme gi vzemali...

RoyTheReaper
06-20-2007, 20:38
Това, което си написала е нещо средно между С (не ++) и Паскал. Ето как трябва да стане:

Със for:

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main(int nNumberofArgs, char* pszArgs[])
{
int m, n, i, pr;
cout<<"Vavedete m: ";
cin>>m;
cout<<"Vavedete n: ";
cin>>n;
pr=1;
for(i=m;i<=n;i++) {
pr=pr*i;
}
cout<<"Proizvedenieto e "
<<pr <<endl;
system("PAUSE");
return 0;
}

Със while:

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main(int nNumberofArgs, char* pszArgs[])
{
int m, n, i, pr;
cout<<"Vavedete m: ";
cin>>m;
cout<<"Vavedete n: ";
cin>>n;
pr=1;
i=m;
while (i<=n) {
pr=pr*i;
i++;
}
cout<<"Proizvedenieto e "
<<pr <<endl;
system("PAUSE");
return 0;
}

Тествани са, работят.

RoyTheReaper
06-20-2007, 20:43
БДУ не всички #include декларации ти трябват. Тези които не ти трябват, може да ги махнеш ако искаш.

SweetBunny
06-21-2007, 07:27
Благодаря. :)

06-21-2007, 18:58
Ето задачата, спешно е!

Да се напише програма, която намира произведението на целите числа в интервала (m,n) m<=n.

Задачата трябва да се реши по 2начина: 1-вия с oператорът do; 2-рия с операторът while.

[/b]
само за информация ... този вид задачи се решават с рекурсия, но разбирам, че още не сте ги учили, ако все пак проявяваш интерес ето една такава реализация:



// multiplication.cpp
// Dev C++

#include <iostream>
#include <conio.h>

using namespace std;

int result();
void multiplication(int m, int n, int& x);

int main()
{
cout << result();

getch();
return 0;
}
// -------------------------------------------
int result()
{
// m - начало на интервал, n - край на интервал, x - резултат
int n, m, x=1;

cout << "m = ";
cin >> m;
cout << "n = ";
cin >> n;

multiplication(m, n, x);

return x;
}

// --------------------------------------------
void multiplication(int m, int n, int& x)
{
if(m <= n)
{
x *= m;
multiplication(m+1, n, x);
}
}
// ------------------- END --------------------

Успех!