Sunteți pe pagina 1din 7

Husdup Florin Adrian | grupa 2111 Tema: laborator 1

1

1. Definii o funcie macro MAX care determin i afieaz maximul dintre 2(3) numere introduse de la
tastatur.

//Definiti o functie macro MAX care determin si afiseaz maximul dintre 2(3) numere
introduse de la tastatur.
//Husdup Florin-Adrian | grupa 2111

//directive preprocesor
//includerea fisierelor antet ce contin prototipurile functiilor din biblioteca standard
folosite in program

#include <conio.h>
#include <stdio.h>

//macrodefinitie cu parametrii pt maximul dintre 2 numere
#define MAX2(a,b) ((a)>(b)?(a):(b))
//macrodef cuparametrii pentru maximul dintre 3 numere
#define MAX3(a,b,c) {if (a<b) a=b;if(a<c)a=c; }
//functia main
void main(void)
{

int a,b,c,max;
printf("\nIntroduceti primul numar:");
scanf("%d",&a);
printf("\nIntroduceti al doilea numar:");
scanf("%d",&b);
printf("\nMaximul primelor doua numere este:%d",MAX2(a,b));
printf("\nIntroduceti al treilea numar:");
scanf("%d",&c);
MAX3(a,b,c);
printf("\n Maximul dintre cele 3 numere este:%d",a);
getch();
} //end main

2. Definii o funcie inline min() care determin i afieaz minimul dintre 2(3) numere ntregi
introduse de la tastatur.
/*Definiti o functie inline min() care determin si afiseaz minimul dintre 2(3) numere
ntregi introduse
de la tastatur.*/
//Husdup Florin-Adrian | grupa 2111
//directive preprocesor
//includerea fisierelor antet ce contin prototipurile functiilor din biblioteca standard
folosite in program
#include <conio.h>
#include <stdio.h>
//functia inline pt determinarea minimului dintre doua numere intregi
inline int min( int a , int b, int c )
{
if ((a!=0)&&(b!=0)&&(c==0)) {
if(a<b)
return a;
return b;
Husdup Florin Adrian | grupa 2111 Tema: laborator 1
2

} //end if
else
{
if((a!=0)&&(b!=0)&(c!=0))
{
if(a>b)
a=b;
if (a>c)
a=c;
return a;
} //end if
} //end else
} //end min
void main(void)
{
int a=0,b=0,c=0,minim;
printf("\nIntroduceti primul numar:");
scanf("%d",&a);
printf("\nIntroduceti al doilea numar:");
scanf("%d",&b);
minim=min(a,b,c);
printf("\nminimul primelor doua numere este:%d",minim);
printf("\nIntroduceti al treilea numar:");
scanf("%d",&c);
minim=min(a,b,c);
printf("\n Minimul dintre cele 3 numere este:%d",minim);
getch();
} //end main
3. Considerai o funcie cu 3 parametrii implicii (int, float, double) care returneaz produsul acestor
valori. Apelai funcia considernd mai multe variante de apel concrete.

