Ad blocker detected: Our website is made possible by displaying online advertisements to our visitors. Please consider supporting us by disabling your ad blocker on our website.
Всичко за извъндизайнерският профил на Вашият компютър
-
respec7_m3
- Нов

- Posts: 170
- Joined: Wed Jun 30, 2010 4:42 pm
Post
by respec7_m3 » Thu Dec 04, 2014 7:04 pm
Здравейте, ползвам Visual Studio 2013 под Windows 8 и се опитвам да направя програма изчисляваща факториел на въведено число от клавиатурата. Трябва ми програма, която да работи с меню и смея да твърдя, че я направих, но явно сметките за факториела не ми излизат и бих искал да помоля за помощ и да благодаря на всеки отзовал се!
Code: Select all
#include <iostream>
using namespace std;
void main()
{
int n, result = 1, choice;
do
{
cout << "1. First selection for n!\n"
"2. End of program" << endl;
cin >> choice;
switch (choice)
{
case 1:
cout << "n!: ";
cin >> n;
if (n <= 1)
{
result *= n;
n--;
}
cout << "n! = " << result << endl;
case 2:
cout << "THE END" << endl; break;
}
} while (true && choice != 2);
system("pause");
}
-
pLe0mAx
- Нов

- Posts: 137
- Joined: Wed May 06, 2009 8:32 am
Post
by pLe0mAx » Thu Dec 04, 2014 7:38 pm
Малко си далеч от истината, трябва ти цикъл, а може и с рекурсия да го направиш.В твоя случай ако въведа n=5 даже няма и да вляза в if-a, така и result няма да се промени. Погледни линка отдолу и ако имаш въпроси по кода питай.
боц
-
respec7_m3
- Нов

- Posts: 170
- Joined: Wed Jun 30, 2010 4:42 pm
Post
by respec7_m3 » Thu Dec 04, 2014 8:15 pm
pLe0mAx wrote:Малко си далеч от истината, трябва ти цикъл, а може и с рекурсия да го направиш.В твоя случай ако въведа n=5 даже няма и да вляза в if-a, така и result няма да се промени. Погледни линка отдолу и ако имаш въпроси по кода питай.
боц
Ами всъщност аз съм начинаещ все още и не съм много на ти с нещата и ако не е нахално бих помолил ако може да ми направиш кода работещ, защото аз се справих с това да направя програмка, която да изчислява факториел, но после трябваше да я направя с менюта тази програма и малко се обърках... от няколко часа пробвам различни вариянти, но не се получава.[/code]
-
pLe0mAx
- Нов

- Posts: 137
- Joined: Wed May 06, 2009 8:32 am
Post
by pLe0mAx » Thu Dec 04, 2014 8:20 pm
Code: Select all
#include <iostream>
using namespace std;
void main()
{
int i,n, result = 1, choice;
do
{
cout << "1. First selection for n!\n"
"2. End of program" << endl;
cin >> choice;
switch (choice)
{
case 1:
cout << "n!: ";
cin >> n;
for (i = 1; i <= n; i++)
{ result *= i;}
cout << "n! = " << result << endl;
case 2:
cout << "THE END" << endl; break;
}
} while (true && choice != 2);
system("pause");
}
Така би трябвало да стане. Няма в момента къде да го компилирам, може да има някоя козметична грешка от недоглеждане. Въпроса е да схванеш цикъла как с върти и как смята факториела, а не просто да копнеш и да кажеш готов съм

-
anonimen
- Web-tourist

- Posts: 1603
- Joined: Mon Jun 11, 2012 6:07 pm
-
Answers: 165
- Location: Parse error: unexpected "}" in /home/index.php on line 26
Post
by anonimen » Thu Dec 04, 2014 8:58 pm
pLe0mAx, дори това (май?) няма да тръгне, защото break-а, който се предполага да прекрати цикъла, се намира в switch-case-a, което няма да повлияе на цикъла, а на самия switch. Всъщност имаш нещо такова:
while (...) {
switch (some_var) {
case 1:
cout << "ddadada";
break;//този ред няма да прекъсне цикъла, а ще прекъсне Switch-a
case 2:
//neshto drugo
}
}
Точно този проблем ще намериш тук:
http://stackoverflow.com/questions/1420 ... e-a-switch
-
pLe0mAx
- Нов

- Posts: 137
- Joined: Wed May 06, 2009 8:32 am
Post
by pLe0mAx » Thu Dec 04, 2014 9:04 pm
В case-a след cout няма break, в примера го нямаше, не съм го и забелязъл за да го добавя.. Цикъла for ще си се изпълни и ще излезе от него, не му е нужен break. Да кажем, че въведем n = 5, цикъла върти 5 пъти и си трупа в/у резултата, излиза от цикъла и принтва резултата. Вече след него трябва break, за да излезе от case-a и да се върне към менюто
-
respec7_m3
- Нов

- Posts: 170
- Joined: Wed Jun 30, 2010 4:42 pm
Post
by respec7_m3 » Thu Dec 04, 2014 9:09 pm
Програмата тръгна и работи както трябва, сега ще я погледна по-обстойно и ако има нещо, което не разбирам ще питам и благодаря МНОГО!!!

-
respec7_m3
- Нов

- Posts: 170
- Joined: Wed Jun 30, 2010 4:42 pm
Post
by respec7_m3 » Thu Dec 04, 2014 10:07 pm
Добре колега, не разбирам защо трябва да използваме брояч във случая след като, когато пиша програма само за факториел без използване на do...while и case, програмата ми тръгва по следният начин:
Code: Select all
#include <iostream>
using namespace std;
void main()
{
int n, result = 1;
cout << "Input value for n!: ";
cin >> n;
while (true)
{
if (n <= 1)
{
break;
}
result *= n;
n--;
}
cout << "n! = " << result << endl;
system("pause");
}
-
pLe0mAx
- Нов

- Posts: 137
- Joined: Wed May 06, 2009 8:32 am
Post
by pLe0mAx » Fri Dec 05, 2014 6:54 am
За какъв брояч говориш? И в двата случая въртиш цикли. Седни и ги научи. В моя пример въртиш от 1 до n с for, в твоя пример въртиш от n до 1 с while.. ??? И двете работят това е ясно.
