Informatyka (I E / I AiR) - lista zadań 3
1. Napisz program, który pobiera od użytkownika liczbę rzeczywistą L (zakładamy, że jest
dodatnia) i w kolejnych wierszach wyświetla pierwiastek z L, ln(L), L
5
oraz L pomnożone
przez
π
.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double L;
cout<<"L="; cin>>L;
cout<<sqrt(L)<<endl<<log(L)<<endl;
cout<<pow(L,5)<<endl<<L*M_PI<<endl;
system("PAUSE");
return 0;
}
2.
Napisz program, który pobiera liczbę rzeczywistą x. Program wyświetla wartości
2
x
2
1∣x∣
sin x⋅x
2
i
4
x
2
∣
x∣
x
−
1.6
⋅
tan
2
x
w kolejnych wierszach.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double x;
cout<<"x="; cin>>x;
cout<<(2*sqrt(x*x+1)*abs(x))/(sin(x)*x*x)<<endl;
cout<<pow(x*x+abs(x),1.0/4)/(pow(x,-1.6)*pow(tan(x),2))<<endl;
system("PAUSE");
return 0;
}
Uwagi: Pierwiastek zapisano jako odpowiednią potęgę. Warto zwrócić uwagę na zapis 1.0/4, który wymusza
dzielenie rzeczywiste i daje w wyniku 0.25 (czyli tyle ile trzeba). Zapis 1/4 oznaczałby dzielenie całkowite i
dawałby w rezultacie 0.
3. Program pobiera od użytkownika kąt w stopniach i oblicza jego sinus. Jeśli wynik jest
dodatni, to program kończy się, jeśli nie jest dodatni, to następuje kolejne pobranie kąta.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double kat;
skok:
cin >> kat;
if (sin(kat/180*M_PI)<=0)
goto skok;
return 0;
}
4. Napisz program, który pobiera imię (tekst), nazwisko (tekst), wiek (liczba całkowita) i
płeć(znak 'M' lub 'K') podane w kolejnych wierszach.
Jeśli podano złą płeć (znak inny niż 'M' lub 'K') program po prostu się kończy.
Jeśli podano płeć 'K' program wypisuje w jednym wierszu „Witaj imię nazwisko masz 18 lat”.
Jeśli podano płeć 'M' program wypisuje „Witaj imię nazwisko masz wiek lat”.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string i;
int w;
char p;
cin >> i >> w >> p;
if (p=='K')
cout << "Witaj " << i << " masz 18 lat?\n";
else
if (p=='M')
cout << "Witaj " << i << " masz lat "<<w<<endl;
system("PAUSE");
return 0;
}
5. Napisz program, który pobiera tekst od użytkownika (zakładamy, że tekst jest ciągły – nie
zawiera spacji). Jeśli tekst ma nieparzystą liczbę znaków, to na końcu tekstu dodawany jest
znak '!'. Program dzieli tekst na dwie części i wyświetla najpierw drugą a później pierwszą.
Np. dla tekstu „Ala_ma_kota” program wyświetli „_kota!Ala_ma”.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string t,t1,t2;
cin >> t;
if (t.length() % 2 !=0)
t+="!";
t1=t.substr(0,t.length()/2);
t2=t.substr(t.length()/2,t.length()/2);
cout << t2 << t1 << endl;
system("PAUSE");
return 0;
}
6. Napisz program, który wypisze liczbę rzeczywistą wylosowaną z przedziału od 0 do 1
(włącznie). Zadbaj, aby liczba ta nie była taka sama przy każdym uruchomieniu programu.
Jeśli liczba wylosowana jest mniejsza lub równa 0.5, to program losuje ponownie i tak dalej,
aż do wylosowania większej niż 0.5.
#include <iostream>
#include<ctime>
using namespace std;
int main()
{
srand(time(0)*1000);
skok:
double L=1.0*rand()/RAND_MAX;
if (L<=0.5) goto skok;
cout<<L<<endl;
system("PAUSE");
return 0;
}
7. Napisz program, który wypisze liczbę całkowitą wylosowaną z przedziału od MINI do
MAXI. Przy czym MINI i MAXI są stałymi całkowitymi zdefiniowanymi przed funkcją main
i wynoszą odpowiednio -100 oraz 200. Oczywiście należy zadbać o to, aby program działał
poprawnie, gdy zostaną jedynie zmienione wartości stałych. Można przyjąć, że zawsze będzie
prawdziwe założenie MINI<MAXI.
#include <iostream>
#include<ctime>
using namespace std;
const int MINI=-100, MAXI=200;
int main()
{
srand(time(0)*1000);
int L=1.0*(MAXI-MINI+1)*rand()/RAND_MAX+MINI;
if (L==MAXI+1) L=MAXI;
cout<<L<<endl;
system("PAUSE");
return 0;
}