/* 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();
}