Пристап до елементите на низа ( 4 начини)
#include <iostream>//pristapuvanje na elementi na niza b na 4 razlicni nacini
using namespace std;
int main()
{
int b[]={10,20,30,40};
int *bPtr =b;
cout<<b[0]<<endl; //10
cout<<*b<<endl; //10
cout<<bPtr[0]<<endl; //10
cout<<*bPtr<<endl; //10
cout<<"Pecatenje na nizata b so indeksiranje\n"<<endl;
for (int i=0; i<4; i++)
cout<<"b["<<i<<"]= "<<b[i]<<'\n';
cout<<"Pecatenje na nizata b koristejki go imeto na nizata kako pokazuvac\n";
cout<<"Slucaj pokazuvac/pomestuvanje\n"<<endl;
for (int j=0; j<4;j++)
cout<<"*(b+ "<<j<<")= "<<*(b+j)<<'\n';
cout<<"Pecatenje na nizata b koristejki indeksiranje na pokazuvac\n"<<endl;
for (int p=0;p<4;p++)
cout<<"bPtr["<<p<<"]= "<<bPtr[p]<<'\n';
cout<<"Pecatenje na nizata b koristejki pokazuvac\n";
cout<<"Slucaj pokazuvac/pomestuvanje\n"<<endl;
for(int q=0;q<4;q++)
cout<<"*(bPtr + "<<q<<")= "<<*(bPtr + q)<<'\n';
return 0;
}
OUTPUT
10
10
10
10
Pecatenje na nizata b so indeksiranje
b[0]= 10
b[1]= 20
b[2]= 30
b[3]= 40
Pecatenje na nizata b koristejki go imeto na nizata kako pokazuvac
Slucaj pokazuvac/pomestuvanje
*(b+ 0)= 10
*(b+ 1)= 20
*(b+ 2)= 30
*(b+ 3)= 40
Pecatenje na nizata b koristejki indeksiranje na pokazuvac
bPtr[0]= 10
bPtr[1]= 20
bPtr[2]= 30
bPtr[3]= 40
Pecatenje na nizata b koristejki pokazuvac
Slucaj pokazuvac/pomestuvanje
*(bPtr + 0)= 10
*(bPtr + 1)= 20
*(bPtr + 2)= 30
*(bPtr + 3)= 40
Што ќе се прикаже по извршување на програмите
// my first pointer
#include <iostream>
using namespace std;
int main ()
{
int firstvalue, secondvalue;
int * mypointer;
mypointer = &firstvalue;
*mypointer = 10;
mypointer = &secondvalue;
*mypointer = 20;
cout << "firstvalue is " << firstvalue << endl;
cout << "secondvalue is " << secondvalue << endl;
return 0;
}
// more pointers
#include <iostream>
using namespace std;
int main ()
{
int firstvalue = 5, secondvalue = 15;
int * p1, * p2;
p1 = &firstvalue; // p1 = address of firstvalue
p2 = &secondvalue; // p2 = address of secondvalue
*p1 = 10; // value pointed by p1 = 10
*p2 = *p1; // value pointed by p2 = value pointed by p1
// p1 = p2; // p1 = p2 (value of pointer is copied)
*p1 = 20; // value pointed by p1 = 20
cout << "firstvalue is " << firstvalue << endl; // 20
cout << "secondvalue is " << secondvalue << endl; // 10
return 0;
}
Што ќе се прикаже по извршување на следните програми
#include <iostream>using namespace std;
int main()
{ int i,j;
i=1;j=10;
int *p=&j;
*p *=*p;
i=i+j;
p=&i;
cout<<"Vrednosta na p ="<<*p<<" adresata e "<<p<< endl;
cout<<"i= "<<i;
return 0;
}
Output
Внеси вредности на две променливи и собери ги. Прикажи ја вредноста на променливите, нивниот збир и вредноста на адресите на сите користени променливи.
Vrednosta na p =101 adresata e 0x7fff5c00aa28
i= 101
#include<iostream>
using namespace std;
void swap(int *x, int *y)
{
int swap;
swap=*x;
*x=*y;
*y=swap;
}
int main()
{
int x=500, y=100;
swap(&x, &y); // passing value to function
cout<<"Vrednosta na x e: "<<x<<endl;
cout<<"Vrednosta na y e: "<<y<<endl;
return 0;
}
Vrednosta na x e 100
Vrednosta na y e 500
Што ќе се испечати
#include <iostream>
using namespace std;
const int MAX = 3;
int main()
{
int a[MAX] = { 10, 100, 200 };
int *pok;
// adresa na prviot element na koj pokazuva pokazuvacot
pok = a;
int i = 0;
cout << "Adresi na elementite vo niza "<<endl;
while (pok <= &a[MAX - 1])
{
cout << "a [" << i << "] = ";
cout << pok << endl;
pok++;
i++;
}
pok=a;
i=0;
cout << "Vrеdnost na elementite vo niza"<<endl;
while (pok <= &a[MAX - 1])
{
cout << "a [" << i << "] = ";
cout <<*pok << endl;
pok++;
i++;
}
return 0;
}
#include <iostream>
using namespace std;
int main()
int main()
{
int a, b, c, *pa, *pb, *pc;
pa = &a;
pb = &b;
pc = &c;
cout<<"\nVnesi dva broja "<<endl;
cout<< "a= "; cin>>a;
cout<< "b= "; cin>>b;
*pc = *pa + *pb;
cout<<"\na = "<< *pa<<" adresata e " << pa;
cout<<"\nb = " << *pb<<" adresata e " << pb;
cout<<"\nc = a+b =" << *pc<<" adresata e "<< pc;
return 0;
int a, b, c, *pa, *pb, *pc;
pa = &a;
pb = &b;
pc = &c;
cout<<"\nVnesi dva broja "<<endl;
cout<< "a= "; cin>>a;
cout<< "b= "; cin>>b;
*pc = *pa + *pb;
cout<<"\na = "<< *pa<<" adresata e " << pa;
cout<<"\nb = " << *pb<<" adresata e " << pb;
cout<<"\nc = a+b =" << *pc<<" adresata e "<< pc;
return 0;
}
Vnesi dva broja
a= 2
b= 12
a = 2 adresata e 0x7ffeddbf16b4
b = 12 adresata e 0x7ffeddbf16b8
c = a+b =14 adresata e 0x7ffeddbf16bc
Внеси n знаци и преброј колку од нив се цифри .
Vnesi dva broja
a= 2
b= 12
a = 2 adresata e 0x7ffeddbf16b4
b = 12 adresata e 0x7ffeddbf16b8
c = a+b =14 adresata e 0x7ffeddbf16bc
Да се најде max од 3 внесени броја
#include <iostream>
using namespace std;
int main() {
int a, b, c, max, *pa, *pb, *pc, *pmax;
pa = &a;
pb = &b;
pc = &c;
pmax = &max;
cout<<"\nVnesi 3 broja: ";
cin>>a>> b>> c;
*pmax = *pa;
if (*pb > *pmax)
*pmax = *pb;
if (*pc > *pmax)
*pmax = *pc;
cout<<"\nNajgolem broj e "<< *pmax;
return 0;
}
Да се најде најмалиот елементи во низа со н елементи
# include <iostream>
using namespace std;
int main()
{
int a[50];
int n,i,min;
cout<<"vnesi dolzina na nizata"<<endl;
cin>>n;
cout<<"vnesi gi elementite na nizata"<<endl;
for (i=0; i<n; i++)
cin>>*(a+i);
min=*(a);
for (i=1; i<n; i++)
if (*(a+i)<min)
{
min=*(a+i);
}
cout<<"najmal e elementot "<<min<<endl;
return 0;
}
Внеси 10 броеви. Пресметај колку од нив се парни деливи со 5 и непарни деливи со 3
#include <iostream>
using namespace std;
int main() {
int i, br, parnih=0, neparnih=0, *pbr, *pparn, *pnepar;
pbr = &br;
pparn = &parnih;
pnepar = &neparnih;
for (i = 0; i < 10; i++)
{
cout<<"Vnesi go "<< i+1<<" broj : ";
cin>>br;
if (*pbr % 2 == 0 && *pbr % 5 == 0)
(*pparn)++;
if (*pbr % 2 == 1 && *pbr % 3 == 0)
(*pnepar)++;
}
cout<<"\nParni delivi so 5 = "<< *pparn;
cout<<"\nNeparni delivi so 3 = "<< *pnepar;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int i, br=0, *pbr=0,n;
char zn, *pzn;
pbr = &br;
pzn = &zn;
cout<<" vnesi broj na znaci"<<endl;
cin>>n;
for (i = 1; i <=n; i++)
{
cout<<" vnesi znak "<<endl;
cin>>*pzn;
if (*pzn >= '0' && *pzn <= '9')
(*pbr)++;
}
cout<<"vneseni se "<<*pbr<<" cifri";
return 0;
}
Внесувај броеви се додека не се внесе 0 (нула). Пресметај колку од внесените броеви се помеѓу 10 и 20. Прикажи го најмалиот број .
#include <iostream>
using namespace std;
int main() {
int i, br, min=0, brojac=0, *pbr, *pmin, *pbrojac;
pbr = &br;
pmin = &min;
pbrojac = &brojac;
i = 1;
cout<<"Vnesuvaj broevi, za kraj vnesuvanjeto vnesi nula:"<<endl;
cout<<"Vnesi broj: ";
cin>>br;
*pmin = *pbr;
while (*pbr != 0)
{
if (*pbr >=10 && *pbr <= 20)
(*pbrojac)++;
if (*pbr < *pmin)
*pmin = *pbr;
i++;
cout<<"Vnesi broj: ";
cin>>br;
}
cout<<"\nBroevi pomegu 10 i 20 ima = "<< *pbrojac;
cout<<"\nNajmal broj e "<<*pmin;
return 0;
}
Внеси низа а од n елементи. Пресметај го збирoт на парните и збирот на непарните елементи во низата
Решение 1:
#include<iostream>
using namespace std;
int main()
{
int i,n,zbp=0,zbn=0,a[50];
cout<<"Vnesi broj na elementi na nizata n ";
cin>>n;
cout<<"Vnesi ja nizata ";
for(i=0;i<n;i++)
cin>>*(a+i);
for(i=0;i<n;i++)
{ if(*(a+i)%2==0)
zbp+=*(a+i);
}
for(i=0;i<n;i++)
{ if(*(a+i)%2!=0)
zbn+=*(a+i);
}
cout<<"Zbir na parni "<<zbp<<endl;
cout<<"Zbir na neparni "<<zbn<<endl;
return 0;
}
Решение 2:
#include <iostream>
using namespace std;
int main()
{
int n, m[100], *p = m, pe = 0, ne = 0, *ppe = &pe, *pne = ≠
cout<<"Vnesi broj na elementi na nizata n= ";
cin >> n;
cout<<"Vnesi gi elementite "<<endl;
//vnesuvanje na elementi
for(int i = 0; i < n; i++) {
cin >> *p;
p++;
}
// odreduvanje zbir na parni / neparni elementi
p = &m[0];
for(int i = 0; i < n; i++) {
if(*p % 2)
*pne+=*p;
else
*ppe+=*p;
p++;
}
cout <<"Zbirot na neparni e "<< *pne << endl;
cout<<"Zbirot na parni e "<< *ppe<<endl;
return 0;
}
Решение 3:
# include <iostream>
using namespace std;
int main()
{
int a[100];
int n,i,zp,zn;
cout<<"vnesi dolzina na nizata"<<endl;
cin>>n;
cout<<"vnesi gi elementite na nizata"<<endl;
for (i=0; i<n; i++)
cin>>*(a+i);
zp=0;
zn=0;
for (i=0; i<n; i++)
if (*(a+i)%2 == 0) zp+=*(a+i);
else zn+=*(a+i);
cout<<"zbirot na parnite broevi vo nizata e "<<zp<<endl;
cout<<"zbirot na neparnite broevi vo nizata e "<<zn<<endl;
return 0;
}
Внеси низа а со n елементи. Формирај нова низа чии елементи ќе бидат елементи од низата а, кои имаат вредност помала од елементот на втора позиција во низата а.
#include <iostream>
using namespace std;
int main ()
{
int a[100],n,c[100],x=0;
int *p[100],*q[100];
cout<<"Vnesi broj na elementi na nizata a n= ";
cin>>n;
cout<<"Vnesi gi elementite na nizata a: "<<endl;
for (int i=0;i<n;i++)
{
p[i]=&a[i];
cin>>*p[i];
}
for (int i=0;i<n;i++)
{
q[x]=&c[x];
if (*p[i]<*p[1])
{
*q[x]=*p[i];
x++; }
}
cout<<"Novata niza e ";
for (int i=0;i<x;i++)
cout<<*q[i]<<" ";
}
Внеси знаковна променлива zn. Ако е знакот 'j', 'd', 't', 'c', 'p' треба да се отпечати вредноста - редослед на појавување на буквата во листата. со букви и број
(На пример. за 'd' треба да се отпечати два 2, за 'c' да се отпечати четири 4).
Ако е внесен знак кој не е во листата треба само да се отпечати */
#include<iostream>
using namespace std;
int main() {
int i, br, *pbr;
char zn, *pzn;
pzn = &zn;
pbr = &br;
cout<<"Vnesi znak: ";
cin>>pzn;
switch ((int)*pzn) {
case 'j':
cout<<"\nedеn ";
*pbr = 1;
cout<<br;
break;
case 'd':
cout<<"\nDva ";
*pbr = 2;
cout<<br;
break;
case 't':
cout<<"\nTri ";
*pbr = 3;
cout<< br;
break;
case 'c':
cout<<"\nČetiri ";
*pbr = 4;
cout<< br;
break;
case 'p':
cout<<"\nPet ";
*pbr = 5;
cout<< br;
break;
default:
cout<<"\nVnesen e znak "<<*pzn;
}
return 0; }
Да се подредат елементите на дадена низа во растечки редослед
Решение 1
#include <iostream>
using namespace std;
int main () {
int a[50];
int n;
cin>>n;
for (int i = 0; i < n; i++) {
cin>>*(a + i); }
int x;
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
if ( *(a + j) < *(a + i) )
{ x = *(a + i);
*(a + i) = *(a + j);
*(a + j) = x; }
}
}
for (int i = 0; i < n; i++) {
cout<< *(a + i) << "\t"; }
return 0;
}
Решение 2
#include <iostream>
using namespace std;
int main()
{
int a[50];
int n;
cout<<"Vnesi golemina na nizata: ";
cin>>n;
for(int i = 0; i < n; i++){
cout<<"A["<<i<<"] = ";
cin>>a[i];
}
for(int k = 0; k < n; k++){
for(int i = 1; i < n; i++){
if(a[i - 1] > *(a + i)) {
swap(a[i - 1], *(a + i)); }
}
}
for(int i = 0; i < n; i++){
cout<<*(a + i)<<" ";
}
return 0;
}
Определи дали даден број е прост
#include <iostream>
using namespace std;
int main() {
int i, brojac=0, a, *pbr, *pa;
pbr = &brojac;
pa = &a;
cout<<"Vnesi broj: ";
cin>>*pa;
for (i = 2; i <= *pa/2; i++)
if(*pa % i == 0)
(*pbr)++;
if (*pa == 1)
cout<<"Brojot 1 ne e definiran";
else
if (*pbr == 0)
cout<<"\nBrojot e prost!";
else
cout<<"\nBrojot ne e prost";
return 0;
}
/*Dadena e ednodimenzionalna niza so n elementi se kreiraat 2 novi nizi prvata so ednocifreni elementi, a drugata site ostanati elementi. Pri formiranje na novite nizi popolni gi so 0 elementite od dadenata niza koi ne go zadovoluvaat uslovot */
#include <iostream>
using namespace std;
int main()
{
int a[50];
int n;
cout<<"Vnesi golemina na nizata; ";
cin>>n;
for(int i = 0; i < n; i++){
cout<<"A["<<i<<"] = ";
cin>>*(a+i);
}
int b[50];
int c[50];
for(int i = 0; i < n; i++){
if(*(a + i) < 10){
b[i] = *(a + i);
c[i] = 0;
}
else{
c[i] = *(a + i);
b[i] = 0;
}
}
for(int i = 0; i < n; i++){
cout<<b[i]<<" ";
}
cout<<endl;
for(int i = 0; i < n; i++){
cout<<c[i]<<" ";
}
return 0;
}
/*Dadena e ednodimenzionalna niza so n elementi se kreiraat 2 novi nizi Prvata da gi ima elementite od prvata desetka, a drugata da gi ima site drugi elementi*/
#include <iostream>
using namespace std;
int main()
{
int a[50];
int n;
int br=0,bro=0;
cout<<"Vnesi golemina na nizata; ";
cin>>n;
for(int i = 0; i < n; i++){
cout<<"A["<<i<<"] = ";
cin>>*(a+i);
}
int b[50];
int c[50];
for(int i = 0; i < n; i++){
if(*(a + i) < 10 && *(a + i)>0) {
b[br] = *(a + i);
br++;
}
else{
c[bro] = *(a + i);
bro++;
}
}
for(int i = 0; i <br; i++){
cout<<b[i]<<" ";
}
cout<<endl;
for(int i = 0; i < bro; i++){
cout<<c[i]<<" ";
}
return 0;
}
https://quizizz.com/admin/quiz/5f507ed12938a0001c866f15/pointers-in-c
https://quizorbit.com/quiz-on-cpp-pointers/
https://www.codercrunch.com/quiz/take/970373692/c-pointers-quiz
No comments:
Post a Comment