Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Полный квадрат

Автор: cxt 22.05.2008 21:33

Помогите пожалуйста сделать чтобы программа искала наибольшую из длин полных квадратов. Моя ищет только наибольшую из длин одинаковых чисел.


#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 22.05.2008 22:21

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


Имеешь в виду самую длинную последовательность подрят идущих чисел, являющихся квадратами целого числа ?

Автор: cxt 22.05.2008 22:28

Да smile.gif

Автор: volvo 22.05.2008 23:09

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 22.05.2008 23:16

Спс

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

#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©;
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();
}