Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
4 / 4 / 4
Регистрация: 03.01.2012
Сообщений: 112
1

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

18.11.2013, 22:24. Показов 3240. Ответов 5
Метки нет (Все метки)

Добрый день, у меня вот есть код на паскале, нужно перевести на с++. Не очень понятно, что там в функции выходит, и какие параметры мы передаем..

Условие: Даны натуральное число 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;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2013, 22:24
Ответы с готовыми решениями:

Рассмотреть отрезки последовательности, состоящие из степеней пятерки
Здравствуйте, нужно написать код с помощью функции на с++. Вот условие: Даны натуральное число n,...

Рассмотреть отрезки последовательности,состоящие из одинаковых чисел
Доброе утро форум беда пришла не одна.:cry: Не знаю как бороться с этим :-| 2. Дан массив целых...

Рассмотреть отрезки последовательности состоящие из степеней пятерки
Дано натуральное число n, целые числа a1, ..., an. Рассмотреть отрезки последовательности a1, ...,...

Рассмотреть отрезки последовательности, состоящие из полных квадратов
Рассмотреть отрезки последовательности, состоящие из полных квадратов. получить наибольшую из длин...

5
33 / 33 / 5
Регистрация: 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);
}
2
4 / 4 / 4
Регистрация: 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;
}
0
33 / 33 / 5
Регистрация: 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;
1
4 / 4 / 4
Регистрация: 03.01.2012
Сообщений: 112
18.11.2013, 22:44  [ТС] 5
Peregrin, компилится, и даже работает) заменил на int a[] = new int[n];
ошибка: fails to determine size of `a'
0
33 / 33 / 5
Регистрация: 16.11.2012
Сообщений: 59
18.11.2013, 22:55 6
Slowpok, точнее вот так:
C++
1
int* a = new int[n];
А почему компилится просто int a[n]; для меня остаётся загадкой пока Оо
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2013, 22:55

Дан массив целых чисел. Рассмотреть отрезки массива
Дан массив целых чисел. Рассмотреть отрезки массива (группы идущих составляющих чисел), состоящие...

Рассмотреть отрезки, идущих подряд членов последовательности, состоящие из полных квадратов. Получить наибольшую из длин рассматриваемых отрезков
Даны натуральное число n, целые числа a_1 ,…,a_n. Рассмотреть отрезки идущих подряд членов данной...

Дан массив из N натуральных чисел. Определить количество степеней пятёрки
Помогите пожалуйста написать программу, вот условие-Дан массив из N натуральных чисел.Определить...

Определить, есть ли среди заданной последовательности чисел отрезки, состоящие из полных квадратов
Дано натуральное число n и целые числа a1,a2,…an. Написать программу, определяющую, есть ли среди...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru