1. Każdą liczbę naturalną można przedstawić jako sumę jej cyfr plus wielokrotność liczby 9. Napisz program,
który dla wprowadzonej liczby policzy i wypisze na ekranie tą wielokrotność.
int main()
{
int n,m;
cout<<"Podaj liczbe\n";
cin>>n;
m=n;
while(n>0)
{
m=m-n%10;
n=n/10;
}
cout<<"Szukana wielokrotnosc wynosi "<<m/9<<endl;
return 0;
}
2. Liczba naturalna dzieli się bez reszty przez 3 jeżeli suma jej cyfr dzieli się przez 3. Napisz program, który
sprawdzi i wypisze na ekranie czy wprowadzona liczba dzieli się przez 3 korzystając z podanej zasady.
int main()
{
int n,suma;
cout<<"Podaj liczbe\n";
cin>>n;
do
{
suma=0;
while(n>0)
{
suma=suma+n%10;
n=n/10;
}
n=suma;
}while(suma>10);
if(suma==3 || suma==6 || suma==9)
cout<<"Liczba jest podzielna przez 3\n";
else
cout<<"Liczba nie jest podzielna przez 3\n";
return 0;
}
3. Napisz program, który sprawdzi i wypisze na ekranie, czy podana liczba (typu int) składa się w większości z
cyfr parzystych czy nieparzystych.
int main()
{
int n,r,il_parz=0,il_nparz=0;
cout<<"Podaj liczbe\n";
cin>>n;
while(n>0)
{
r=n%10;
if(r%2==0)
il_parz++;
else
il_nparz++;
n=n/10;
}
if(il_parz>il_nparz)
cout<<"W liczbie jest wiecej liczb parzystych\n";
else if(il_parz<il_nparz)
cout<<"W liczbie jest wiecej liczb nieparzystych\n";
else
cout<<"W liczbie jest tyle samo liczb parzystych co nieparzystych\n";
return 0;
}
4. Napisz program, który policzy i wypisze na ekranie oddzielnie sumę cyfr stojących na miejscach parzystych i
nieparzystych we wprowadzonej liczbie (typu int).
int main()
{
int n,sum1=0,sum2=0,i=0;
cout<<"Podaj liczbe\n";
cin>>n;
while(n>0)
{
if(i%2==0)
sum1=sum1+n%10;
else
sum2=sum2+n%10;
i++;
n=n/10;
}
if(i%2==0)
{
cout<<"Suma liczb stojacych na miejscach parzystych wynosi "<<sum1<<endl;
cout<<"Suma liczb stojacych na miejscach nieparzystych wynosi
"<<sum2<<endl;
}
else
{
cout<<"Suma liczb stojacych na miejscach parzystych wynosi "<<sum2<<endl;
cout<<"Suma liczb stojacych na miejscach nieparzystych wynosi
"<<sum1<<endl;
}
return 0;
}
5. Napisz program, który policzy i wypisze na ekranie średnią wszystkich liczb trzycyfrowych, których suma cyfr
jest równa wprowadzonej liczbie.
int main()
{
int n,suma=0,ilosc=0;
double srednia;
cout<<"Podaj liczbe\n";
cin>>n;
for (int i=100; i<=999; i++)
{
if(i%10+i/10%10+i/100==n)
{
suma=suma+i;
ilosc++;
}
}
srednia=double(suma)/ilosc;
cout<<"Srednia wynosi "<<srednia<<endl;
return 0;
}
1. Dana jest n elementowa tablica liczb całkowitych:
const int n=…;
int tab[n]={…};
Napisz funkcję, która nic nie zwraca, a jako argumenty przyjmuje tablicę oraz jej długość. Funkcja ma usunąć z
tablicy wszystkie liczby parzyste przesuwając pozostałe liczby w lewo, np.: {1,2,3,4,5,6} -> {1,3,5,0,0,0}.
void fun(int tab[], int n)
{
int k=n;
for (int i=0; i<k; i++)
{
if (tab[i]%2==0)
{
for (int j=i; j<n-1; j++)
tab[j]=tab[j+1];
tab[n-1]=0;
i--;
k--;
}
}
}
int main()
{
const int n=10;
int tab[n]={1,2,3,4,5,6,7,8,9,10};
fun(tab,n);
for (int i=0; i<n; i++)
cout<<tab[i]<<endl;
return 0;
}
2. Utwórz tablicę nxn (n – stała znana na etapie kompilacji) liczb całkowitych i wypełnij ją w następujący
sposób:
1 3
2 4
5 7
6 8
9 11
10 12
13 15
14 16
int main()
{
const int n=4;
int tab[n][n];
int k;
for (int i=0; i<n; i++)
{
k=(i-i%2)*n+i%2+1;
for (int j=0; j<n; j++)
{
tab[i][j]=k;
k+=2;
}
}
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
cout<<tab[i][j]<<"\t";
cout<<endl;
}
return 0;
}
3. Dana jest tablica liczb całkowitych o długości n zawierająca wyłącznie wartości zero lub jeden. Napisz funkcję,
która otrzymuje tablicę oraz jej rozmiar. Funkcja ma zwrócić wartość prawda lub fałsz w zależności czy wszystkie
jedynki w tablicy znajdują się koło siebie (np.: {0,1,1,1,0,0} – prawda, {0,1,0,1,1} – fałsz, {0,0} – fałsz). Napisz
przykładowy program wywołujący tą funkcję (tablicę zainicjalizuj wartościami {…}).
bool fun(int tab[], int n)
{
int zmiany=0;
for (int i=0; i<n-1; i++)
if (tab[i]!=tab[i+1])
zmiany++;
zmiany+=tab[0];
if (zmiany==1 || zmiany==2)
return true;
return false;
}
int main()
{
const int n=5;
int tab[n]={0,0,1,1,0};
cout<<boolalpha<<fun(tab,n)<<endl;
return 0;
}
4. Utwórz tablicę nxn (n – stała znana na etapie kompilacji) liczb całkowitych i wypełnij ją w następujący
sposób:
1 5
0 2
8 10
6 9
0 0
0 0
3 7
0 4
int main()
{
const int n=4;
int tab[n][n]={0};
int k=1;
for (int i=0; i<n; i++)
{
for (int j=0; j+i<n; j++)
{
tab[j][j+i]=k;
k++;
}
}
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
cout<<tab[i][j]<<"\t";
cout<<endl;
}
return 0;
}
5. Dana jest tablica 2D liczb całkowitych o rozmiarze nxn zawierająca n zer. Napisz program, który sprawdzi i
wypisze na ekranie informację, czy wszystkie zera w tablicy to zera niezależne (w żadnej kolumnie ani wierszu nie ma
dwóch zer).
int main()
{
const int n=3;
int tab[n][n]={0,1,2,3,0,4,5,6,0};
int il_w, il_k, il=0;
for (int i=0; i<n; i++)
{
il_w=0; il_k=0;
for (int j=0; j<n; j++)
{
if (tab[i][j]==0)
il_w++;
if (tab[j][i]==0)
il_k++;
}
if (il_w!=1 || il_k!=1)
break;
il++;
}
if (il==n)
cout<<"Macierz zawiera zera niezalezne\n";
else
cout<<"Macierz zawiera zera zalezne\n";
return 0;
}
6. Dana jest n elementowa tablica zawierająca n liczb całkowitych, np.:
const int n=10; int tab[n]={1,2,3,4,5,6,7,8,9,10};
Napisz funkcję, która jako argumenty przyjmuje tablicę oraz jej długość. Funkcja ma tak zamienić kolejność liczb w
tablicy, żeby na początku były liczby parzyste a potem liczby nieparzyste: {2,4,6,8,10,1,3,5,7,9}.
void fun(int tab[],int n)
{
int pom, k=n;
for (int i=0; i<k; i++)
{
if (tab[i]%2==1)
{
pom=tab[i];
for (int j=i; j<n-1; j++)
tab[j]=tab[j+1];
tab[n-1]=pom;
i--;
k--;
}
}
}
int main()
{
const int n=10;
int tab[n]={1,2,3,4,5,6,7,8,9,10};
fun(tab,n);
for (int i=0; i<n; i++)
cout<<tab[i]<<endl;
return 0;
}
7. Napisz program, który dla stałego i znanego na etapie kompilacji n utworzy n elementową tablicę i wypełni ją
wg schematu:
_0_ _ 1 _1_ _
1
1 _ 1
_2_ _
1
1 _
1
1 _ 1
_3_ _
1
1 _
1
1 _
1
1 _ 1
int main()
{
const int n=10;
double tab[n]={1};
for (int i=1; i<n; i++)
tab[i]=1/(tab[i-1]+1);
for (int i=0; i<n; i++)
cout<<tab[i]<<endl;
return 0;
}
8. Utwórz tablicę 2nx2n (n – stała znana na etapie kompilacji) liczb całkowitych i wypełnij ją w następujący
sposób (przykład dla n=2):
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
int main()
{
const int n=2;
int tab[2*n][2*n];
int m=1;
for (int i=0; i<2; i++)
for (int j=0; j<2; j++)
for (int k=0; k<n; k++)
for (int l=0; l<n; l++)
{
tab[i*n+k][j*n+l]=m;
m++;
}
for (int i=0; i<2*n; i++)
{
for (int j=0; j<2*n; j++)
cout<<tab[i][j]<<"\t";
cout<<endl;
}
return 0;
}
1. Utwórz strukturę ułamek zawierającą trzy pola typu int: licznik, mianownik i całkowita. Napisz pięć funkcji: -
dodaj, odejmij, pomnóż, podziel, właściwy. Cztery pierwsze funkcję jako parametr przyjmują dwa obiekty
typu ułamek, wykonują odpowiednie działanie i zwracają wynik, funkcja właściwy przyjmuje jeden argument
i zamienia ułamek niewłaściwy na właściwy.
struct ulamek
{
int l,m,c;
};
ulamek dodaj(ulamek A, ulamek B)
{
ulamek C;
C.c=A.c+B.c;
C.l=A.l*B.m+B.l*A.m;
C.m=A.m*B.m;
return C;
}
ulamek odejmij(ulamek A, ulamek B)
{
ulamek C;
C.c=A.c-B.c;
C.l=A.l*B.m-B.l*A.m;
C.m=A.m*B.m;
return C;
}
ulamek pomnoz(ulamek A, ulamek B)
{
ulamek C;
A.l+=A.c*A.m;
B.l+=B.c*B.m;
C.c=0;
C.l=A.l*B.l;
C.m=A.m*B.m;
return C;
}
ulamek podziel(ulamek A, ulamek B)
{
ulamek C;
A.l+=A.c*A.m;
B.l+=B.c*B.m;
C.c=0;
C.l=A.l*B.m;
C.m=A.m*B.l;
return C;
}
ulamek wlasciwy(ulamek A)
{
A.c+=A.l/A.m;
A.l=A.l%A.m;
return A;
}
int main()
{
ulamek A={1,2,3},B={1,2,3},C,D,E,F,G;
C=dodaj(A,B);
D=odejmij(A,B);
E=pomnoz(A,B);
F=podziel(A,B);
G=wlasciwy(E);
return 0;
}
2. Napisz program, który mając tablicę liczb całkowitych o dowolnej długości utworzy drugą tablicę, zawierającą
liczby znajdujące się w pierwszej, ale bez powtórzeń.
int main()
{
const int n=10;
int tab[n]={1,2,3,1,4,5,5,4,2,1};
bool temp[n]={};
int ile=0;
for (int i=0; i<n; i++)
for (int j=0; j<i; j++)
if (tab[i]==tab[j])
{
temp[i]=true;
ile++;
break;
}
int *tab1=new int[n-ile];
ile=0;
for (int i=0; i<n; i++)
if(!temp[i])
tab1[ile++]=tab[i];
delete [] temp;
for (int i=0; i<ile; i++)
cout<<tab1[i]<<endl;
return 0;
}
3. Utwórz strukturę punkt zawierającą dwie współrzędne. Utwórz strukturę wielokąt w skład której wchodzi:
liczba całkowita (liczba wierzchołków), wskaźnik do struktury punkt (współrzędne wierzchołków). Napisz
dwie funkcje: wprowadź (zwracająca obiekt typu wielokąt) oraz obwód (zwraca obwód wielokąta). W funkcji
main zdefiniuj obiekt wielokąt i wywołaj napisane funkcję.
struct punkt
{
double x,y;
};
struct wielokat
{
int n;
punkt *W;
};
wielokat wprowadz()
{
wielokat F;
cin>>F.n;
F.W=new punkt[F.n];
for (int i=0; i<F.n; i++)
cin>>F.W[i].x>>F.W[i].y;
return F;
}
double odl(punkt A, punkt B)
{
return sqrt(pow(A.x-B.x,2)+pow(A.y-B.y,2));
}
double obwod(wielokat F)
{
double ob=0;
for (int i=0; i<F.n-1; i++)
ob+=odl(F.W[i],F.W[i+1]);
ob+=odl(F.W[F.n-1],F.W[0]);
return ob;
}
int main()
{
wielokat F=wprowadz();
cout<<obwod(F)<<endl;
return 0;
}
4. Napisz program, który z jednej tablicy typu zawierającej liczby całkowite o długości n zrobi dwie tablice do
jednej wpisując liczby parzyste, do drugiej liczby nieparzyste (tablice powinny być odpowiedniej długości):
int main()
{
const int n=10;
int tab[n]={1,2,3,4,5,6,7,8,9,10};
int il_parz=0;
for (int i=0; i<n; i++)
if (tab[i]%2==0)
il_parz++;
int *t_parz=new int[il_parz];
int *t_nparz=new int[n-il_parz];
int j=0,k=0;
for (int i=0; i<n; i++)
if (tab[i]%2==0)
t_parz[j++]=tab[i];
else
t_nparz[k++]=tab[i];
for (int i=0; i<il_parz; i++)
cout<<t_parz[i]<<endl;
cout<<endl;
for (int i=0; i<n-il_parz; i++)
cout << t_nparz[i]<<endl;
return 0;
}
5. Utwórz strukturę okrąg zawierającą trzy pola: x, y oraz r (x, y to współrzędne środka okręgu, r to jego
promień). Napisz dwie funkcje: wprowadź – funkcja umożliwiająca wprowadzenie liczb x, y oraz r, , punkty-
_wsp – funkcja przyjmująca jako argumenty dwa obiekty typu okrąg i zwracająca liczbę punktów wspólnych
(w przypadku nieskończonej liczby punktów wspólnych funkcja zwraca -1).
struct okrag
{
double x,y,r;
};
okrag wprowadx()
{
okrag O;
cin>>O.x>>O.y>>O.r;
return O;
}
int pkt_wsp(okrag A, okrag B)
{
double odl_s=sqrt(pow(A.x-B.x,2)+pow(A.y-B.y,2));
if (odl_s==0 && A.r==B.r) return -1;
if (odl_s==A.r+B.r || odl_s==abs(A.r-B.r)) return 1;
if (odl_s>A.r && odl_s>B.r && odl_s<A.r+B.r) return 2;
if ((odl_s<A.r || odl_s<B.r) && odl_s>abs(A.r-B.r)) return 2;
return 0;
}
int main()
{
okrag A={0,0,1},B={2,0,1};
cout<<pkt_wsp(A,B)<<endl;
return 0;
}
6. Napisz program, który mając dwie tablice liczb całkowitych o dowolnych długościach utworzy trzecią
zawierającą tylko te liczby, które występują w obu tablicach.
int main()
{
const int n=7, m=5;
int t1[n]={1,2,3,1,4,5,6};
int t2[m]={1,2,3,2,6};
bool temp[n]={};
int ile=0;
for (int i=0; i<n; i++)
{
for (int j=0; j<m && !temp[i]; j++)
if (t1[i]==t2[j])
{
temp[i]=true;
ile++;
}
for (int j=0; j<i && temp[i]; j++)
if (t1[i]==t1[j])
{
temp[i]=false;
ile--;
}
}
int *t3=new int[ile];
ile=0;
for (int i=0; i<n; i++)
if (temp[i])
{
t3[ile++]=t1[i];
}
delete [] temp;
for (int i=0; i<ile; i++)
cout<<t3[i]<<endl;
return 0;
}
/*Utwórz strukturę o nazwie fun_lin z dwoma polami a oraz b (parametry funkcji liniowej y=ax+b). Napisz trzy
funkcje: wpr – funkcja służąca do wprowadzenia a i b zwracająca strukturę; zero – funkcja jako argument
przyjmuje strukturę i zwraca miejsce zerowe funkcji (zakładamy że a!=0); wart – funkcja zwracająca wartość
funkcji w punkcie przesłanym do funkcji jako drugi argument. W funkcji main utwórz stworzoną strukturę i
napisz wywołania funkcji.*/
#include <iostream>
using namespace std;
struct fun_lin
{
double a, b;
};
fun_lin wpr()
{
fun_lin temp;
cout << "Podaj a: ";
cin >> temp.a;
cout << "Podaj b: ";
cin >> temp.b;
return temp;
}
double zero(fun_lin funkcja)
{
return -(funkcja.b/funkcja.a);
}
double wart(fun_lin funkcja, double x)
{
return funkcja.a*x+funkcja.b;
}
int main()
{
fun_lin namba;
namba = wpr(); // przypisanie odpowiednich pól
cout << "Podaj argument dla ktorego policzyc wartosco funkcji: ";
double mZerowe, value, x;
cin >> x;
mZerowe = zero(namba);
value = wart(namba, x);
cout << "Funkcja postaci: y = " << namba.a << "x + " << namba.b << endl;
cout << "m.zerowe x = " << mZerowe << endl;
cout << "wartosc w x = " << x << " wynosi: " << value << endl;
}
/*Zdefiniuj strukturę ciąg geometryczny zawierającą dwa pola: a0 oraz q (pierwszy wyraz ciągu oraz iloraz
ciągu). Napisz trzy funkcje: wprowadź, wypisz oraz suma. Funkcja suma ma zwrócić sumę n pierwszych
wyrazów ciągu (jako argumenty przyjmuje strukturę oraz n). W funkcji main stwórz strukturę i wywołaj
napisane funkcje.*/
#include <iostream>
#include <cmath>
using namespace std;
struct ciag_geometryczny
{
double a0, q;
};
ciag_geometryczny wpr();
void print(ciag_geometryczny ciag, int n);
double suma(ciag_geometryczny ciag, int n);
int main()
{
ciag_geometryczny ciag;
int n;
cout << "podaj liczbe elementow ciagu: ";
cin >> n;
double zlicz = 0;
ciag = wpr();
print(ciag, n);
zlicz = suma(ciag, n);
cout << "suma elementow ciagu wynosi: " << zlicz << endl;
system ("pause");
return 0;
}
ciag_geometryczny wpr()
{
ciag_geometryczny temp;
cout << "podaj pierwszy wyraz ciagu: ";
cin >> temp.a0;
cout << "podaj iloraz ciagu: ";
cin >> temp.q;
return temp;
}
void print(ciag_geometryczny ciag, int n)
{
for( int i = 1; i <= n; i++ )
cout << ciag.a0*pow(ciag.q, (i-1)) << " ";
cout << endl;
}
double suma(ciag_geometryczny ciag, int n)
{
double sumuj = 0;
for(int i = 1; i <= n; i++)
sumuj += ciag.a0*pow(ciag.q, (i-1));
return sumuj;
}
/*Utwórz strukturę okrąg zawierającą trzy pola: x, y oraz r (x, y to współrzędne środka okręgu, r to jego
promień). Napisz dwie funkcje: wprowadź – funkcja umożliwiająca wprowadzenie liczb x, y oraz r, , punkty-
_wsp – funkcja przyjmująca jako argumenty dwa obiekty typu okrąg i zwracająca liczbę punktów wspólnych
(w przypadku nieskończonej liczby punktów wspólnych funkcja zwraca -1).*/
#include <iostream>
#include <cmath>
using namespace std;
struct okrag
{
double x, y, r;
}
okrag wpr()
{
okrag temp;
cout << "podaj wsp x srodka okregu: ";
cin >> temp.x;
cout << "podaj wsp y srodka okregu: ";
cin >> temp.y;
cout << "podaj dlugosc r okregu: ";
cin >> temp.r;
return temp;
}
int punkty_wsp(okrag first, okrag second)
{ okrag temp;
temp.r = sqrt(pow((first.x-second.x),2)+pow((first.y+second.y),2)); //odleglosc miedzy srodkami okregow
if( temp.r == abs(first.r-second.r) || temp.r == (first.r+second.r) )//styczne wew/zew
return 1;
if( temp.r < abs(first.r-second.r) || temp.r > (first.r+second.r) )//rozlaczne
return 0;
if( temp.r > abs(first.r-second.r) && temp.r < (first.r+second.r) )//przecinajace sie
return 2;
if( first.r == second.r && first.x == second.x && first.y == second.y )//nakladajace sie na siebie
return -1;
}
int main()
{
okrag raz, dwa;
raz = wpr();
dwa = wpr();
int punkty;
punkty = punkty_wsp(raz, dwa);
cout << punkty << endl;
}
/*Napisz program, który mając dwie tablice liczb całkowitych o dowolnych długościach utworzy trzecią
zawierającą tylko te liczby, które występują w obu tablicach.*/
#include <iostream>
using namespace std;
int main()
{
int* tab;
int* tab2;
int* tab3;
int k = 0, l = 0, size1, size2;
cout << "podaj rozmiar 1 tablicy: ";
cin >> size1;
tab = new int[size1];
cout << "podaj rozmiar 2 tablicy: ";
cin >> size2;
tab2 = new int[size2];
for(int i = 0; i < size1; i++)
{
cout << "podaj liczbe: ";
cin >> tab[i];
}
for(int i = 0; i < size2; i++)
{
cout << "podaj liczbe: ";
cin >> tab2[i];
}
//to nizej tylko wypisuje na jakich pozycjach sa te same liczby
for(int i = 0; i < size1; i++)
for(int j = 0; j < size2; j++)
if( tab[i]==tab2[j] )
cout << i << " - " << j << endl;
//to sprawdza ile elementow jest identycznych w porownywanych tablicach
for(int i =0; i < size1; i++)
for(int j = 0; j < size1; j++)
if(tab[i]==tab2[j])
k++;
tab3 = new int[k];
//tu caly wichajster co przepisuje elementy, zakladam ze dana liczba wystepuje tylko raz w tablicy
for(int i = 0; i < size1; i++)
for(int j = 0; j < size2; j++)
{
if(tab[i]==tab2[j])
{
tab3[l]=tab[i];
l++;
}
}
//wyswietlenie zawartosci nowej tablicy
for(int i =0; i < k; i++)
cout << tab3[i] << " ";
//tu dopisac system pause itd mi w VS nie chce sie ;)
}
/*Napisz program, który z jednej tablicy typu zawierającej liczby całkowite o długości n zrobi dwie tablice do
jednej wpisując liczby parzyste, do drugiej liczby nieparzyste.*/
#include <iostream>
using namespace std;
int main()
{
int* tab;
int* even; //parzyste
int* odd; //nieparzyste
int n, l=0;
cout << "podaj rozmiar tablicy: ";
cin >> n;
tab = new int[n];
for(int i=0; i<n; i++)
{
cout << "podaj wartosc liczbe: ";
cin >> tab[i];
if(tab[i]%2==0)
l++;
}
//tablica parzystych
int temp=0;
even = new int[l];
for(int i=0; i<n; i++)
if(tab[i]%2==0)
{
even[temp]=tab[i];
temp++;
}
//tablica nieparzystych
temp=0;
odd = new int[n-l];
for(int i=0; i<n; i++)
if(tab[i]%2!=0)
{
odd[temp]=tab[i];
temp++;
}
for(int i=0; i<l; i++)
cout << even[i] << " ";
cout << endl;
for(int i=0; i<n-l; i++)
cout << odd[i] << " ";
cout << endl;
}
/*Napisz funkcję, która jako argumenty przyjmuje tablicę liczb rzeczywistych oraz jej długość. Funkcja ma
zwrócić tablicę zawierającą wartość minimalną, średnią oraz maksymalną z wszystkich liczb z tablicy. W
funkcji main napisz wywołanie funkcji.*/
#include <iostream>
using namespace std;
struct value
{
double min, max, med;
};
value find(double* tab, int size)
{
value temp;
temp.max = tab[0];
temp.min = tab[0];
temp.med = tab[0]; //na wypadek gdyby tablica byla 1 elementowa
for(int i=1; i<size; i++)
{
if(tab[i] > temp.max)
temp.max = tab[i];
if(tab[i] < temp.min)
temp.min = tab[i];
temp.med += tab[i];
}
temp.med /= size;
return temp;
}
int main()
{
double* tab;
int size;
cout << "podaj rozmiar tablicy: ";
cin >> size;
tab = new double[size];
for(int i=0; i<size; i++)
{
cout << "podaj liczbe: ";
cin >> tab[i];
}
value result;
result = find(tab, size);
cout << "max: " << result.max << " min: " << result.min << " med: " << result.med << endl;
}
/*Stwórz strukturę punkt reprezentującą punkt w n wymiarowej przestrzeni. Napisz funkcje następujące:
funkcja umożliwiająca wprowadzenie współrzędnych, funkcja wypisująca współrzędne na ekranie, funkcja
wykonująca translację (przesunięcie) o podany wektor, funkcja wykonująca symetrię środkową względem
zadanego punktu. W funkcji main zdefiniuj obiekt strukturalny w wywołaj napisane funkcje.*/
#include <iostream>
using namespace std;
struct punkt
{
double x, y;
};
punkt wpr()
{
punkt temp;
cout << "podaj x: ";
cin >> temp.x;
cout << "podaj y: ";
cin >> temp.y;
/*cout << "podaj z: ";
cin >> temp.z;
*/
return temp;
}
void print(punkt pkt)
{
cout << "wsp x: " << pkt.x << endl;
cout << "wsp y: " << pkt.y << endl;
//cout << "wsp z: " << pkt.z << endl;
}
punkt trans(punkt pkt, punkt wektor)
{
pkt.x += wektor.x;
pkt.y += wektor.y;
//pkt.z += wektor.z;
return pkt;
}
punkt symetria(punkt pkt, punkt O)
{
punkt temp;
temp.x = O.x - pkt.x;
temp.y = O.y - pkt.y;
/*to wyzej to wektor o jaki trzeba bedzie przesunac punkt*/
O.x += temp.x;
O.y += temp.y;
return O;
}
int main()
{
punkt jeden, wek, O;
jeden = wpr();
cout << "podaj wsp x wektora: ";
cin >> wek.x;
cout << "podaj wsp y wektora: ";
cin >> wek.y;
cout << "podaj wsp x punktu symetrii: ";
cin >> O.x;
cout << "podaj wsp y punktu symetrii: ";
cin >> O.y;
O = symetria(jeden, O);
cout << "wsp punktu po symetrii x = " << O.x << " y = " << O.y << endl;
jeden = trans(jeden, wek);
cout << "wsp punktu po przesunieciu o wketor x = " << jeden.x << " y = " << jeden.y << endl;
system ("pause");
return 0;
}
/*Utwórz strukturę punkt zawierającą dwie współrzędne. Utwórz strukturę wielokąt w skład której wchodzi:
liczba całkowita (liczba wierzchołków), wskaźnik do struktury punkt (współrzędne wierzchołków). Napisz
dwie funkcje: wprowadź (zwracająca obiekt typu wielokąt) oraz obwód (zwraca obwód wielokąta). W funkcji
main zdefiniuj obiekt wielokąt i wywołaj napisane funkcję.*/
#include <iostream>
#include <cmath>
using namespace std;
struct punkt
{
double x, y;
};
struct wielokat
{
int wierz;
punkt *wsp;
};
wielokat wpr()
{
wielokat temp;
cout << "podaj liczbe wierzcholkow: ";
cin >> temp.wierz;
temp.wsp = new punkt[temp.wierz];
for(int i = 0; i < temp.wierz; i++)
{
cout << "podaj wsp x " << i+1 << " wierzcholka: ";
cin >> temp.wsp[i].x;
cout << "podaj wsp y " << i+1 << " wierzcholka: ";
cin >> temp.wsp[i].y;
}
return temp;
}
double obwod(wielokat dowolny)
{
double sumuj = 0;
sumuj += sqrt(pow((dowolny.wsp[dowolny.wierz-1].x-dowolny.wsp[0].x), 2)+pow((dowolny.wsp[dowolny.wierz-1].y-dowolny.wsp[0].y), 2));
for(int i = 0; i < dowolny.wierz-1; i++ )
sumuj += sqrt(pow((dowolny.wsp[i+1].x - dowolny.wsp[i].x), 2)+pow((dowolny.wsp[i+1].y - dowolny.wsp[i].y), 2));
return sumuj;
}
int main()
{
wielokat trojkat;
trojkat = wpr();
for(int i = 0; i < trojkat.wierz; i++)
cout << trojkat.wsp[i].x << " " << trojkat.wsp[i].y << endl;
double suma;
suma = obwod(trojkat);
cout << suma << endl;
system ("pause");
return 0;
}