Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2013, 12:13   #1
Demiar
Пользователь
 
Регистрация: 30.12.2012
Сообщений: 17
По умолчанию Рассмотреть отрезки идущих подряд членов целочисленной последовательности, состоящие из полных квадратов ( на С )

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

Код:
#include <stdio.h>
#include <stdlib.h>
#include <locale>
#include <math.h>
void main()
{
	setlocale(LC_ALL,"Russian");
	int *mas = NULL; 
	int i,c,f,x,r;
	int n = 0;
	double b;
	printf("Введите натуральное число n:\n");
	scanf("%d",&n);
	mas=(int*)malloc(sizeof(int)*n);
	printf("Введите целые числа:\n");
	c=0;
	for(i=0;i<n;i++)
	{   
	    scanf("%d",&mas[i]);
	    b=mas[i];
	    x=sqrt(b);
		if (x*x==b) c++;

	}

	....
	
            free(mas);
	system("pause");
}
______________
1. Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В последующем, темы с подобным названием будут закрываться или удаляться,
а автор такой темы будет получать штрафные баллы.

2. Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)

Учтите это на будущее.

Модератор.

Последний раз редактировалось Serge_Bliznykov; 13.01.2013 в 10:35.
Demiar вне форума Ответить с цитированием
Старый 13.01.2013, 08:23   #2
Demiar
Пользователь
 
Регистрация: 30.12.2012
Сообщений: 17
По умолчанию

апп темке!!!!
Demiar вне форума Ответить с цитированием
Старый 13.01.2013, 10:35   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, почти всё верно. За исключением того, что в переменной C у вас будет находится общее количество полных квадратов в последовательности, а Вам надо рассматирвать отдельные отрезки - это полные квадраты идущие в псоледовательности подряд!
но это несложно.
если очередной элемент полный квадрат - увеличивайте переменную c, иначе - сбрасывайте её в ноль. Если при этом Вы заведёте ещё одну переменную (например, cMax ) и будете в этой переменной сохранять максимальное значение переменной c - то в конце получите требуемое значение "Получить наибольшую из длин рассматриваемых отрезков":
Код:
	cMax = 0;
	c=0;
	for(i=0;i<n;i++)
	{   
	    scanf("%d",&mas[i]);
	    b=mas[i];
	    x=sqrt(b);
	    if (x*x==b) { c++; }
                 else {
                   if (c > cMax) cMax = c;
                   c = 0; 
                 } 
	}
             
	// ещё дополнительно проверим, если последовательнось завершается 
	//  самым длиннымй отрезком полных квадратов
	if (c > cMax) cMax = c;

             напечатать значение cMax
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.01.2013, 10:41   #4
Demiar
Пользователь
 
Регистрация: 30.12.2012
Сообщений: 17
По умолчанию

спасибо))эт оказалось проще чем я думал)) прост чот никак не мог додуматься с отрезками(
Demiar вне форума Ответить с цитированием
Старый 13.01.2013, 11:06   #5
Demiar
Пользователь
 
Регистрация: 30.12.2012
Сообщений: 17
По умолчанию

чуть не забыл мне же надо Определить подпрограммы, позволяющие распознать полные квадраты, подпрограмму сделать в которой как раз распознаются полные квадраты) помогите плиз
Demiar вне форума Ответить с цитированием
Старый 13.01.2013, 11:51   #6
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Код:
int mySqrt(int b)
{
   int x = sqrt(b);
   return x*x == b;
}
Код:
scanf("%d",&mas[i]);
if (mySqrt(mas[i]) { c++; }
else {
                   if (c > cMax) cMax = c;
                   c = 0; 
                 }
Hemul вне форума Ответить с цитированием
Старый 13.01.2013, 12:00   #7
Demiar
Пользователь
 
Регистрация: 30.12.2012
Сообщений: 17
По умолчанию

спасибо) уже сделал)
Demiar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество идущих подряд символов hamsidJ Общие вопросы по Java, Java SE, Kotlin 4 27.01.2013 04:55
Поиск подряд идущих дат Raz0r SQL, базы данных 10 28.10.2012 21:52
функция для распознавания полных квадратов C# Serg94 C# (си шарп) 13 06.03.2012 22:48
Паскаль. Рассмотреть отрезки последовательности ddeman666 Помощь студентам 1 02.06.2010 11:04
Задача о шести подряд идущих единицах. llTibegll Помощь студентам 11 06.11.2009 10:04