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

Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... - C++

Восстановить пароль Регистрация
 
Ai.for.st
0 / 0 / 0
Регистрация: 12.03.2010
Сообщений: 5
12.03.2010, 05:43     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #1
Дано некоторое число (a). Необходимо найти наибольшее число, квадрат которого содержится в данном нам числе.

Написанный мной вариант данной программы не работает. При попытке компиляции выдается сообщение об ошибке. Но я не могу ее отыскать
Помогите, пожалуйста, с её отысканием (и желательно, исправлением)!

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>
#include<cmath>
using namespace std;
 
int kvadr(int n1) 
{
    double s=1;
    int i1=2;
    while(i1<n1)
    {
        if(i1%n1==0)
        {
            s=s+i1;
        }
        i++;
    }
    return s;
}
 
void main(){
    int a,b;
    cout<<"Vvedite a"<<endl;
    cin>>a;
    b=kvadr(a);
    cout<<"Naibolshee 4islo, kvadrat kotorogo est' v a ="<<b<<endl;
        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2010, 05:43     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти...
Посмотрите здесь:

C++ не могу никак найти сравнение цифр в числе
Есть ли ошибка в коде. Не могу найти. C++
Найти среди двузначных чисел такие, что квадрат числа равен кубу суммы цифр этого числа C++
Найти квадрат суммы цифр двуцифрового натурального числа C++
Для каждого числа найти корень квадратный, если дробная часть меньше 5, в противном случае найти квадрат данного числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
12.03.2010, 06:42     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #2
Строка 15. Откуда вылезает i?
Ai.for.st
0 / 0 / 0
Регистрация: 12.03.2010
Сообщений: 5
12.03.2010, 08:37  [ТС]     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #3
Цитата Сообщение от Sergey_O Посмотреть сообщение
Строка 15. Откуда вылезает i?
Спасибо, что подметили!
Это всё из-за моей невнимательности...

Пересмотрела несколько раз код написанной мной программы. Исправила возможные ошибки.

Теперь он получился таким:

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
#include<iostream>
#include<conio.h>
#include<cmath>
using namespace std;
 
int kvadr(int n1) 
{
    int s=0;
    int i1=1;
    while(i1<n1)
    {
        if(n1%i1==0)
        {
            s=s+i1;
        }
        i1++;
    }
    return s;
}
 
void main(){
    int a,b;
    cout<<"Vvedite a"<<endl;
    cin>>a;
    b=kvadr(a);
    cout<<"Naibolshee 4islo, kvadrat kotorogo est' v a ="<<b<<endl;
        }
При компиляции теперь ошибок нет.
Но когда пытаюсь запустить exe-файл, у меня запрашивают число a - я его ввожу с клавиатуры; при нажатии клавиши Enter программа сразу же закрывается. Возможно ли, что это происходит из-за того, что задержка экрана имеет место только до нажатия любой клавиши (#include<conio.h>)? Или я чего-то пока не могу понять...

Добавлено через 34 минуты
Но когда пытаюсь запустить exe-файл, у меня запрашивают число a - я его ввожу с клавиатуры; при нажатии клавиши Enter программа сразу же закрывается. Возможно ли, что это происходит из-за того, что задержка экрана имеет место только до нажатия любой клавиши (#include<conio.h>)? Или я чего-то пока не могу понять...
Похоже, с этим всё-таки разобралась - добавила _getch() в конец. Буду благодарна, если кто-нибудь подскажет, как правильно организовать функцию
C++
1
int kvadr(int n1)
,
а-то, видимо, здесь у меня и имеет место быть главная ошибка.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
12.03.2010, 09:13     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
#include<conio>
#include<сmath>
using namespace.std
 
int kvadr(int n){
    for(int i=0; pow(i, 2) < n; i++){}
    return pow(i-1, 2);
}
 
void main(){
    clrscr();
    int a;
 
    cout<<"Vvedite a"<<endl;
    cin>>a;
    cout<<"Naibolshee 4islo, kvadrat kotorogo est' v "<<a<<" = "<<kvadr(a);
    getch();
}
только не знаю, как <conio.h> или <conio>
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
12.03.2010, 09:36     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #5
Цитата Сообщение от Vorona Посмотреть сообщение
только не знаю, как <conio.h> или <conio>
если есть using namespace std; - тогда без
.h
но это вроде будет Си++, а не Си

если без using namespace std; - то это Си и библиотеки надо подключать conio.h
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
12.03.2010, 10:03     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #6
Цитата Сообщение от Iworb Посмотреть сообщение
но это вроде будет Си++, а не Си
если без using namespace std; - то это Си и библиотеки надо подключать conio.h
Это не коррелируемые явления. Все зависит от IDE

C++
1
2
3
4
5
6
#include <iosteam>
int main()
{
    std::cout<<"Hello, World!";
    return 0;
}
C++
1
2
3
4
5
6
#include <iosteam.h>
int main()
{
    cout<<"Hello, World!";
    return 0;
}
Обе программы написаны на чистом С++, только первый вариант под новые IDE, второй под старые
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
12.03.2010, 10:18     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #7
Можно так
Код
#include <math.h>
kvadr(int n)
{
    int x = sqrt(n);
    return(x);
}
Vorona
12.03.2010, 10:39
  #8

Не по теме:

только return x*x;

Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
12.03.2010, 13:01     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #9
Цитата Сообщение от Vorona Посмотреть сообщение

Не по теме:

только return x*x;

Необходимо найти наибольшее число, квадрат КОТОРОГО содержится в данном нам числе.
Вот такое условие, вроде бы
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
12.03.2010, 13:21     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #10
Да-да, невнимателен с утра)
Ai.for.st
0 / 0 / 0
Регистрация: 12.03.2010
Сообщений: 5
13.03.2010, 19:43  [ТС]     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #11
Цитата Сообщение от Day Посмотреть сообщение
Можно так
Код
#include <math.h>
kvadr(int n)
{
    int x = sqrt(n);
    return(x);
}
Можно сказать, что в изучении C++ я новичок, поэтому не вполне понимаю - будет ли обязательно sqrt(n) типа int? Если нет, то можем ли мы правомерно писать
C++
1
int x = sqrt(n);
?
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
13.03.2010, 19:51     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #12
в данной ситуации использовать корень - очень удобно
переменная типа int - целое число и используя функцию нахождения корня, она сокращает все, что находится после запятой, предоставляя нам как-раз число, квадрат которого будет ближе всего к вводимому нами числу)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2010, 22:16     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти...
Еще ссылки по теме:

C++ Дано целое число N (> 0). Найти квадрат данного числа
C++ Найти квадрат числа
C++ Найти квадрат числа с помощью сложения

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

Или воспользуйтесь поиском по форуму:
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
13.03.2010, 22:16     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти... #13
Ai.for.st,
не вполне понимаю - будет ли обязательно sqrt(n) типа int? Если нет, то можем ли мы правомерно писать

Ты совершенно прав, sqrt типа double, но в Си (и ++ тоже) работает механизм приведений,
т.е. число double приводится к int отбрасыванием дробной части.
Можно было бы написать int x = (int) sqtr(...); но это излишне, т.к. Си это делает за нас
Yandex
Объявления
13.03.2010, 22:16     Необходимо найти квадрат числа в данном числе - Есть ошибка, но не могу ее найти...
Ответ Создать тему
Опции темы

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