# PBinfo #2274 – Limite – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Se dau n numere naturale. Afișați tipul de date C++ minim ca număr de octeți permite memorarea fiecărui număr. Dacă un număr încape și în tipul cu semn și în tipul fără semn, se afișează tipul cu semn.

Date de intrare
Fișierul de intrare limite.in conține numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire
Fișierul de ieșire limite.out va conține n șiruri de caractere, pe n rânduri, reprezentând tipurile de date cerute, dintre char, unsigned char, short, unsigned short, int, unsigned int, long long, unsigned long long.

Restricții și precizări

1 ≤ n ≤ 10000
cele n numere citite vor fi mai mici sau egale cu 18446744073709551615

Exemplu:
limite.in

5
10 18446744073709551615 32767 127 65535
limite.out

char
unsigned long long
short
char
unsigned short

## Cod sursă C++

```cpp
#include <fstream>
#include <limits.h>
using namespace std;
ifstream cin("limite.in");
ofstream cout("limite.out");
void type(unsigned long long int x){
    if(x <= SCHAR_MAX)
        cout << "char";
    else if(x <= UCHAR_MAX)
        cout << "unsigned char";
    else if(x <= SHRT_MAX)
        cout << "short";
    else if(x <= USHRT_MAX)
        cout << "unsigned short";
    else if(x <= INT_MAX)
        cout << "int";
    else if(x <= UINT_MAX)
        cout << "unsigned int";
    else if(x <= LONG_LONG_MAX)
        cout << "long long";
    else cout << "unsigned long long";
    cout << '\n';
}
int main()
{
    unsigned long long n,i,x;
    cin >> n;
    for(i = 1 ; i <= n ; ++i){
        cin >> x;
        type(x);
    }
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2274)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2274/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2274/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
