Помощь - Поиск - Пользователи - Календарь
Полная версия: Полный квадрат
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
cxt
Помогите пожалуйста сделать чтобы программа искала наибольшую из длин полных квадратов. Моя ищет только наибольшую из длин одинаковых чисел.

#include <conio.h>
#include <iostream.h>
const n = 10;
int k, m, kmax, kindex;
void main()
{
int mas[n]={9,25,25,10,10, 10, 10, 5, 5, 5};
clrscr();
k=0;
m=mas[0];
kmax = 0;
kindex = 0;
for (int i=0; i<n; i++)
{
 if (mas[i]==m)
 {
    k++;
 }
 else
 {
    if (k > kmax)
    {
     kmax = k;
     kindex = i-kmax;
    }
    k = 0;
    m = mas[i];
    i--;
 }
}
cout<<"\n posledovatelnost odinakovix chisel "<<kmax<<"\n\n";
for (i = kindex; i < kindex+kmax; i++)
 cout << mas[i]<<" ";
 getch();
} 

klem4
Цитата
наибольшую из длин полных квадратов


Имеешь в виду самую длинную последовательность подрят идущих чисел, являющихся квадратами целого числа ?
cxt
Да smile.gif
volvo
ctx, как вариант:

#include <iostream>
#include <math.h>

int main() {
    const int n = 10;
    int mas[n] = { 9, 25, 25, 10, 16, 16, 9, 25, 25, 5 };

    int Len = 0, i = 0, start;
    while(i < n) {
        int count = 0, delta = 1;
        while(((int)sqrt(mas[i]) * (int)sqrt(mas[i])) == mas[i]) {
            count += 1; i += 1; delta = 0;
        }

        if(Len < count) {
            start = i - count; Len = count;
        }
        i += delta;
    }
    cout << "start = " << start << " len = " << Len << endl;
    return 0;
}
cxt
Спс

Может кому пригодится мой вариант

#include <conio.h>
#include <iostream.h>
#include <math.h>
const n = 10;
int k, m, kmax, kindex;
float z;

int kvadrat(int c) {
z=sqrt(c);
if ((int(z) != 0) && (z/int(z)==1)) return 1;
else
return 0;
}

void main()
{
int mas[n]={9,25,25,10,10, 10, 10, 5, 5, 5};
clrscr();
k=0;
m=mas[0];
kmax = 0;
kindex = 0;
for (int i=0; i<n; i++)
{
 if (kvadrat(mas[i])  )

 {
    k++;
 }
 else
 {
    if (k > kmax)
    {
     kmax = k;
     kindex = i-kmax;
    }
    k = 0;
 }
}
cout<<"\n posledovatelnost chisel polnih kvadratov "<<kmax<<"\n\n";
for (i = kindex; i < kindex+kmax; i++)
 cout << mas[i]<<" ";
 getch();
}
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.