Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
143 views5 pages

Lab 1

The document defines several C++ functions and macros to solve problems related to determining maximums, minimums, products, and encodings of numbers. It includes functions to find the maximum and minimum of 2 or 3 numbers using macros, inline functions to find minimums, overloaded functions to calculate radicals, functions to calculate products and determine minimums of variable numbers of arguments, and a macro to encode characters by adding to their ASCII values.

Uploaded by

Baban David
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
143 views5 pages

Lab 1

The document defines several C++ functions and macros to solve problems related to determining maximums, minimums, products, and encodings of numbers. It includes functions to find the maximum and minimum of 2 or 3 numbers using macros, inline functions to find minimums, overloaded functions to calculate radicals, functions to calculate products and determine minimums of variable numbers of arguments, and a macro to encode characters by adding to their ASCII values.

Uploaded by

Baban David
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

/* Problema 1:Definiti o functie macro MAX care determina si afiseaza maximul

dintre 2(3) numere introduse de la tastatura.*/


#include <iostream> //directiva preprocesor -> pentru cin si cout
#define LARGEST(a,b,c) (a>b?(a>c?a:c):(b>c?b:c))//Macrofunctie pt a determina
maximul dintre cele 3 cifre
#define MAX(x,y) ((x>y)?x:y)//Macrofunctie pt a determina maximul dintre cele 2
cifre

using namespace std;

int main()
{
{

int a, b, c;
cout << "introduceti a: ";
cin >> a;//citire
cout << "introduceti b: ";
cin >> b;//citire
cout << "introduceti c: ";
cin >> c;//citire

int maxim2 = MAX(a, b);//declaram o variabila "maxim2" in care vom


stoca maximul dintre cele 3 numere prin intermediul macrofunctiei
cout << "Cel mai mare numar dintre " << a << " " << b << " " << " este
" << maxim2 << endl;//afisare

int maxim3 = LARGEST(a, b, c);//declaram o variabila "maxim3" in care


vom stoca maximul dintre cele 3 numere prin intermediul macrofunctiei
cout << "Cel mai mare numar dintre " << a << " " << b << " " << c << "
este " << maxim3 << endl;//afisare

system("pause");

}
}

/*Problema 2:Definiti o functie inline min() care determina si afiseaza minimul


dintre 2(3) numere �ntregi introduse de la
tastatura.*/

#include <iostream> //directiva preprocesor -> pentru cin si cout


using namespace std;

inline int minim2(int,int);//prototipul functiei minim2()

inline int minim3(int,int,int);//prototipul functiei minim3()

