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

Определить количество членов последовательности, являющихся квадратами четных чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
demorate
1 / 1 / 0
Регистрация: 06.03.2011
Сообщений: 34
11.09.2011, 16:17     Определить количество членов последовательности, являющихся квадратами четных чисел #1
Обьясните пожалуста как решить такую задачу:

Даны целые положительные числа N, a1, ..., aN. Используя только элементарные арифметические операции (+, –, *, /), определить количество членов последовательности a1, ..., aN, являющихся квадратами четных чисел. Массивы не использовать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2011, 16:17     Определить количество членов последовательности, являющихся квадратами четных чисел
Посмотрите здесь:

C++ Имеется последовательность чисел содержащая n элементов определить количество четных чисел в последовательности.
C++ Написать программу, которая находит заданное количество чисел, являющихся квадратами натуральных чисел, и выводит их на экран. Проверку "квадрат – не
C++ Не используя функций определить члены последовательности, являющиеся квадратами четных чисел
Определить количество членов последовательности, имеющих четные порядковые номера и являющихся нечетными числами C++
Написать функцию kvadr с переменным числом параметров, которая определяет количество чисел, являющихся точными квадратами (2, 4, 9, 16,. . . ) типа in C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.09.2011, 17:10     Определить количество членов последовательности, являющихся квадратами четных чисел #2
Вариант без делений:

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
#include<iostream.h>
 
int Check(long x)
{
   long y = 0, i = 0;
   if (x < 0)
      return 0;
   while(y < x)
      y += 8*(i++) + 4;
   return x == y;
}
 
int main()
{
   int i, n, a, count = 0;
   std::cout << "n = ";
   std::cin >> n;
   for (i = 0; i < n; i++)
   {
      std::cin >> a;
      if (Check(a))
         count++;
   }
   std::cout << "count = " << count;
   return 0;
}
demorate
1 / 1 / 0
Регистрация: 06.03.2011
Сообщений: 34
11.09.2011, 18:02  [ТС]     Определить количество членов последовательности, являющихся квадратами четных чисел #3
Цитата Сообщение от Thinker Посмотреть сообщение
Вариант без делений:

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
#include<iostream.h>
 
int Check(long x)
{
   long y = 0, i = 0;
   if (x < 0)
      return 0;
   while(y < x)
      y += 8*(i++) + 4;
   return x == y;
}
 
int main()
{
   int i, n, a, count = 0;
   std::cout << "n = ";
   std::cin >> n;
   for (i = 0; i < n; i++)
   {
      std::cin >> a;
      if (Check(a))
         count++;
   }
   std::cout << "count = " << count;
   return 0;
}
А не могли бы Вы сделать в цикле do-while
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.09.2011, 18:22     Определить количество членов последовательности, являющихся квадратами четных чисел #4
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
#include<iostream.h>
 
int Check(long x)
{
   long y = 0, i = 0;
   if (x < 0)
      return 0;
   do
      y += 8*(i++) + 4;
   while(y < x);
   return x == y;
}
 
int main()
{
   int i, n, a, count = 0;
   std::cout << "n = ";
   std::cin >> n;
   for (i = 0; i < n; i++)
   {
      std::cin >> a;
      if (Check(a))
         count++;
   }
   std::cout << "count = " << count;
   return 0;
 
}
demorate
1 / 1 / 0
Регистрация: 06.03.2011
Сообщений: 34
11.09.2011, 18:25  [ТС]     Определить количество членов последовательности, являющихся квадратами четных чисел #5
Цитата Сообщение от Thinker Посмотреть сообщение
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
#include<iostream.h>
 
int Check(long x)
{
   long y = 0, i = 0;
   if (x < 0)
      return 0;
   do
      y += 8*(i++) + 4;
   while(y < x);
   return x == y;
}
 
int main()
{
   int i, n, a, count = 0;
   std::cout << "n = ";
   std::cin >> n;
   for (i = 0; i < n; i++)
   {
      std::cin >> a;
      if (Check(a))
         count++;
   }
   std::cout << "count = " << count;
   return 0;
 
}
А можете обьяснить, зачем это:
C++
1
2
3
4
5
6
7
8
9
10
int Check(long x)
{
   long y = 0, i = 0;
   if (x < 0)
      return 0;
   do
      y += 8*(i++) + 4;
   while(y < x);
   return x == y;
}
и можно ли его заменить?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.09.2011, 19:12     Определить количество членов последовательности, являющихся квадратами четных чисел #6
Цитата Сообщение от demorate Посмотреть сообщение
А можете обьяснить, зачем это:

и можно ли его заменить?
Проверка того, что число является точным квадратом четного числа.
Изменить можно легко, сделать с делениями.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
11.09.2011, 19:39     Определить количество членов последовательности, являющихся квадратами четных чисел #7
Цитата Сообщение от Thinker Посмотреть сообщение
Проверка того, что число является точным квадратом четного числа.
Изменить можно легко, сделать с делениями.
Вероятно ТС смутило объявление функции
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.09.2011, 19:45     Определить количество членов последовательности, являющихся квадратами четных чисел #8
Цитата Сообщение от Dani Посмотреть сообщение
Вероятно ТС смутило объявление функции
Наверно Алгоритм не из лучших, просто как бы для интереса сделал без делений и остатков от делений.
demorate
1 / 1 / 0
Регистрация: 06.03.2011
Сообщений: 34
11.09.2011, 19:51  [ТС]     Определить количество членов последовательности, являющихся квадратами четных чисел #9
Цитата Сообщение от Thinker Посмотреть сообщение
Проверка того, что число является точным квадратом четного числа.
Изменить можно легко, сделать с делениями.
А не могли бы Вы сделать с делениями? Хотелось бы увидеть разницу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2011, 20:23     Определить количество членов последовательности, являющихся квадратами четных чисел
Еще ссылки по теме:

Определить количество членов последовательности, имеющих четные порядковые номера и являющихся нечетными C++
Найти количество чисел, являющихся полными квадратами C++
C++ Найти количество чисел, являющихся полными квадратами

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.09.2011, 20:23     Определить количество членов последовательности, являющихся квадратами четных чисел #10
Цитата Сообщение от demorate Посмотреть сообщение
А не могли бы Вы сделать с делениями? Хотелось бы увидеть разницу.
Более оптимальный вариант:
C++
1
2
3
4
5
6
7
8
9
10
int Check(long x)
{
   long i = 1;
   if (x < 0 || x % 4)
      return 0;
   x /= 4;
   while(i*i < x)
      i++;
   return i*i == x;
}
Yandex
Объявления
11.09.2011, 20:23     Определить количество членов последовательности, являющихся квадратами четных чисел
Ответ Создать тему
Опции темы

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