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

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

Восстановить пароль Регистрация
 
BITalik
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 4
02.01.2013, 11:50     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел #1
Даны натуральные числа n, a[1],...,a[n]. Определить количество
членов a[k] последовательности a[1],...,a[n], являющихся квадра-
тами четных чисел. Не используя функций
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2013, 11:50     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел
Посмотрите здесь:

C++ Имеется последовательность чисел содержащая n элементов определить количество четных чисел в последовательности.
C++ Дана последовательность действительных чисел, Требуется домножить все члены последовательности на квадрат ее наименьшего
C++ Определить количество членов последовательности, являющихся квадратами четных чисел
C++ Определить каких чисел в целочисленной последовательности больше:четных или кратных 3
C++ Заменить некоторые члены последовательности используя цикл for
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,720
Записей в блоге: 3
02.01.2013, 17:37     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<iostream>
#include <math.h>
using namespace std;
int main(){
setlocale(0,"rus");
int sz=0;
int cnt=0;
cout<<"Введите количество членов последовательности натуральных чисел ";
cin>>sz;
cout <<endl;
int* SeqSourc=new int[sz];
int* TmpBuff=new int[sz];
cout<<"Введите члены последовательности натуральных чисел "<<endl;
for(int i=0; i<sz; i++){
cout<<i+1<<" ";
cin>>SeqSourc[i];
cout <<endl;
if(SeqSourc[i]<=0){
cout<<"Ввод "<<i+1<<"-того члена отменен введите "<<i+1<<"-й член ";
i--;
continue;
}
}
cout<<"Введены члены последовательности натуральных чисел "<<endl;
for(int i=0; i<sz; i++){
cout<<i+1<<" "<<SeqSourc[i]<<endl;
}
cout<<"Из них чётные:"<<endl;
for(int i=0; i<sz; i++){
if(!(SeqSourc[i]%2)){//член должен быть по крайней мере четным
cout<<SeqSourc[i]<<endl;
if(sqrt((double)SeqSourc[i])==(int)(sqrt((double)SeqSourc[i])))TmpBuff[cnt++]=SeqSourc[i];
}
}
cout<<"Найдено "<<cnt<<" членов последовательности натуральных чисел являющиеся полными квадратами чётных чисел:"<<endl;чётных чисел:"<<endl;
for(int i=0; i<cnt; i++)cout<<TmpBuff[i]<<"  ";
cout <<endl;
system ("pause");
return 0;
}


Добавлено через 7 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
C++
1
cout<<"Найдено "<<cnt<<" членов последовательности натуральных чисел являющиеся полными квадратами чётных чисел:"<<endl;чётных чисел:"<<endl;
Неправильно в последний момент скопипастилось. Хотелось как лучше, а вышло как всегда. Нужно:
C++
1
cout<<"Найдено "<<cnt<<" членов последовательности натуральных чисел являющиеся полными квадратами чётных чисел:"<<endl;
booker
 Аватар для booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
02.01.2013, 17:39     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел #3
Цитата Сообщение от BITalik Посмотреть сообщение
Не используя функций
это как?

int main() уже функция
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,720
Записей в блоге: 3
02.01.2013, 17:53     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел #4
Цитата Сообщение от booker Посмотреть сообщение
это как?
int main() уже функция
Да, если строго, то совсем без функций, - никак. Без пользовательских наверное, имеется ввиду.
Даже если батник написать, будет вызывать команды командного процессора, API-функции... Нет, совсем без функции, - только на кубиках получится.
booker
 Аватар для booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
02.01.2013, 18:25     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел #5
наверное BITalikу нужна формула

Добавлено через 24 минуты
а так
берём корень из a[k]
проверяем на четность
если sqrt(a[k]) нечётное то n = sqrt(a[k])-1
если sqrt(a[k]) чётное то n = sqrt(a[k])

потом цикл

C++
1
2
3
4
5
6
7
while(n>3)
{
n=n-2;
count++;
}
 
cout<<count;
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
02.01.2013, 19:16     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел #6
А очевидное банальное решение никому в голову не приходит?
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
#include <iostream>
 
int main()
{
    int n;
    unsigned *nums;
 
    std::cin >> n;
    nums = new unsigned[n];
 
    unsigned max = 0;
    for (int i = 0; i < n; i++) {
        std::cin >> nums[i];
        if (nums[i] > max) {
            max = nums[i];
        }
    }
 
    unsigned count = 0;
    // num * num может вызвать переполнение, ну да ладно
    for (unsigned num = 0; num * num < max; num += 2) {
        for (int i = 0; i < n; i++) {
            if (nums[i] == num * num) {
                count++;
            }
        }
    }
 
    std::cout << count;
 
    delete [] nums;
    return 0;
}
C вычислением корня, за один проход:
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>
 
int main()
{
    int n;
    unsigned *nums;
 
    std::cin >> n;
    nums = new unsigned[n];
    for (int i = 0; i < n; i++) {
        std::cin >> nums[i];
    }
 
    unsigned count = 0;
    for (int i = 0; i < n; ++i) {
        unsigned num   = nums[i];
        unsigned mover = 0x40000000;
        unsigned root  = 0;
        unsigned block;
        while (mover) {
            block = root | mover;
            root >>= 1;
            if (num >= block) {
                num -= block;
                root |= mover;
            }
            mover >>= 2;
        }
        if (root % 2 == 0 && (root * root) == nums[i]) {
            count++;
        }
    }
 
    std::cout << count;
 
    delete [] nums;
    return 0;
}
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
02.01.2013, 19:28     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел #7
Цитата Сообщение от BITalik Посмотреть сообщение
Не используя функций
- интересно, какой методический смысл в подобных задачах?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2013, 20:30     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел
Еще ссылки по теме:

C++ Определить, начиная с какого i члены последовательности становятся меньше заданного положительного числа Е
В последовательности определить количество соседств двух положительных не четных чисел C++
Найти элементы массива, являющиеся квадратами некоторого числа C++

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

Или воспользуйтесь поиском по форуму:
booker
 Аватар для booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
02.01.2013, 20:30     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main(){
    int k;
    cin>>k;
    k=static_cast<int> (sqrt((double)k))/2;
    cout<<k;
    system("pause");
    return 0;
}
с функциями
Yandex
Объявления
02.01.2013, 20:30     Не используя функций определить члены последовательности, являющиеся квадратами четных чисел
Ответ Создать тему
Опции темы

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