View Full Version : Решение на лесна задача на С++. Много Ви моляяя
SweetBunny
06-20-2007, 16:59
Ето задачата, спешно е!
Да се напише програма, която намира произведението на целите числа в интервала (m,n) m<=n.
Задачата трябва да се реши по 2начина: 1-вия с oператорът do; 2-рия с операторът while.
Спешно е! Много Ви моля, помогнете ми!
Мерси предварително :)
т.1 от Правилника!
Модерирано от sh3_1s_7h3_0n3
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, 19: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, 19: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, 19:43
БДУ не всички #include декларации ти трябват. Тези които не ти трябват, може да ги махнеш ако искаш.
SweetBunny
06-21-2007, 06:27
Благодаря. :)
Ето задачата, спешно е!
Да се напише програма, която намира произведението на целите числа в интервала (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 --------------------
Успех!