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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Asti7
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 36
#1

Дано натуральное число n. Выяснить, является ли оно полным квадратом - C++

05.09.2014, 20:01. Просмотров 1350. Ответов 16
Метки нет (Все метки)

Дано натуральное число n. Выяснить, является ли оно полным квадратом. Определить функцию, позволяющую распознавать полные квадраты.
C++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2014, 20:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дано натуральное число n. Выяснить, является ли оно полным квадратом (C++):

Дано натуральное число n. Выяснить, является ли оно полным квадратом.Определить функ-цию, позволяющую распознавать полные квадраты - C++
Вот пока что сделал, дальше домозговать не могу. #include "stdafx.h" #include "math.h" #include <iostream> using namespace std; ...

Выяснить, является ли заданное число полным квадратом (используя функцию) - C++
#include <stdio.h> int n, i; for(i=1; i< sqrt(n)+1; i++) { if (n==i*i) { cout << "Kvadra"; return (1); } return 0; } ...

Выяснить, является ли натуральное число N точным квадратом - C++
Составит линейную логическую программу, печатающую значение 1, если указанное высказывание является истинным, и 0 – в противном случае:...

Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени - C++
Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени.

Дано натуральное число n>1. Проверьте, является ли оно простым - C++
Дано натуральное число n>1. Проверьте, является ли оно простым. Программа должна вывести слово YES, если число простое и NO, если число...

Дано натуральное число N. Определить, является ли оно палиндромом. Число-палиндром можно читать справа налево и слева направо одинаково. Например, - C++
Дано натуральное число N. Определить, является ли оно палиндромом. Число-палиндром можно читать справа налево и слева направо одинаково....