/*Considerati o functie cu 3 parametrii impliciti (int, float, double) care returneaz
produsul acestor valori.Apelati functia considernd mai multe variante de apel concrete.*/
//Husdup Florin-Adrian | grupa 2111
//directive preprocesor
//includerea fisierelor antet ce contin prototipurile functiilor din biblioteca standard
folosite in program
#include <conio.h>
#include <stdio.h>
double produs (int a=1, float b=1.0, double c=1.0)
{
return a*b*c;
} //end produs
//functia main
void main(void)
{
int a=0,b=0,c=0,minim;
printf("\nIntroduceti primul numar:");
scanf("%d",&a);
printf("\nIntroduceti al doilea numar:");
scanf("%d",&b);
printf("\nIntroduceti al treilea numar:");
scanf("%d",&c);
printf("\n Produs1:%lf",produs());
printf("\n Produs2:%lf",produs(a));
Husdup Florin Adrian | grupa 2111 Tema: laborator 1
3

printf("\n Produs3:%lf",produs(a,b));
printf("\n Produs4:%lf",produs(a,b,c));
getch();
} //end main
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
parametrilor prin valoare i ca referin.
/*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 parametrilor prin valoare i ca referin.*/
// Husdup Florin-Adrian | grupa 2111
//directive preprocesor
//includerea fisierelor antet ce contin prototipruile functiilor din biblioteca standard
folosite in program
#include <stdio.h>
#include <math.h>
#include <conio.h>
//prototipuri functii
float radical (int a); //functia radical cu parametru primit prin valoare
float radical (int *b); //functia radical cu parametru primit prin pointer
//float radical (int &c); //functia radical cu parametru prmit prin referinta
/*Variantele radical(*b) si radical(int &c) determina ambiguitate deoarece sunt doua
functii care au acelasi tip de apel.Pt ca programul sa poata compila trebuie sa renuntam
la una dintre functii*/
//functia main
void main()
{
int a,b;
int &c=a;
int *pb;
pb=&b;
printf("introduceti a= ");
scanf("%d", &a);
printf("introduceti b= ");
scanf("%d", &b);
printf("radicalul lui a este %.3f\n", radical(a));
printf("radicalul lui b este %.3f\n", radical(b));
//printf("radicalul lui c este %.3f\n", radical(a));
getch();
} //end main
float radical(int a)
{
return sqrt((float)a);
} //end radical (valoare)
float radical (int *b)
{
int n;
n=*b;
return sqrt((float)(n));
} //end radical (pointer)
float radical (int &c)
{
return sqrt((float)(c));
} //end radical (referinta)
Husdup Florin Adrian | grupa 2111 Tema: laborator 1
4


5. Determinai minimul dintr-un ir de 10 numere flotante (introduse de la tastatur/iniializate)
folosind funcii cu un numr variabil de parametri. Se vor considera primele 7 valori din ir, apoi
urmtoarele 3, dup care se afieaz minimul din cele 10 folosind valorile determinate anterior
/*Determinai minimul dintr-un ir de 10 numere flotante (introduse de la
tastatur/iniializate) folosind
funcii cu un numr variabil de parametri. Se vor considera primele 7 valori din ir, apoi
urmtoarele 3,
dup care se afieaz minimul din cele 10 folosind valorile determinate anterior*/
//Husdup Florin-Adrian | grupa 2111
//directive preprocesor
//includerea fisierelor antet ce contin prototipurile functiilor din biblioteca standard
folosite in program
#include <conio.h>
#include <stdio.h>
#include <stdarg.h> //fisierul antet de unde vom utiliza functiile pt a accesa argumentele
din lista
#include <math.h>
//prototipuri functii
float minim(int x,...); //declararea functiei cu numar variabil de parametrii
//functia main
void main()
{
float v[10], min1,min2;
int i;
printf("\nintroduceti cele 10 numere:");
//citim elementele vectorului
for (i=0;i<10;i++)
{
printf("\n\telementul[%d]=",i+1);
scanf("%f",&v[i]);
} //end for
//determinam minimul primelor 7 numere
min1=minim(7,v[0],v[1],v[2],v[3],v[4],v[5],v[6]); //apelam functia minim pt primele 7 nr
//determinam minimul ultimelor 3 numere
min2=minim(3,v[7],v[8],v[9]); //apelam fucntia minim pt ultimele 3 nr
if(min1>min2)
printf("\n Minimul sirului de numere este:%f.\n",min2);
else
printf("\n Minimul sirului de numere este:%f.\n",min1);
getch();
} //end main
float minim(int x,...)
{
//declaratii locale
va_list ap; //initializam lista de argumente
float coef,min;
int i;
va_start (ap,x); //pornim parcurgerea listei de argumete
min=HUGE_VAL;
for(i=0;i<x;i++)
{
coef=va_arg(ap,double); //extragem, pe rand, argumentele din lista
if (coef<min)
Husdup Florin Adrian | grupa 2111 Tema: laborator 1
5

min=coef;
} //end for
va_end (ap); //incheiem parcurgerea listei
return min;
} //end minim
6. Scriei un program care face o codare simpl prin adaugarea la codul ASCII al caracterului o valoare
n=3, folosind macro funcii. Exemplu: a devine n urma codrii d.
/*Scriei un program care face o codare simpl prin adaugarea la codul ASCII al
caracterului o valoare n=3, folosind macro funcii.
Exemplu: a devine n urma codrii d.*/
// Husdup Florin-Adrian | grupa 2111
//directive preprocesor
//includerea fisierelor antet ce contin prototipurile functiilor din biblioteca standard
folosite in program
#include <stdio.h>
#include <conio.h>
//definire functie macro
#define codare(x,n) ((x)+n)
#define DISTANTA_CODARII 3 //CONSTANTA SIMBLOICA
//functia main
void main()
{
char x;
int n=DISTANTA_CODARII;
printf("\n introduceti un caracter:");
scanf("%c",&x);
//codarea caracterului folosind macrodefinitia
printf("\n Caracterul %c codat este: %c!\n",x,codare(x,n));
getch();
} //end main
7. S se scrie un program care afieaz numele programului, data i ora compilrii i numrul de linii pe
care l are acest program
/*S se scrie un program care afieaz numele programului, data i ora compilrii i
numrul de linii pe care l are acest
program.*/
// Husdup Florin-Adrian | grupa 2111
//directive preprocesor
//includerea fisierelor antet ce contin prototipurile functiilor din biblioteca standard
folosite in program
#include <stdio.h>
#include <conio.h>
//functia main
void main()
{
printf("\n Numele programului:%s\n",__FILE__);
printf("\n Programul a fost complilat in data de:%s la ora %s\n",__DATE__,__TIME__);
printf("\n Numarul de lini este:%d\n",__LINE__);
getch();
} //end main
8. Realizai o aplicaie C/C++ care aplic un cod binar (masc) fiecrui element al unui ir printr-o
funcie codare
Husdup Florin Adrian | grupa 2111 Tema: laborator 1
6

i invers l decodeaz ntr-o funcie decodare, folosind funcii macro. Exemplu: fie caracterul a, codul
masc
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

/*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 macro*/
// Husdup Florin-Adrian | grupa 2111
//directive preprocesor
//inclduerea fisierelor antet ce contin prototipurle functiilor din biblioteca standard
folosite in program
#include <stdio.h>
#include <conio.h>
#include <string.h>
//definirea functiilor macro
#define codare(a,b) (a)^(b)
#define decodare(a,b) (a)^(b)
//functia main
void main()
{
char sir[20],sir1[20],sir2[20]; //sir-sirul care trebuie codat
//sir1-sirul dupa codare
//sir2-sirul dupa decodare
int nr, tab[20];
printf("Introduceti sirul care trebuie codat: ");
scanf("%s",sir);
printf("Introduceti un nr intreg care va reprezenta masca:");
scanf("%d",&nr);
for (int i=0;i<strlen(sir);i++)
{
tab[i]=0;
} //end for
Husdup Florin Adrian | grupa 2111 Tema: laborator 1
7

for(int i=0; i < strlen(sir);i++){
tab[i] = sir[i];
sir1[i] = codare(tab[i], nr);
} //end for
printf("Sirul codat este:");
for (int i=0;i<strlen(sir);i++)
printf("%c",sir1[i]);
printf("\n");
for(int i=0;i<strlen(sir); i++)
{
sir2[i] = decodare(sir1[i], nr);
} //end for
printf("Sirul decodat este: \n");
for(int i=0;i<strlen(sir);i++)
{
printf("%c",sir2[i]);
printf("\n");
} //end for
getch();
} // end main

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