Консультация № 171399
16.08.2009, 23:24
0.00 руб.
0 6 1
Здравствуйте!
Есть задачка: Необходимо найти первое натуральное число, квадрат которого больше n.
(осваиваю С++)

Заранее спасибо.

Обсуждение

Неизвестный
17.08.2009, 02:31
общий
это ответ
Здравствуйте, starcode.
Есть два варианта решения вашей задачи. Первый - простой перебор. Для этого в цикле перебираем числа до n и сравниваем квадрат каждого из них с n. Второй - математический. Из n извлечем корень и к целой его части прибавим единицу. Оба варианта представлены в коде:
Код:
#include <iostream>
#include <cmath>

using namespace std;

int func1(int n) {

for(int i=0; i<n; i++)
if(i*i > n)
return i;

return 0;
}

int func2(int n) {

return int(sqrt((double) n)) + 1;
}

int main(int argc, char *argv[]) {

int n = 10;

cout << "Function #1: func1(" << n << ") = " << func1(n) << endl;
cout << "Function #2: func2(" << n << ") = " << func2(n) << endl;

return 0;
}
5
Неизвестный
17.08.2009, 07:00
общий
Терсков Сергей:
Здравствуйте Сергей!
Большое спасибо за решения. Не могли бы вы уточнить (если брать только первый вариант решения) куда в коде вставляются строки cin, cout, нужно ли здесь объявлять переменные или ввести с помощью cin. Мои познания C++ пока слишком малы.

Заранее благодарю.
Неизвестный
18.08.2009, 02:04
общий
starcode:
Это уже смотря какое задание. Если нужен ввод то используйте cin. Вот как будет выглядеть main.
Код:
int main(int argc, char *argv[]) {

int n;
cout << "Input n: ";
cin >> n;

cout << "Function #1: func1(" << n << ") = " << func1(n) << endl;
cout << "Function #2: func2(" << n << ") = " << func2(n) << endl;

return 0;
}

Удачи в изучении языка.
Неизвестный
19.08.2009, 20:22
общий
Терсков Сергей:
Насколько я понял код программы (для первого варианта) выглядит следующим образом:
Код:
#include <iostream>


using namespace std;


int main(int n)

{

cout << "Vvedite n: \n";
cin >> n;



for(int i=0; i<n; i++)
if(i*i > n)

return i;
cout << n;




return 0;

}


Я прав?

Неизвестный
20.08.2009, 02:13
общий
starcode:
Не правы. В С++ не допускается объявление функции внутри другой. Правильно будет вот так (если не использовать функций):
Код:
#include <iostream>

using namespace std;

int main(int n) {

cout << "Vvedite n: \n";
cin >> n;

for(int i=0; i<n; i++) {

if(i*i > n) {

cout << i;
break;
}
}

return 0;
}

Так что учите матчасть . Без нее дальше будет тяжело.
Неизвестный
20.08.2009, 21:30
общий
Терсков Сергей:
Здравствуйте Сергей!
Огромное спасибо за уточнение.

Форма ответа