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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2015, 16:47   #1
synderen
Новичок
Джуниор
 
Регистрация: 27.09.2015
Сообщений: 3
По умолчанию Циклы (C++)

Ребят, помогите, пожалуйста, решить несколько задач по с++, не до конца разобраться.
1)

2)

3)

4)


Вот что у меня получилось по третьей:
Код:
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
     int n;
     double res=0;
     double temp;
     cout << "vvedite chisla:" << endl;
     cin >> n;
     for (int k=1;k<=n;k++)
     {
           temp=(double)k;
           double a=-1;
           double b=k+1;
           res=res+(pow(a,b))/(k*(k+1));
      }
      cout << "result: " << res << endl;
      system("pause");
      return 0;
}
Запускается, работает, но считает неправильно.

И по 2:
Код:
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
 float x;
 int c=1;
 int z=1;
 int result;
 cin >> x;
 for (int y=0; y<=64; y++)
 {
     if (y%2=0)
     {
         c=c*(x-y);
     }
     else
     {
         z=z*(x-y);
     }
     result=c/z;
}
cout << result;
}
Ругается на if (y%2=0).

Буду очень благодарен любой помощи.

Последний раз редактировалось synderen; 27.09.2015 в 17:39.
synderen вне форума Ответить с цитированием
Старый 27.09.2015, 17:35   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,831
По умолчанию

Цитата:
Ругается на if (y%2=0).
= - это присваивание, == - это сравнение
p51x вне форума Ответить с цитированием
Старый 27.09.2015, 17:48   #3
anticlown111
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 10
По умолчанию

Цитата:
Сообщение от synderen Посмотреть сообщение
Код:

           double a=-1;
           double b=k+1;
           res=res+(pow(a,b))/(k*(k+1));
Потому что вы возвели отрицательное число в вещественную степень(double), такое число не определено.
anticlown111 вне форума Ответить с цитированием
Старый 27.09.2015, 17:58   #4
synderen
Новичок
Джуниор
 
Регистрация: 27.09.2015
Сообщений: 3
По умолчанию

Цитата:
Сообщение от anticlown111 Посмотреть сообщение
Потому что вы возвели отрицательное число в вещественную степень(double), такое число не определено.
Сделал их интовыми, результат точно такой же.

Цитата:
Сообщение от p51x Посмотреть сообщение
= - это присваивание, == - это сравнение
Исправил, запускается, но при вводе четного числа выдает ответ 0, а при вводе нечетного - ругается.

Последний раз редактировалось synderen; 27.09.2015 в 18:02.
synderen вне форума Ответить с цитированием
Старый 27.09.2015, 18:33   #5
anticlown111
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 10
По умолчанию

Цитата:
Сообщение от synderen Посмотреть сообщение
Сделал их интовыми, результат точно такой же.
В определении функции pow оба аргумента имеют тип double, так что лучше замените эту функцию на (k%2==0 ? -1 : 1) и еще у вас не используется переменная temp, вместо k в сумме надо написать ее.

Во второй задаче переменные c,z,result у вас почему-то имеют тип int.

Последний раз редактировалось anticlown111; 27.09.2015 в 18:43.
anticlown111 вне форума Ответить с цитированием
Старый 27.09.2015, 18:42   #6
synderen
Новичок
Джуниор
 
Регистрация: 27.09.2015
Сообщений: 3
По умолчанию

Цитата:
Сообщение от anticlown111 Посмотреть сообщение
В определении функции pow оба аргумента имеют тип double, так что лучше замените эту функцию на (k%2==0 ? -1 : 1) и еще у вас не используется переменная temp, вместо k в сумме надо написать ее.
Вроде поправил, но результат(неправильный? я уже не уверен). в итоге получается ровно такой же.
Код:
#include "stdafx.h"
#include <iostream>
#include <math.h>

using namespace std;
int main()
{
	int n;
	double res = 0;
	double temp;
	cout << "vvedite chisla:" << endl;
	cin >> n;
	for (int k = 1; k <= n; k++)
	{
		temp = (double)k;
		res = res + (k % 2 == 0 ? -1 : 1) / (temp*(temp + 1));
	}
	cout << "result: " << res << endl;
	system("pause");
	return 0;
}
synderen вне форума Ответить с цитированием
Старый 27.09.2015, 19:04   #7
anticlown111
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 10
По умолчанию

Цитата:
Сообщение от synderen Посмотреть сообщение
Вроде поправил, но результат(неправильный? я уже не уверен). в итоге получается ровно такой же.
Почему вы считаете, что он неправильный? Проверил n<6, у меня все совпадает.
anticlown111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
циклы с++ Александр26 Помощь студентам 3 30.10.2012 23:28
Циклы Mr.KOHCEPBATOP Паскаль, Turbo Pascal, PascalABC.NET 22 10.10.2011 00:11
Циклы margarit Паскаль, Turbo Pascal, PascalABC.NET 4 20.01.2011 19:19
синусы и ко. циклы, вроде циклы Scorch92 Паскаль, Turbo Pascal, PascalABC.NET 2 22.12.2010 19:26
Циклы - вложенны циклы? tigga Microsoft Office Excel 5 19.02.2010 23:36