Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ronflat
0 / 0 / 0
Регистрация: 29.04.2010
Сообщений: 37
#1

что-то не так - C++

26.05.2011, 22:28. Просмотров 301. Ответов 5
Метки нет (Все метки)

Нужно сделать программу возвращающую произведение n последних элементов массива. Вот программа,но она почеу то возвращает n первых элементов,и непойм почему.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
 
 
using namespace std;
     int proizv(int N, int a[5]);
     int i,n,a[5];
 
     void main()
     {
    
       printf("\nkolvo alimentov massiva? "); 
       scanf("%d", &n);
       printf("\nv massive %d chisel:\n", n);
       srand(time(NULL));
       
           for (i=0; i<5; i++)
          {
              a[i]=rand()%9+2; 
              printf("%d  ", a[i]);
           }
       printf("proizv: %d", proizv(n-1, a));
system("pause");
     }
     int proizv(int N, int a[5])
     {
        if (N==0) 
            return a[0];
        else 
            return a[N]*proizv(N-1, a);
    return 0;
 
         
     }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2011, 22:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос что-то не так (C++):

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее? - C++
Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(){ float a,c; char b; skip: ...

Что в коде ни так? while не работает так, как ожидаю - C++
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но выдает начиная от 702 до 1000. Что ни так понимаю, где...

Что-то не то с Майкрсофт визуал студио 2010 или я что-то не так делаю - C++
Дело в том что при запуске вот этой программы: #include &lt;iostream&gt; using namespace std; int main () { for (int i=100; i&lt;=999;...

Что в программе делает так, что процессор грузится на 100%? - C++
Я не очень разбираюсь в С++, поэтому прошу вашей подсказки по поводу нагрузки на процессор. Вот код программы, на компьютере жрет всю...

Список: Что не так с выводом списка, потому что выводится какой-то мусор? - C++
#include &lt;iostream&gt; using namespace std; struct point { int data;//информационное поле-это даннные объявленного или используемого...

Лучший интерактивный самоучитель с++, но так понравился, что думаю, а что если после python изучать с++? - C++
http://academy.cppstudio.com/courses/ 1.) поделитесь опытом после какого языка вы перешли на с++. 2.) Что вам нравится/не очень в языке...

5
gooseim
Эксперт С++
510 / 414 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
26.05.2011, 22:32 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <iterator>
#include <functional>
 
using namespace std;
 
int main()
{
   const size_t N = 7;
   int arr[N];
   
   int n = 3;
   
   srand((unsigned)time(0));
   
   for(size_t i=0;i<N;i++)
      arr[i]=rand()%10-5;
      
   copy(arr, arr+N, ostream_iterator<int>(cout, " "));
   
   cout<<endl<<"multiplies: "<<accumulate((arr+N)-n, arr+N, 1, multiplies<int>())<<endl;
}
1
Ronflat
0 / 0 / 0
Регистрация: 29.04.2010
Сообщений: 37
26.05.2011, 22:37  [ТС] #3
Дело в том что нужно реализовать это все,именно рекурсивным методом
0
iama
1254 / 979 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
26.05.2011, 22:39 #4
Ну так правильно, рекурсия идет от N до 0. Должно быть так
C++
1
2
3
4
5
int proizv(int N, int a[5])
{
if (N == n - 1) return a[n - 1];
else return a[N] * proizv(N + 1, a);
}
А так вообще образцовый быдлокод
0
Ronflat
0 / 0 / 0
Регистрация: 29.04.2010
Сообщений: 37
27.05.2011, 06:52  [ТС] #5
С данной поправкой программа прсто выводит n-ный элемент сначала. а нужно произведение n с конца
0
dihlofos
Бродяга
304 / 258 / 17
Регистрация: 27.08.2010
Сообщений: 553
27.05.2011, 07:19 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <cstdlib>
#include <ctime>
#include <iostream>
 
int proizv (int *a, int size, int n)
{
    if (n == 1)
        return a[size-1];
    else
        return a[size-1] * proizv(a, size - 1, n - 1);
}
 
int main()
{
    int * arr, size, n, i;
    
    srand(time(0));
    
    std::cout << "Vvedite razmer massiva: ";
    std::cin >> size;
    
    arr = new int[size];
    
    for (i = 0; i < size; ++i)
    {
        arr[i] = rand() % 10;
        std::cout << arr[i] << ' ';
    }
    
    std::cout << "Vvedite kolvo elementov: ";
    std::cin >> n;
    
    std::cout << proizv(arr, size, n);
 
        return 0;
}
0
27.05.2011, 07:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2011, 07:19
Привет! Вот еще темы с ответами:

Как сделать так,что бы при введение,например 0;0 выдавалось сообщение,что точка находится на границе? - C++
#include &lt;iostream&gt; using namespace std; int main(){ double x, y; int R=10 cout &lt;&lt; &quot;Введите x: &quot; &lt;&lt;...

Ребят Незнаю что делать при запуске на компилирование выдает ошибку.Кто понимает что не так скажите а если не затруднит исправьте ошибку - C++
Разговаривал с двумя преподами говорят что проект не правильно создавал,хотя все правильно из группы спрашивал у парней говорят что не...

Что не так?) - C++
// Программа выполняет следущее: // 1. Считае среднее арифметическое всех положительных элементов массива; // 2. Считает сумму...

что-то не так - C++
в кои-то веки добился того что компилятор c-free не ругается на мой модуль.но использовать там я его не могу. решил запустить на visual...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru