Informatyka I - wykład 3

Operacje arytmetyczne, użytki matematyczne, operacje na tekście, liczby losowe

Slajd 1

Informatyka I – wykład 3

G.P.Korbaś

Program 1. Różne podstawowe operacje matematyczne

#include <iostream>

using namespace std;

int main()

{

int i;

float f;

double d;

char c;

bool b;

i=1+2; cout << i <<endl; // 3

i=1.6+2; cout << i <<endl;// 3

i=2; cout << i++ << ' ' << i <<endl; // 2 3

i=2;cout << ++i << ' ' << i <<endl; // 3 3

i=1;

i+=2; cout << i <<endl; // 3

i*=2; cout << i <<endl; // 6

i=7 / 2; cout << i <<endl;// 3

i=7 % 2; cout << i <<endl;// 1

Slajd 2

Informatyka I – wykład 3

G.P.Korbaś

cout << endl;

f=1e20; cout << f <<endl;// 1e+020

f*=1e10; cout << f <<endl; // 1e+030

f*=1e20; cout << f <<endl; // 1.#INF

f = 7 / 2; cout << f <<endl; // 3

f = 7.0 / 2; cout << f <<endl; // 3.5

f = 7 / 2.0; cout << f <<endl; // 3.5

cout << endl;

d=1e20; cout << d <<endl; // 1e+020

d*=1e10; cout << d <<endl; // 1e+030

d*=1e20; cout << d <<endl; // 1e+050

cout << endl;

c = 'a'; cout << c <<endl; // a c+=1; cout << c <<endl; // b i = c; cout << i <<endl; // 98

c=99; cout << c <<endl; //c

Slajd 3

Informatyka I – wykład 3

G.P.Korbaś

cout <<endl;

b=true; cout << b << endl; // 1

b=false; cout << b << endl; // 0

b=!b; cout << b << endl; // 1

b=10; cout << b << endl; // 1

b=!(8>10 || 7<5) && (10/2==5); cout << b << endl; // 1

cout <<endl;

cin>>c;

return 0;

}

Slajd 4

Informatyka I – wykład 3

G.P.Korbaś

Uwagi do programu 1.

●

a/b – dzielenie (całkowite lub zmiennoprzecinkowe)

●

a%b – a modulo b (reszta z dzielenia a przez b)

●

a*=b – mnoży a przez b i wynik umieszcza w a

●

a+=b – dodaje b do a i wynik umieszcza w a

●

u++ – najpierw zwraca wartość u a następnie dodaje do u 1

●

++u – najpierw dodaje do u 1 a następnie zwraca wartość u

●

int – typ całkowity

●

float – typ zmiennoprzecinkowy pojedynczej precyzji

●

double – typ zmiennoprzecinkowy podwójnej precyzji

●

char – typ znakowy

●

bool – typ logiczny

Slajd 5

Informatyka I – wykład 3

G.P.Korbaś

Program 2. Wybrane funkcje z biblioteki cmath

#include <iostream>

#include <cmath>

using namespace std;

int main()

{

double a,b;

a=M_PI; cout << a << endl;

a=sin(M_PI/3); cout << a << endl; b=cos(M_PI/3); cout << a*a+b*b << endl; a = sqrt (2); cout << a << endl; b = a*a; cout << b << endl;

b = pow(a,16); cout << b << endl; a = log10(10000); cout << a << endl; b = -exp(2); cout << abs(b) << endl; char x;

cin>>x;

return 0;

}

Slajd 6

Informatyka I – wykład 3

G.P.Korbaś

Uwagi do programu 2.

●

sin(x) – sinus danej liczby

●

cos(x) – cosinus danej liczby

●

exp(x) – eksponent danej liczby

●

log10(x) – logarytm dziesiętny danej liczby

●

pow(a,b) – a do potęgi b

●

abs(a) – wartość bezwzględna a

Slajd 7

Informatyka I – wykład 3

G.P.Korbaś

Program 3. Program pobiera imię i nazwisko. Jeśli imię to “Jan” wyświetlane są wykrzykniki. Program łaczy tekst “Czesc “, imię, spacje i nazwisko w jeden tekst i wyświetla go, w następnej linii jego długość, a następnie pierwszy, czwarty i piąty znak oddzielone spacją.

#include <iostream>

#include <string>

using namespace std;

int main()

{

string s1,s2;

cout << "Imie:"; cin >> s1; cout << "Nazwisko:"; cin >> s2; if (s1=="Jan") cout<<"!!!"; s1="Czesc "+s1+' '+s2;

cout << s1 << endl;

cout << s1.length() << endl; cout << s1[0] << ' ' << s1[3] << ' ' << s1[4]<< endl;//C s c char x;

cin >> x;

return 0;

}

Slajd 8

Informatyka I – wykład 3

G.P.Korbaś

Uwagi do programu 3.

●

s1==”Jan” – porównywanie tekstów odbywa się tradycyjnie

●

s1+s2 – dodawanie tekstów odbywa się tradycyjnie

●

s1.length() – zwraca długość tekstu s1 (liczbę znaków tekstu)

●

s1[3] – pobiera czwarty! (liczone od 0) znak tekstu s1

Slajd 9

Informatyka I – wykład 3

G.P.Korbaś

Program 4. Różne operacje na tekście - wyniki operacji w komentarzach

#include <iostream>

#include <string>

using namespace std;

int main()

{

string s1,s2;

s1="Ala ma kota"; cout << s1 << endl; // Ala ma kota s1=s1.substr(4,7); cout << s1 << endl; // ma kota s1.erase(0,3); cout << s1 << endl; // kota s2=" i psa";

s1+=s2; cout << s1 << endl; // kota i psa cout << s1.find("psa") << endl; // 7

char x;

cin >> x;

return 0;

}

Slajd 10

Informatyka I – wykład 3

G.P.Korbaś

Uwagi do programu 4.

●

s1.substr(4,7) – pobiera podciąg ciągu s1 począwszy od znaku o numerze 4 (piątego!) o długości 7

●

s1.erase(0,3) – usuwa podciąg ciągu s1 począwszy od znaku o numerze 0 (pierwszego!) o długości 3

●

s1.find(“psa”) – szuka w s1 podciągu i zwraca nr znaku począwszy od którego podciąg występuje

Slajd 11

Informatyka I – wykład 3

G.P.Korbaś

Program 5. Pobranie linijki tekstu i wypisanie od końca

#include <iostream>

#include <string>

using namespace std;

int main()

{

string s;

int d;

getline(cin,s);

skok:

d=s.length();

if (d>0)

{

cout<<s[d-1];

s.erase(d-1,1);

goto skok;

}

cout<<endl;

system("PAUSE");

return 0;

}

Slajd 12

Informatyka I – wykład 3

G.P.Korbaś

Uwagi do programu 5.

●

getline(cin,s); - pobiera do zmiennej s tekst ze strumienia cin Slajd 13

Informatyka I – wykład 3

G.P.Korbaś

Program 6a. - generowanie liczby losowej

#include <iostream>

#include <ctime>

using namespace std;

int main()

{

int i,j;

srand(time(0));

i=rand();

j = 100 * i * 1.0 / RAND_MAX;

cout << i << ' ' << j << ' ' << RAND_MAX << endl; char x;

cin >> x;

return 0;

}

Slajd 14

Informatyka I – wykład 3

G.P.Korbaś

Uwagi do programu 6.

●

rand() - losuje liczbę całkowitą od 0 do RAND_MAX

●

RAND_MAX – liczba zależna od kompilatora – minimum 32767

●

srand(argument) – inicjuje generator liczb losowych zależnie od argumentu

●

time(0) – z biblioteki ctime - zwraca aktualny czas w formacie unixowym (liczba sekund od 01-01-1970 00:00) Aby wylosować liczbę z przedziału <0,n> gdzie n jest pewną liczbą

●

naturalną można użyć polecenia n*rand()*1.0/RAND_MAX; Slajd 15

Informatyka I – wykład 3

G.P.Korbaś

Program 6b. - generowanie liczby losowej, wykorzystanie stałej

#include <iostream>

#include <ctime>

using namespace std;

int main()

{

const int maxi=100;

int i,j;

srand(time(0));

i=rand();

j = maxi * i * 1.0 / RAND_MAX;

cout << i << ' ' << j << ' ' << RAND_MAX << endl; char x;

cin >> x;

return 0;

}

Slajd 16

Informatyka I – wykład 3

G.P.Korbaś

Program 6c. - generowanie liczby losowej, wykorzystanie stałej (przed funkcją main) i rzutowanie - pozbycie się ostrzeżenia kompilatora

#include <iostream>

#include <ctime>

using namespace std;

const int maxi=100;

int main()

{

int i,j;

srand(time(0));

i=rand();

j = int(maxi * i * 1.0 / RAND_MAX);

cout << i << ' ' << j << ' ' << RAND_MAX << endl; char x;

cin >> x;

return 0;

}

Slajd 17

Informatyka I – wykład 3

G.P.Korbaś