Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > S=1*1-2*2+...++(-1)n*n


Автор: toader 14.7.2009, 15:28
помогите с задачей вот оно:

Код

S=1*1-2*2+...+(-1)n*n


как я понел это идёт так:

Код

cin>>n;
i=1
S=1*1
whail(i=>n)
{
i=i+1;
S=i*i;
}
cout << s;



но вот тут затруднее там надо то - то +
как я понял это делается как-то так (-1^i+1) или (-i^i+1) но не знаю как это пишется ... можете помочи?

Автор: zim22 14.7.2009, 16:10
Цитата(toader @  14.7.2009,  15:28 Найти цитируемый пост)
whail

не, кит будет так: whale smile
Цитата(toader @  14.7.2009,  15:28 Найти цитируемый пост)
как я понял это делается как-то так

можно не мудрить, а проверять номер числа и в зав-ти от чётности выполнять одну из веток кода
Код

int n = 15;
int sum = 1;
for (int i = 2; i != n + 1; ++i) {
  if (i & 1)
    sum = sum + (i * i);
  else
    sum = sum - (i * i);
}

Автор: Cheloveck 14.7.2009, 16:24
Код

#include <iostream>

int main()
{
    int n;
    std::cin >> n;
    bool minus = false;

    if( n <= 0)
    {
        std::cout << 0 << std::endl;
        return 0;
    }
    
    
    int result = 0;
    for( int i = 1; i <= n; i++ )
    {
        if( minus )
            result -= i * i;
        else
            result += i * i;
        minus = !minus;        
    }
    
    std::cout << result << std::endl;

    return 0;
}

И впредь пробуй сначала сам думать

Автор: toader 14.7.2009, 16:49
оххх.. забыл про форум))) Спасибо вам) сделал уже но всёравно спасибо!)
Код

#include <iostream>
using namespace std;
int main()
{
int n,i,restu,s=0;
cin >>n;
i=0;
while(i<=n)
{
    i=i+1;
    restu=i%2;
    if(restu==0)
        s-=i*i;
    else if(restu==1)
        s+=i*i;
    else
        printf("error");
}
cout<<s;
}


Автор: azesmcar 14.7.2009, 16:49
Код

#include <iostream>

int main()
{
    unsigned int n;
    std::cin >> n;

    int result = 0;
    int multpl = 1;
    for( unsigned int i = 1; i <= n; i++, multpl = -1 * multpl )
        result += multpl * i * i;

    std::cout << result << std::endl;
}

ладно, я тоже свою версию приведу smile

Добавлено через 1 минуту и 53 секунды
Цитата(toader @  14.7.2009,  16:49 Найти цитируемый пост)
сделал уже 

о! прогресс.

Автор: toader 14.7.2009, 16:55
Цитата(azesmcar @  14.7.2009,  16:49 Найти цитируемый пост)
о! прогресс.

как всегда у вас какие-то сложные и непонятные коды с i++)) я в си делаю упреждения из паскаля))
о кстати к случию как сделать такое?)))

p=1*(1+2)*...*(1+2+...+n).

вот я тут начел, но не приходит в голову как сделать чтобы добовляласи 1+2+3 потом 1+2+3+4 потом 1+2+3+4+5((
Код

int n,i=0,p=0;
cin >>n;
while(i<=n)
{
p=1*(1+2+i);
i=i+1;
}
cout<<p;


Автор: azesmcar 14.7.2009, 16:58
Цитата(toader @  14.7.2009,  16:55 Найти цитируемый пост)
как всегда у вас какие-то сложные и непонятные коды с i++)) я в си делаю упреждения из паскаля))

а что тут сложного? завожу переменную multpl. На первом шаге цикла она равна 1, потом делает ++i и вместе с ним умножаем multpl на -1 (т.е. сейчас в нем значение -1), переменной result прибавляем multpl * i * i (т.е. на первом шаге 1 * 1 * 1, на втором -1 * 2 * 2, на третьем 1 * 3 * 3 и так далее).

