• Предмет: Информатика
  • Автор: cat131dog
  • Вопрос задан 4 месяца назад

Вычислить: 1+2+4+8+....+2^10 и (1+2)*(1+2+3)*....*(1+2+....+10) С++ использовать long long
в чем ошибка у меня в произведении ответ не правильный получается
#include
using namespace std;

int main()
{

setlocale(LC_ALL, "rus");
long long s = 0;
long long p = 1;

for (int i = 0; i <= 10; i++) {
int t = 1 << i;
s += t;
}

for (int i = 1; i <= 10; i++) {
s += i;
p *= s;

cout << "Сумма: " << s << endl;
cout << "Произведение: " << p << endl;
}

return 0;
}

Ответы

Ответ дал: rostyslavrom2
1

Проблема в вашем коде заключается в том, что вы неправильно вычисляете произведение. Вы накапливаете сумму s и затем умножаете ее на p, не сбрасывая s между итерациями. Вам также следует начать инициализацию s и p внутри первого цикла и вывести результаты после второго цикла, чтобы получить правильные ответы.

Вот исправленный код:

cpp

Copy code

#include <iostream>

using namespace std;

int main()

{

   setlocale(LC_ALL, "rus");

   long long s = 0;

   long long p = 1;

   for (int i = 0; i <= 10; i++) {

       int t = 1 << i;

       s += t;

   }

   for (int i = 1; i <= 10; i++) {

       p *= (s + i);

   }

   cout << "Сумма: " << s << endl;

   cout << "Произведение: " << p << endl;

   return 0;

}

Теперь вам следует получить правильные ответы для суммы и произведения.


cat131dog: спасибо! а можешь ответить на мой последний вопром пожалуйста?
Вас заинтересует