int main()
{
int a, b, c;
cout << "introduceti a: ";
cin >> a;//citire
cout << "introduceti b: ";
cin >> b;//citire
cout << "introduceti c: ";
cin >> c;//citire
cout << "Cel mai mic numar dintre " << a << " si " << b << " este " <<
minim2(a, b) << endl;//afisarea minimului dintre 2 cifre

cout << "Cel mai mic numar dintre " << a << "," << b << " si " << c << " este
" << minim3(a, b, c) << endl;//afisarea minimului dintre 3 cifre

system("pause");

inline int minim2(int a, int b)//functie inline pentru determinarea maximului


dintre 2 cifre
{
if (a < b) return a;//verificarea cifrelor
else return a;
}

inline int minim3(int a, int b, int c)//functie inline pentru determinarea


maximului dintre 3 cifre

{
int minim = a;
if (b < minim) {
b = minim;
}
if (c < minim) {
c = minim;
}
return minim;

/*Problema 3:Considerati o functie cu 3 parametrii impliciti (int, float, double)


care returneaza produsul acestor valori.
Apelati functia consider�nd mai multe variante de apel concrete*/

#include <iostream> //directiva preprocesor -> pentru cin si cout


using namespace std;

float produs(int,float, double);//prototipul functiei

int main()
{
int a;
float b;
double c;
float prod;
cout << "Introduceti 3 valori intregi: " << endl;
cin >> a >> b >> c;

prod = produs(a, b, c);//apelarea functiei produs


cout << "Produsul celor 3 valori este: " << prod << endl;//afisare
system("pause");

}
float produs(int a, float b, double c)//functie cu parametrii implciiti
{
return a * b*c;
}

/*Problema 4:Folosind supra�ncarcarea functiilor definiti trei functii cu acelasi


nume dar cu tipuri diferite de parametri (int,
int *, int&) care returneaza radicalul unei valori. Analizati cazul transmiterii
parametrilor prin valoare si ca
referinta*/

#define _CRT_SECURE_NO_WARNINGS
#include <math.h>//directive preprocesor
#include <iostream>
using namespace std;

double radical(int);// prototipurile functiei


double radical(int*);
double radical(int&&);

int main() {
int a, *pt = &a;
cout << "Introduceti un numar: ";
cin >> a;

cout << "Radical din " << a << " este " << radical(a) << endl;//afisarea
radicalului
cout << "Radical din " << a << " este " << radical(pt) << endl;//afisarea
radicalului
cout << "Radical din " << a << " este " << radical(&a) << endl;//afisarea
radicalului

system("pause");
}

double radical(int x) {//functie radical


return (sqrt(x));
}
double radical(int *x) {//functie radical
return (sqrt(*x));
}
double radical(int &&x) {//functie radical
return (sqrt(x));
}

/*Problema 5: Determinati minimul dintr-un sir de 10 numere flotante (introduse de


la tastatura/initializate) folosind functii
cu un numar variabil de parametri. Se vor considera primele 7 valori din sir, apoi
urmatoarele 3, dupa care se
afiseaza minimul din cele 10 folosind valorile determinate anterior*/

#include <stdarg.h>
#include <iostream>
using namespace std;

double min(int , ...);// prototipul functiei

int main()
{
double a, b, c;
cout<<"Introduceti numerele: ";
cin >> a >> b >> c;

double minVal = min(10, 2.34, 7.24, 8.12, 3.23, 6.23, 2.12, 9.13, a, b, c);

cout << "Minimul este: " << minVal << endl;


system("pause");
}

double min(int nrParametrii, ...)//functie cu numar variabil de parametrii

{
va_list a;
va_start(a, nrParametrii);//initializam pointerul parametrului

double minim = va_arg(a, double); //initializam minimul cu primul parametru

for (int i = 1; i < nrParametrii; i++) //facem asta pentru toti parametrii
urmatori
{
double data = va_arg(a, double);
if (data < minim)
minim = data;//aflarea minimului
}
va_end(a);

return minim;//returnarea minimului din functie


}

/*Problema 6: Scrieti un program care face o codare simpla prin adaugarea la codul
ASCII al caracterului o valoare n=3,
folosind macro func?ii. Exemplu: �a� devine �n urma codarii �d�.*/

#include <iostream>//directiva preprocesor


using namespace std;
#define ASCII(x) (x=x+3)//macrofunctie pentru adaugarea la codul ASCII

int main() {

char a;
cout << "Introduceti un caracter: ";
cin.get(a);
a = ASCII(a);//apelarea macrofunctiei
cout << "Valoarea dupa adaugarea la codul ASCII este : " << a<<endl;
system("pause");
}

/*Problema 7: Sa se scrie un program care afiseaza numele programului, data si ora


compilarii si numarul de linii pe care �l
are acest program.*/

#define _CRT_SECURE_NO_WARNINGS
#include <time.h>//directive preprocesor
#include <stdio.h>
#include <conio.h>

int main()
{
time_t t = time(NULL);
struct tm tm = *localtime(&t);

printf("acum: %d-%d-%d %d:%d:%d\n", tm.tm_year + 1900, tm.tm_mon + 1,


tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);//afisarea timpului si datei
compilarii programului
_getch();
}

You might also like