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) liczb całkowitych i wypełnij ją w następujący
sposób:
1 5
0 2
8 10
6 90 0
0 03 70 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;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_ _
11 _ 1_2_ _11 _11 _ 1_3_ _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 89 10
11 12
13 1415 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;
}
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 (liczba wierzchołków), wskaźnik do struktury punkt (współrzędne wierzchołków
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;ret0}
1. Utwórz strukturę ułamek zawierającą trzy
.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;}
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 oraz ilorazcią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łajnapisane 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)) << " ";out << 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 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; //nieparzysteint 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++;}
//print; 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;
/*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;
}