16
rikimaru2013
C++ Game Dev
2436 / 1130 / 240
Регистрация: 30.11.2013
Сообщений: 3,688
05.09.2014, 20:10 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
bool polnuukvadrat(int num)
{
    for(int i=1;i<= num/2;i++)
    {
        if(i*i == num)
            return true;
    }
    return false;
}
int main()
{   
    cout << polnuukvadrat(9) << endl;
    return 0;
}
0
Asti7
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 36
05.09.2014, 20:14  [ТС] #3
Выводит ошибку в начале
0
Holmes
5 / 5 / 1
Регистрация: 24.08.2014
Сообщений: 78
05.09.2014, 20:21 #4
C++
1
2
double a=sqrt(n) ;
std::cout<<((int)a == a ? "целое" : "дробное"<<std::endl;
Вроде так.
0
Asti7
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 36
05.09.2014, 20:26  [ТС] #5
Получается еще больше ошибок((
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
05.09.2014, 20:27 #6
Цитата Сообщение от Holmes Посмотреть сообщение
Вроде так.
Не-а
C++
1
2
3
int a = round(sqrt(n));
if(a*a == n) std::cout << "Yes";
else std::cout << "No";
Добавлено через 25 секунд
Цитата Сообщение от Asti7 Посмотреть сообщение
Получается еще больше ошибок((
здесь все коды - это не полный код, а основная часть программы
0
Asti7
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 36
05.09.2014, 20:36  [ТС] #7
Цитата Сообщение от Dani Посмотреть сообщение
здесь все коды - это не полный код, а основная часть программы
А чего здесь не хватает? Вроде библиотека и объявление данных есть
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
05.09.2014, 20:39 #8
А, недосмотрел код rikimaru2013. Значит так какая-то проблема
0
Asti7
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 36
05.09.2014, 21:00  [ТС] #9
Цитата Сообщение от Dani Посмотреть сообщение
А, недосмотрел код rikimaru2013. Значит так какая-то проблема
Можете помочь,пожалуйста?)))
0
zss
Модератор
Эксперт С++
6401 / 5967 / 1944
Регистрация: 18.12.2011
Сообщений: 15,367
Завершенные тесты: 1
05.09.2014, 22:23 #10
Вместо
C++
1
cout << polnuukvadrat(9) << endl;
Я бы написал
C++
1
2
3
4
if(polnuukvadrat(9))
   cout<<"yes\n";
else 
   cout<<"no\n";
0
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,879
Завершенные тесты: 1
05.09.2014, 22:39 #11
zss, можно и с тернарным, чуть сократить..
C++
1
cout << (polnuukvadrat(9) ? "yes" : "no") << endl;
Цитата Сообщение от Asti7 Посмотреть сообщение
Выводит ошибку в начале
наверное, одна из ошибок - это ругань на отсутствие
C++
1
#include "stdafx.h"
Если, конечно, это студия..
Asti7, а что за ошибка?
0
_Ivana
3169 / 1786 / 153
Регистрация: 01.03.2013
Сообщений: 5,003
Записей в блоге: 2
05.09.2014, 22:43 #12
rikimaru2013, чтож так неоптимально то - до половины числа всегда бежать, можно прекращать безобразие когда квадрат больше числа. Да и шаг можно сделать не единицей а двойкой и для нечетных начинать с 1 а для четных с 2. Sqrt, перевод во флоаты и математическая библиотека это конечно хорошо, но от себя предложу такой вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    if (a == 0) SetWindowTextW(hwndSta3, L"yes, 0^2=0");
    else {
        unsigned int x0, x1 = a;
        do {
            x0 = x1;
            x1 = (x0 + a/x0)>>1;
        } while (x1 < x0);
 
        wchar_t buf[20];
        if (x1*x1 == a) wsprintfW(buf, L"yes, %u^2=%u", x1, a);
        else wsprintfW(buf, L"no, %u^2!=%u", x1, a);
        SetWindowTextW(hwndSta3, buf);
    }
2
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
05.09.2014, 22:59 #13
_Ivana, можно пару слов о работе алгоритма?
0
_Ivana
3169 / 1786 / 153
Регистрация: 01.03.2013
Сообщений: 5,003
Записей в блоге: 2
05.09.2014, 23:06 #14
Dani, можно. Наоборот, приятно, что кто-то хочет думать, а не просто во флоаты переводить, math подключать и sqrt писать, формируя в результате огромный ассемблерный код
Для начала почитайте вот здесь Вычисление квадратного корня , ближе к концу. Там теория с некоторыми ссылками. А в данном случае я применил эту теорию (метод Ньютона вычисления квадратного корня) к целому типу, он сходится неприлично быстро, и в конце остается только проверить, точное ли значение корня целого типа получилось в результате или нет.
Да, условие проверки выхода из цикла сделано такое, потому что начальное приближение корня у нас равно самому числу, значит в процессе последовательных приближений оно может только уменьшаться, а если вдруг увеличилось - у нас начались "биения" младшего бита, алгоритм сошелся, но эти биения будут бесконечны.
1
SlavaSSU
215 / 160 / 45
Регистрация: 17.07.2012
Сообщений: 587
05.09.2014, 23:59 #15
ну тогда еще и так можно)

C++ (Qt)
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
#include <iostream>
 
using namespace std;
 
typedef long long li;
 
int main()
{
    li n;
    cin >> n;
    li lf = 0, rg = (li)(1e9);
    while(rg - lf > 1LL)
    {
        li mid = (lf + rg) / 2;
        if(mid * mid > n)
            rg = mid;
        else
            lf = mid;
    }
 
    for(li i = lf; i <= rg; i++)
        if(i * i == n)
        {
            cout << "YES " << i << " * " << i << " == " << n << endl;
            return 0;
        }
 
    cout << "NO" << endl;
 
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2014, 23:59
Привет! Вот еще темы с ответами:

Проверить, является ли целое число трёхзначным, является ли оно квадратом - C++
помогите пожалуйста новичку 1) Введите целое число и проверьте, является ли оно трехзначным. 2) Введите целое число и проверьте,...

Дано натуральное число N. Если оно - C++
Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N=4k (где k — соответствующее частное); если остаток от деления...

Дано натуральное число. Определить оканчивается ли оно цифрой 7 C++ - C++
1. Дано натуральное число. Определить: -Оканчивается ли оно цифрой 7; -Одинаковы ли его цифры. 2. Определить, имеются ли в массиве...

Ввести натуральное число N. Определить, является ли оно совершенным - C++
Здравствуйте. Помогите пожалуйста с лабораторной... В 1. Ввести натуральное число N. Определить, является ли оно совершенным (совершенное...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
05.09.2014, 23:59
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru