Sunteți pe pagina 1din 6

Scopul: Studierea şi utilizarea tipului de date pointer.

Descrierea temei

Ca si in cazul oricaror tipuri de variabile si pointerii trebuie declarati. Ei se declara


la fel, cu deosebirea ca numele pointerului este precedat de caracterul *.

Declaratia de pointer este:

tip * nume;

si prin aceasta se precizeaza ca nume este un pointer catre o zona de memorie care
contine valoarea unei variabile de tipul tip.

In declaratia de mai sus tip poate fi : int, unsigned, char, float, double etc. sau
un sablon de structura (vezi capitolul urmator). Deci constructia tip * introduce un
nou tip de date anume pointer la tip.

In afara de tipul int, long, float etc., exista si un pointer special, anume de tip
void (mai precis fara tip). care se refera la o zona de memorie ce poate contine
orice tip de variabila.

Exemple

long * pl ; pointer la long;

char * pc; pointer la char;

double * x; pointer la double;

void *v; pointer fara tip ;

int * pi [ 8 ] ; sir de 8 pointeri la int ;

unsigned * pm [ 5 ] [ 2 ] ; masiv bidimensional de pointer la unsigned .


Varianta 8

Este dat masivul unidimensional E[n]. Aflaţi media aritmetică dintre suma
elementelor cu poziţii pare
din prima jumătate a masivului şi suma elementelor cu poziţii pare din a doua
jumătate a masivului.

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
void Add ( int *p, int n)
{for(int i=0; i<n; i++)
{*(p+i)=random(20)-7;
}}
void Afis ( int *p, int n)
{for (int i=0; i<n; i++)
{printf("%3d ",*(p+i));}
}
void cond1 (int *p, int n)
{ int media=0,S,S1,k;
{for (int i=0; i<n/2; i+2)
{S=S+(*(p+i));
{for (int i=n/2; i<n/2; i+2)
{S1=S1+(*(p+i));
cout<<"media="<<((S+S1)/k);
} }}}}
void main()
{ int E[35],k=10;
Add(E,k);
Afis(E,k);
cond1(E,k);
getch();
}
Rezultatul:

Concluzii: In aceasta lucrare de laborator am studiat tipul de date pointer .Pentru


rezalizarea sarcinii am folosit tipul de date pointer.
#include<conio.h>
#include<stdio.h>
#include<iostream>
#include<cstring>
using namespace std;
struct telefon

{ char T[20];
char f[10];
int i; };
void Add(telefon x[20], int n)
{for(int i=0;i<n;i++)

{cout<<"Introdu numarul de telefon "<<i+1<<" ";


cin>>x[i].T;
cout<<"Introdu informatia posesorului unui numar de telefon "<<i+1<<" ";
cin>>x[i].f;

} }
void Afis(telefon x[20], int n)
{for(int i=0;i<n;i++)
{cout<<"Numar "<<x[i].T<<" Informatia "<<x[i].f; }}
void CautareNumar (telefon x[20], int n)
{char k[20]; int z=0;
cout<<"Cautarea dupa numar ";
cin>>k;
for(int i=0;i<n;i++)
{if(strcmp(k,x[i].T)==0)
{cout<<"Numar: "<<x[i].T<<" Informatia:"<<x[i].f; z++;} }
if(z==0)
{cout<<"Nu este asa infr ";}
}

void Aranj(telefon x[20],int n)


{ int sort;
cout<<"\nAranjarea dupa statii de telefoane \n";
cout<<"\---------------------------------------\n";
cout<<"| telefon | Primele 2 cifre din numar |";
/* for(int i=0;i<n-1;i++)
{for(int j=0;j<n+1;j++)
{if(x[i].f>x[i+1].f)
{int sort=x[i].f;
x[i].f=x[i+1].f;
x[i+1].f=sort;} }}*/
for(int i=0;i<n;i++)
{
cout<<"\n "<<x[i].f<<" "<<x[i].T;
}
cout<<"\n---------------------------------------\n"; }

int main()
{ struct telefon x[20];
int b;
cout<<"Introdu cantitatea de numere de telefoane ";
cin>>b;
Add(x,b);
Afis(x,b);
CautareNumar(x,b);
Aranj(x,b);
getch();
}