Форум программистов, компьютерный форум CyberForum.ru

Вывод вычисления произведения - C++

Восстановить пароль Регистрация
 
DVGU.MAKC
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 35
11.06.2013, 13:54     Вывод вычисления произведения #1
Есть цикл, в котором при помощи cout выводятся номера элементов массива, как вывести вычисления произведений?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main()
{
    int a[10000];
    int res = 1;
 for (int i = 0; i < 10000; i+=3)
{
 res *= a[i];
 res *= a[i+1];
 res *= a[i+2];
 cout<<"a="<<i<<endl;
}
    system("PAUSE");
    return 0; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2013, 13:54     Вывод вычисления произведения
Посмотрите здесь:

Вычисления произведения и суммы двух матриц C++
Составьте программу вычисления произведения элементов матрицы B(N,N), кратных 5. C++
Разработать функцию вычисления произведения C++
Составить программу для вычисления произведения чисел из диапазона от а до b, кратных 5 C++
ScalarProduct для вычисления скалярного произведения двух векторов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
11.06.2013, 13:58     Вывод вычисления произведения #2
C++
1
2
3
4
5
 for (int i = 0; i < 10000; i+=3)
{
 res *= a[i];
 res *= a[i+1];
 res *= a[i+2];
Это Вы таким образом сократили в 3 раза количество итераций? Как звучит задача?
DVGU.MAKC
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 35
11.06.2013, 14:03  [ТС]     Вывод вычисления произведения #3
Цитата Сообщение от Мимино Посмотреть сообщение
C++
1
2
3
4
5
 for (int i = 0; i < 10000; i+=3)
{
 res *= a[i];
 res *= a[i+1];
 res *= a[i+2];
Это Вы таким образом сократили в 3 раза количество итераций? Как звучит задача?
Задача такая:
1) Оптимизировать вот этот код при помощи развертывания циклов:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main()
{
    int a[10000];
    int res = 1;
 for (int i = 0; i < 10000; i++)
{
 res *= a[i];
 cout<<"a="<<i<<endl;
}
    system("PAUSE");
    return 0; 
}
получается:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main()
{
    int a[10000];
    int res = 1;
 for (int i = 0; i < 10000; i+=3)
{
 res *= a[i];
 res *= a[i+1];
 res *= a[i+2];
 cout<<"a="<<i<<endl;
}
    system("PAUSE");
    return 0; 
}
Так?
2) Вывел номера элементов массива. Необходимо вывести вычисления произведения. Чтоб показать что делает программа и потом сделать так что бы увидеть результат получающийся при развертки цикла:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    const clock_t start = clock();
    int a[100];
    int res = 1;
 for (int i = 0; i < 100; i+=3)
{
 res *= a[i];
 res *= a[i+1];
 res *= a[i+2];
 cout<<"a="<<i<<endl;
}
    const double time = static_cast<double>(clock() 
    - start) / CLOCKS_PER_SEC;
    std::cout << time << " seconds" << std::endl;
    system("PAUSE");
    return 0; 
}
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
11.06.2013, 14:15     Вывод вычисления произведения #4
Цитата Сообщение от DVGU.MAKC Посмотреть сообщение
Необходимо вывести вычисления произведения.
То есть нужно вывести результат работы цикла, или как? В чем сложность добавить в нужном месте
C++
1
cout << res << endl;
?
DVGU.MAKC
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 35
11.06.2013, 14:19  [ТС]     Вывод вычисления произведения #5
Цитата Сообщение от Мимино Посмотреть сообщение
То есть нужно вывести результат работы цикла, или как? В чем сложность добавить в нужном месте
C++
1
cout << res << endl;
?
Ну я так понял да, что бы понять что он делает, а добавить надо за циклом или в самом цикле?

Добавлено через 2 минуты
C
1
2
3
4
5
6
7
{
 res *= a[i];
 res *= a[i+1];
 res *= a[i+2];
 cout<<"a="<<i<<endl;
 cout << res << endl;
}
Если так то выдает,
C
1
2
а=69
 0 - что обозначает нуль тогда
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
11.06.2013, 14:22     Вывод вычисления произведения #6
Цитата Сообщение от DVGU.MAKC Посмотреть сообщение
Ну я так понял да, что бы понять что он делает, а добавить надо за циклом или в самом цикле?
Ну можно так
C++
1
2
3
4
5
6
7
 for (int i = 0; i < 100; i+=3)
{
 res *= a[i];
 res *= a[i+1];
 res *= a[i+2];
 cout<< "a=" << i << "   res = " << res <<endl;
}
А можно так
C++
1
2
3
4
5
6
7
8
 for (int i = 0; i < 100; i+=3)
{
 res *= a[i];
 res *= a[i+1];
 res *= a[i+2];
 cout<<"a="<<i<<endl;
}
cout << "res = " << res << endl;
Как больше нравится. так и делайте.

Добавлено через 1 минуту
Цитата Сообщение от DVGU.MAKC Посмотреть сообщение
Если так то выдает,
Код C
1
2
3
а=69
0 - что обозначает нуль тогда
А что содержится в Вашем массиве? Это еще хорошо, что 0 выдает.
DVGU.MAKC
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 35
11.06.2013, 14:25  [ТС]     Вывод вычисления произведения #7
сначала выдает такое а=0 res=673039520 потом а=3 res=0, а что нужно сделать чтобы массив что то содержал, то есть что бы программа что то делала и выдавалась время работы программы, а не как у меня получается время вывода значений массива или я не так все понимаю? чтоб короче показать что между выполнением этого for (int i = 0; i < iN; i++){ res *= a[i];} и этого for (int i = 0; i < iN; i+=3){ res *= a[i]; res *= a[i+1]; res *= a[i+2];} есть разница во времени
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
11.06.2013, 14:33     Вывод вычисления произведения #8
Массив можно заполнить рандомными числами. Дл этого
1.
C++
1
2
3
#include <stdlib>
или #include <stdlib.h>
#include <time.h>
2. Перед Вашим циклом расчета.
C++
1
2
3
srand(time(NULL));
for (int i = 0; i < 100; i++)
            a[i] = 1 + rand() % 99;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2013, 14:50     Вывод вычисления произведения
Еще ссылки по теме:

Разработать алгоритм и записать программу вычисления значения суммы и произведения C++
C++ Реализовать функцию вычисления произведения и частного двух вещественных чисел
Функция для вычисления следа матрицы и произведения матриц C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DVGU.MAKC
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 35
11.06.2013, 14:50  [ТС]     Вывод вычисления произведения #9
Это получается:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <time.h>
#include <stdlib>
#include <iostream>
using namespace std;
 
int main()
{
    const clock_t start = clock();
    int a[100];
    int res = 1;
    srand(time(NULL));
    for (int i = 0; i < 100; i++)
            a[i] = 1 + rand() % 99;
 
{
 res *= a[i];
 cout<<"a="<<i <<"  res = " << res <<endl;
}
Так?
Yandex
Объявления
11.06.2013, 14:50     Вывод вычисления произведения
Ответ Создать тему
Опции темы

Текущее время: 01:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru