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

Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки - C++

Восстановить пароль Регистрация
 
Slowpok
4 / 4 / 0
Регистрация: 03.01.2012
Сообщений: 112
18.11.2013, 22:24     Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки #1
Добрый день, у меня вот есть код на паскале, нужно перевести на с++. Не очень понятно, что там в функции выходит, и какие параметры мы передаем..

Условие: Даны натуральное число n, целые числа a1,…an. Рассмотреть отрезки последовательности a1,…an (подпоследовательности идущих подряд членов), состоящие из степени пятёрки. В каждом случае получить наибольшую из длин рассматриваемых отрезков (определить процедуры, позволяющие распознавать степени пятерки).


Код на паскале:
Pascal
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
Var A:array[1..100] of integer;
    i,n,k,max:byte;
Function F(n:integer):boolean;
Var pr:integer;
Begin
    pr:=1;
    While pr<n do
     pr:=pr*5;
    F:=(n=pr)and(n<>1);
End;
Begin
    write('Введите n: ');readln(n);
    For i:=1 to n do
    Begin
      write('A[',i,'] = ');
      readln(A[i]);
    End;
    max:=0;k:=0;
    For i:=1 to n do
    Begin
      if F(A[i]) then inc(k) 
      else
      Begin
        if k>max then max:=k;
        k:=0;
      end;
    End;
    if k>max then max:=k;
    if max>0 then writeln('Max последовательность из степеней 5-ки = ',max)
     else writeln('Нету степеней 5-ки');
    readln;
End.
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
37
38
#include <iostream>
#include <ctype.h>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int f() {
    ??
}
 
int main()
{
    srand(time(0)); 
 
int f(int, int);
 
int n,i,max=0,k=0;
cout<<"n="; cin>>n;
 
for(i=0;i<n;i++)
a[i]=rand()%100;
 
 
for(i=0;i<n;i++) {
if (f(a[i])) k++;
else
if (k>max) { max=k; k=0; }
}
 
if (k>max) max=k;
if (max>0) cout<<"max posledovatel`nost` iz stepenei 5:"<<max;
else cout<<"net stepenei";
 
system("PAUSE");
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2013, 22:24     Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки
Посмотрите здесь:

Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… C++
Дан массив из N натуральных чисел. Определить количество степеней пятёрки C++
Вывод целых чисел и их степеней C++
Вычислить сумму степеней в последовательности чисел C++
Задан массив K(m) попарно различных целых чисел. Получить все перестановки целых чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Peregrin
33 / 33 / 1
Регистрация: 16.11.2012
Сообщений: 59
18.11.2013, 22:26     Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки #2
если переписывать код с паскаля, то:
C++
1
2
3
4
5
6
bool f(int n) {
   int pr = 1;
   while(pr < n) 
     pr *= 5;
    return (n==pr) && (n != 1);
}
Slowpok
4 / 4 / 0
Регистрация: 03.01.2012
Сообщений: 112
18.11.2013, 22:34  [ТС]     Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки #3
Получается вот так, но меня смущает, что мы не передаем 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
37
38
39
#include <iostream>
#include <ctype.h>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
bool f(int n) {
   int pr = 1;
   while(pr < n) 
     pr *= 5;
    return (n==pr) && (n != 1);
}
 
int main()
{
    srand(time(0)); 
 
int n,i,max=0,k=0;
cout<<"n="; cin>>n;
int a[n];
for(i=0;i<n;i++)
a[i]=rand()%26;
 
 
for(i=0;i<n;i++) {
if (f(a[i])) k++;
else
if (k>max) { max=k; k=0; }
}
 
if (k>max) max=k;
if (max>0) cout<<"max posledovatel`nost` iz stepenei 5:"<<max<<endl;
else cout<<"net stepenei";
 
system("PAUSE");
 
return 0;
}
Peregrin
33 / 33 / 1
Регистрация: 16.11.2012
Сообщений: 59
18.11.2013, 22:41     Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки #4
Так в 27-ой строке ты вызываешь же f(a[i]).
Только у тебя программа сейчас не будет компилиться. Т.к. ты n вводишь с клавиатуры, то нужно делать вместо
C++
1
int a[n]
вот так:
C++
1
int a[] = new int[n];
, а в конце программы
C++
1
delete[] a;
Slowpok
4 / 4 / 0
Регистрация: 03.01.2012
Сообщений: 112
18.11.2013, 22:44  [ТС]     Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки #5
Peregrin, компилится, и даже работает) заменил на int a[] = new int[n];
ошибка: fails to determine size of `a'
Peregrin
33 / 33 / 1
Регистрация: 16.11.2012
Сообщений: 59
18.11.2013, 22:55     Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки #6
Slowpok, точнее вот так:
C++
1
int* a = new int[n];
А почему компилится просто int a[n]; для меня остаётся загадкой пока Оо
Yandex
Объявления
18.11.2013, 22:55     Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки
Ответ Создать тему
Опции темы

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