Paste
Pasted as C++ by Pavel ( 14 years ago )
// 10.3.cpp: определяет точку входа для консольного приложения.
//
//Написать функцию kvadr с переменным числом параметров, которая определяет количество чисел,
//являющихся точными квадратами (2, 4, 9, 16,. . . ) типа int.
//Написать вызывающую функцию main, которая обращается к функции
//kvadr не менее трех раз с количеством параметров 3, 7, 11.
//
//5 человек гадало на кофейной гуще, звездах и внутренностях животных, которых принесли в жертву,
//о том, как правильно интерпретировать условие задачи.
//Наконец, на Абдуллу снизошло озарение....Возблагодарим же великолепный афганский героин за это!
//Как условие было понято:
//В функции передаются числа-параметры, функция возвращает кол-во тех чисел, у которых есть целый корень
//Например, для параметров типа (1,2,4,5,8,9,12,16)
//ответ будет =4 ибо целые корни имеют числа 1, 4, 9 и 16
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
int func(int num, ...)
{
int *p=# //берем p-указатель на первый параметр, значение которого = кол-ву параметров
if(num<=0) //если введено некорректное значение - посылаем пользователя в анус, возвращая -1 ( т.е.
return -1; //-1 - это сообщение об ошибки
p++; //теперь p указывает на следующий параметр
double coren; //переменная для хранения корня
int var;
int res=0; //кол-во точных квадратов, т.е. результат
for(int i=0; i<num; i++, p++) //цикл, работающий число раз=кол-ву параметров
{
coren=sqrt(double(*p));
var=coren;
if(coren==var) //суть такая - если параметр допустим =3, то coren =1.7, var=1 то условие не выполнено
res++;
}
return res;
}
int _tmain(int argc, _TCHAR* argv[])
{
//первый параметр - это кол-во параметров-чисел из которых мы ищем точные квадраты
cout<<func(3,2,3,4)<<endl; //ответ 1
cout<<func(7,2,3,4,10,12,13,16)<<endl; //ответ 2
cout<<func(11,2,3,4,10,12,13,16,18,20,144,256)<<endl; //ответ 4
return 0;
}
Revise this Paste