Sunteți pe pagina 1din 4

// Alexe Tudor-Stefan

//1.Definii o funcie macro MAX care determin i afieaz maximul dintre 2(3) numere intro
duse de la tastatur.
#include<stdio.h>
#define MAX(p1, p2, p3) ((p1 > p2 ) ? ((p1 > p3) ? (p1) : (p3)) : ((p2 > p3) ? (
p2) : (p3)))
int main(void)
{
int p1,p2,p3;
printf("Introduceti de la tastatura 3 numere intregi:\n");
printf("p1=");
scanf("%d",&p1);
printf("p2=");
scanf("%d",&p2);
printf("p3=");
scanf("%d",&p3);
printf("Maximul dintre cele 3 numere introduse de la tastatura este: %d"
,MAX(p1,p2,p3));
return 1;
}
//2.Definii o funcie inline min() care determin i afieaz minimul dintre 2(3) numere ntr
egi introduse de la
tastatur.
#include<stdio.h>
inline int min( int p1 , int p2, int p3 )
{
if(p1<p2)
{
if(p1<p3) return p1;
else return p3;
}
else
{
if(p2<p3) return p2;
else return p3;
}
}
int main(void)
{
int p1,p2,p3;
printf("Introduceti de la tastatura 3 numere intregi:\n");
printf("p1=");
scanf("%d",&p1);
printf("p2=");
scanf("%d",&p2);
printf("p3=");
scanf("%d",&p3);
printf("Minimul dintre cele 3 numere introduse de la tastatura este: %d"
,min(p1,p2,p3));
return 1;
}
//3. Considerai o funcie cu 3 parametrii implicii (int, float, double) care returne
az produsul acestor valori.
Apelai funcia considernd mai multe variante de apel concrete.
#include<stdio.h>
double produs(int p1=10, float p2=3, double p3=5);
int main(void)
{
int p1=5;
float p2=4.5;
double p3=3.332;
printf("Fie valorile implicite ale functiei : 10,3,5 respectiv valorile
predefinite p1=%d,p2=%f,p3=%f\n",p1,p2,p3);
printf("p1*implicite=%f\n",produs(p1));
printf("p1*p2*implicite=%f\n",produs(p1,p2));
printf("p1*p2*p3=%f\n",produs(p1,p2,p3));
}
double produs(int p1,float p2,double p3)
{
return p1*p2*p3;
}
//4. Folosind suprancrcarea funciilor definii trei funcii cu acelai nume dar cu tipuri
diferite de parametri (int,
int *, int&) care returneaz radicalul unei valori. Analizai cazul transmiterii par
ametrilor prin valoare i ca
referin.
#include<stdio.h>
#include<math.h>
float radical(int);
float radical(int *);
int main(void)
{
int a=9;
printf("apel prin valoare: %f\n",radical(a));
printf("apel prin referinta: %f\n",radical(&a));
}
float radical(int a)
{
return sqrt(a);
}
float radical(int *a)
{
return sqrt(*a);
}
//5. Determinai minimul dintr-un ir de 10 numere flotante (introduse de la tastatu
r/iniializate) folosind funcii
cu un numr variabil de parametri. Se vor considera primele 7 valori din ir, apoi u
rmatoarele 3, dup care se
afieaz minimul din cele 10 folosind valorile determinate anterior.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<stdarg.h>
#include<math.h>
int min(int,...);
int main(void)
{
int a[11];
a[0]=NULL;
srand(time(NULL));
for(int i=1;i<=10;i++)
{
a[i]=rand()%100+1;
}
printf("Minimul dintre primele 7 valori este: %d, dintre ultimele 3 valo
ri este: %d iar dintre toate este: %d",min(7,a[1],a[2],a[3],a[4],a[5],a[6],a[7])
,min(3,a[8],a[9],a[10]),min(10,a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10
]));
return 0;
}
int min(int n,...)
{
va_list ap;
va_start(ap,n);
int *val;
val=new int[n];
for(int i=0;i<n;i++)
{
val[i]=va_arg(ap,int);
}
int min=(int)HUGE_VAL,ok=0;
while(!ok)
{
ok=1;
for(int i=0;i<n;i++)
{
if(val[i]<min)
{
min=val[i];
ok=0;
}
}
}
return min;
}
//6. Scriei un program care face o codare simpl prin adaugarea la codul ASCII al c
aracterului o valoare n=3, folosind macro functii. Exemplu: `a' devine n urma codrii `c'.
#include<stdio.h>
#define code(a,n) (a+n)
int main(void)
{
char a;
int n;
printf("Introduceti caracterul ce urmeaza a fi codat: "); scanf("%c",&a)
;
printf("Introduceti numarul pentru incrementare in cadrul algoritmului:
");scanf("%d",&n);
printf("Caracterul codat este: %C\n",code(a,n));
return 0;
}
//8. Realizai o aplicaie C/C++ care aplic un cod binar (masc) fiecrui element al unui
ir printr-o funcie codare i invers l decodeaz ntr-o funcie decodare, folosind funcii
cro. Exemplu: fie caracterul `a', codul masca 11001010;
a. rezultatul codrii ar fi:
`a' -> 97 ASCII ->01100001 SAU EXCLUSIV logic pe bii
codul binar 11001010
------------
10101011
b. decodarea se face:
rezultatul codrii ->10101011 SAU EXCLUSIV logic pe bii
codul binar 11001010
------------
01100001 codul ASCII al lui `a'
#include<stdio.h>
#include<string.h>
#define codare(x) (x^202)
#define decodare(x) (x^202)
int main(void)
{
char sir[256];
printf("Introduceti cuvantul pe care doriti sa fie convertit: ");gets(si
r);
for(int i=0;i<strlen(sir);i++)
{
sir[i]=codare(sir[i]);
}
printf("Cuvantul codat este: %s\nUrmeaza procedura de decodare....\n",si
r);
for(int i=0;i<strlen(sir);i++)
{
sir[i]=decodare(sir[i]);
}
printf("Cuvantul decodat este: %s\n",sir);
return 0;
}

S-ar putea să vă placă și