Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Целочисленная функция


Автор: ДобренькийПапаша 14.1.2006, 17:49
Целочисленная функция
f(K)=K^3-25*K^2+50*K+1000 определена только для целых значений аргумента K. Составить программу вычисления значений функции f(K) для 20 значений аргумента K в интервале (-30;60) с выводом лишь тех значений, которые удовлетворяют заданному условию и подсчётом остальных значений.

Автор: sergejzr 14.1.2006, 19:39
Код

#include math.h
int f(int K)
{
 return pow(K,3)-25*pow(K,2)+50*K+1000
}

int main()
{
int interval_begin=0,interval_end=1000;
for(int K=interval_begin;K<=interval_end;K++)
{
 int result=f(K);
 if(result>=-30&&result<=60)
 printf("f(%i) = %i",K,result); 

}
}


Там правда надо мозгами думать, в каком (каких) интервале/ах значения будут между -30 и 60 это ведь полином 3 степени (не от MIN_INT до MAX_INT же проверять...)

Если я условия правильно понял..

Автор: ДобренькийПапаша 14.1.2006, 20:40
#include <math.h>
#include <iostream.h>
int f(int K)
{
return pow(K,3)-25*pow(K,2)+50*K+1000;
}

int main()
{
int interval_begin=0,interval_end=1000;
for(int K=interval_begin;K<=interval_end;K++)
{
int result=f(K);
if(result>=-30&&result<=60)
cout << "f(" << K << ")=" << result << endl;


}
}
при выполнении этого кода происходит выход из программы и пишет
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
The thread 0x570 has exited with code 975051000 (0x3A1E18F8).
The program 'C:\Программы для учёбы\Visual C++\MSDev98\MyProjects\Function\Debug\Function.exe' has exited with code 975051000 (0x3A1E18F8).

Автор: darkart 14.1.2006, 22:42
Ну если, в остальном все ок, то
Код

#include <math.h>
#include<conio.h>
#include <iostream.h>
int f(int K)
{
  return pow(K,3)-25*pow(K,2)+50*K+1000;
}

int main()
{
int interval_begin=0,interval_end=1000;
for(int K=interval_begin;K<=interval_end;K++)
{
int result=f(K);
if(result>=-30&&result<=60)
cout << "f(" << K << ")=" << result << endl; 


}
getch();
return 0;
}

Автор: ДобренькийПапаша 15.1.2006, 12:06
Выполняется программа, он выдаёт
f(10)=0
f(20)=0
Это правильно? Почему именно f(10) и f(20)?

Автор: sergejzr 15.1.2006, 12:28
Потому что в 10 и 20 по иксу повидимому пересечение с абсциссой идёт. ты бы хоть функцию нарисовал сперва, что ли smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)