Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2009, 20:18   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию Цикл for в С++ - простая математическая задача

Математическое выражение (x-2)*(x-4)*(x-8).....(x-64)
При Х=5 программа выдает значение 3481, если пересчитываю на калькуляторе, правильным будет результат 157 707.
Ошибка в изначально заданном расчете произведений шагов цикла (шаг - число увеличивается в два раза), а как правильно написать этот расчет - я не знаю.
Вот код
Код:
#include "stdafx.h"
#include<conio.h>
#include<iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{ int R1, x=1;

cout<<"Vvedite snatchenie X: ";
cin>>x;
cout<<endl;
for (int i=2;i<=64;i=i*2)
{// ошибка здесь!!!!!
R1=x-i; 
	R1=R1*(x-i);
}

cout<<R1;
getch ();
return 0;

}
Поправьте пожалуйста!

И скажите, а разве можно записывать шаг таким образом i=i*2 ? В учебниках не встречала таких вариантов, но как же в этой ситуации его записать?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 20.09.2009, 20:54   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Код:
#include "stdafx.h"
#include<conio.h>
#include<iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{ 
int R1, x=1;
cout<<"Vvedite snatchenie X: ";
cin>>x;
cout<<endl;
R1 = 1;
for (int i=2; i<=64; i=i*2) 
	R1=R1*(x-i);
cout<<R1;
getch ();
return 0;
}
Можно, в C/C++ вообще с циклом for много чего делать, в отличие от паскаля.
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 20.09.2009, 20:59   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Спасибо!)) Наверняка у Вас все правильно, сейчас буду смотреть.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 21.09.2009, 10:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

На всякий случай предложу еще и такой цикл:
Код:
for (int i = 2; i < 8; sm*=(x-(i++ <<2)));
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.09.2009, 19:47   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
for (int i = 2; i < 8; sm*=(x-(i++ <<2)));
так будеь вернее
for(int i =0; i<7; sm*=(x-(1<<i++)))
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не простая задача !!! MaxZoa Microsoft Office Excel 2 06.03.2008 18:07
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34
Простая задача utyyf Помощь студентам 25 18.10.2007 14:50