Informatyka (I E / I AiR) - lista zadań 6 - rozwiązania
1. Napisz funkcję potega_nat, która przyjmuje jako parametry liczbę rzeczywistą a i liczbę
naturalną n i zwraca wartość rzeczywistą a
n
.
Użyj funkcji w programie, aby w kolejnych wierszach wypisać wartości
1.123
1
, 1.123
2
, ... ,1.123
30
#include <iostream>
using namespace std;
double potega_nat(double a, int n)
{
if (n<1)
return 1;
double wynik=1;
for (int i=1;i<=n;i++)
wynik*=a;
return wynik;
}
int main()
{
for (int i=1;i<=30;i++)
cout<<potega_nat(1.123,i)<<endl;
return 0;
}
2. Napisz funkcję f o prototypie double f(double x) która dla dowolnego x rzeczywistego zwraca
wartość x
4
−
2x
3
x
2
−
x−2 .
Napisz program wykorzystujący funkcję f, który wypisze wszystkie całkowite x z przedziału
<-100,100>, dla których f się zeruje.
#include <iostream>
using namespace std;
double f(double x)
{return x*x*x*x-2*x*x*x+x*x-x-2;
}
int main()
{
for (int i=-100;i<=100;i++)
if (f(i)==0)
cout << i << endl;
return 0;
}
3. Napisz funkcję o prototypie bool porzadek(double &w, double &m). Funkcja otrzymuje jako
parametry liczbę w i liczbę m. W wyniku działania funkcji w w powinien znaleźć się parametr o
większej wartości a w m – o mniejszej. Jeśli parametry różnią się od siebie – funkcja ma zwrócić
true, jeśli są różne ma zwrócić false.
Napisz program (używający funkcji), który:
1. Wczytuje dwie liczby rzeczywiste
2. Jeśli liczby są równe to kończy działanie
3. Jeśli liczby są różne to wypisuje je w kolejnym wierszu, oddzielone spacją, najpierw
mniejszą – później większą. Następnie kontynuuje pracę od punktu 1.
#include <iostream>
using namespace std;
bool porzadek(double &w, double &m)
{
if (w==m)
return false;
if (w<m)
{
double temp=w;
w=m;
m=temp;
}
return true;
}
int main()
{
double a,b;
do
{
cin >> a >> b;
if (!porzadek(a,b))
break;
cout << b << ' ' << a << endl;
}
while (true);
return 0;
}
4. Napisz funkcję o prototypie int prosta(double x1,double y1,double x2,double y2, double &a,
double &b) , która dla zadanych punktów (x1,y1) i (x2,y2) obliczy współczynniki a i b prostej w
postaci kierunkowej y=ax+b i zwróci 0. Jeśli prosta w postaci kierunkowej nie istnieje, to funkcja
zwraca wartość 1.
Użyj funkcji w programie, aby wyznaczyć prostą przechodzącą przez punkty (1,3) i (2, 3.14).
#include <iostream>
using namespace std;
int prosta(double x1,double y1,double x2,double y2, double &a,
double &b)
{
if (x1==x2)
return 1;
a=(y2-y1)/(x2-x1);
b=y1-a*x1;
return 0;
}
int main()
{
double a,b;
prosta(1,3,2,3.14,a,b);
cout << "y=" << a << " x + " << b << endl;
return 0;
}