Автор: toader 14.7.2009, 17:02
Цитата(azesmcar @ 14.7.2009,  16:58)
а что тут сложного? 

да.. только вот For'paМ я ишё не полизовался)) я вот только прошол iF и сечас на while сижу)

Автор: azesmcar 14.7.2009, 17:04
Цитата(toader @  14.7.2009,  17:02 Найти цитируемый пост)
да.. только вот For'paМ я ишё не полизовался)) я вот только прошол iF и сечас на while сижу) 

ну..значит пора начинать smile 

Автор: Cheloveck 14.7.2009, 17:21
Цитата

p=1*(1+2)*...*(1+2+...+n).

так тут ещё проще.
Код

#include <iostream>

int main()
{
    int n;
    std::cin >> n;

    if( n <= 0)
    {
        std::cout << 0 << std::endl;
        return 0;
    }
    
    
    int result = 1;
    int multiple = 0;
    for( int i = 1; i <= n; i++ )
    {
        multiple += i;
        result *= multiple;
    }
    
    std::cout << result << std::endl;

    return 0;
}

Повторяю ещё раз, думай сам.

Добавлено через 13 минут и 28 секунд
Цитата(toader @  14.7.2009,  18:02 Найти цитируемый пост)
да.. только вот For'paМ я ишё не полизовался)) я вот только прошол iF и сечас на while сижу) 

интересно, это как так проходят отдельно for while и if? smile

Автор: Andrew121 14.7.2009, 17:46
Цитата(toader)
я в си делаю

Какой же это Си ?! Потоки что, тоже из Си?

Добавлено @ 17:50
toader, Я посмотрю ты уже в общий раздел заходишь. Не рановато ли, не зная for () ? smile 
Мож обратно, к новичкам, там как бы спокойнее smile 

Автор: Cheloveck 14.7.2009, 17:59
Цитата(Andrew121 @  14.7.2009,  18:46 Найти цитируемый пост)
Мож обратно, к новичкам, там как бы спокойнее

++

Автор: azesmcar 14.7.2009, 18:52
Цитата(Andrew121 @  14.7.2009,  17:46 Найти цитируемый пост)
Цитата(azesmcar @  14.7.2009,  16:58 Найти цитируемый пост)
я в си делаю

Какой же это Си ?! Потоки что, тоже из Си?

А почему я цитирован? smile я такого не писал smile 

Автор: zim22 14.7.2009, 18:59
 smile 
Цитата(azesmcar @  14.7.2009,  18:52 Найти цитируемый пост)
А почему я цитирован?

это такая фича форума. работает если цитировать цитировавшего цитату. %)

Автор: Andrew121 14.7.2009, 19:06
azesmcar, Прошу прощения. Не обратил внимание. Исправлю.

Автор: toader 15.7.2009, 13:32
[quote=Cheloveck, 14.7.2009,  17:21, post1921061]Цитата

p=1*(1+2)*...*(1+2+...+n).

так тут ещё проще.

Код

    {
        std::cout << 0 << std::endl;
        return 0;
    }
    
    
    int result = 1;
    int multiple = 0;
    for( int i = 1; i <= n; i++ )
    {
        multiple += i;
        result *= multiple;
    }
    
    std::cout << result << std::endl;
    return 0;


а без for что не как не получается?))  smile 

Автор: azesmcar 15.7.2009, 13:39
Цитата(toader @  15.7.2009,  13:32 Найти цитируемый пост)
а без for что не как не получается?))  smile  


toader

Ну хоть постесняйся что ли, первый пост на форуме был более месяца назад, т.е. ты как минимум месяц уже С++ изучаешь и до сих пор не знаешь for. Об этом на второй странице любой книги написано, почитал бы что нибудь.

Автор: GoldFinch 15.7.2009, 13:45
Код

    int result = 1;
    int multiple = 0;
    int i = 1;
    while(  i <= n )
        result *= multiple += i++;


Добавлено через 13 минут и 49 секунд
http://codepad.org/MaNzlnwz
ня ^_^

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)