Firma telekomunikacyjna przechowuje dane dotyczące jednej rozmowy w jednej 64-bitowej zmiennej typu unsigned long long (albo lepiej, uint64_t) w której zakodowane są
1.(caller): liczba 17 bitowa, czyli z zakresu
2. (caller_zone): liczba 7 bitowa
3. (callee): liczba 17 bitowa;
4. (callee_zone): liczba 7 bitowa;
5. (duration): liczba 13 bitowa,
6. (tariff): liczba 3 bitowa, czyli z zakresu
Funkcje ma pobrać sześć liczb opisanych wcześniej (jako liczby typu int) i upakować wszystkie do jednej liczby typu uint64_t;
info drukuje informacje o pojedynczej rozmowie przekazane w jednej liczbie typu uint64_t((info korzystając tylko z podstawowej biblioteki iostream).
Napisałem taki wynalazek szukając w google podpowiedzi
#include <iostream>
using namespace std;
void info();
uint64_t eco1(int, int, int, int, int, int);
class encode
{ //deklaruje ile bitów
struct bits {
uint64_t caller : 17;
uint64_t callee : 17;
uint64_t duration : 13;
uint64_t caller_zone : 7;
uint64_t callee_zone : 7;
uint64_t tariff : 3;
}; uint_least64_t whole;
public:
//funkcja pobierająca inty zmienia na uint64_t i zwraca do zmiennych globalnych
uint64_t eco1(int caller, int caller_zone,
int callee, int callee_zone,
int duration, int tariff)
{
caller = (uint64_t)caller;
caller_zone = (uint64_t)caller_zone;
callee = (uint64_t)callee ;
callee_zone = (uint64_t)callee_zone;
duration = (uint64_t)duration;
tariff = (uint64_t)tariff;
uint64_t bits;
bits = caller | caller_zone | callee | callee_zone | duration | tariff; // pakuje przerobione inty do struktury
}
void info() //wypisuje na ekranie (wypisywanie tylko przy urzyciu biblioteki iostream)
{
uint64_t caller, caller_zone, callee, callee_zone, duration, tariff;
cout << "Caller: " << caller << endl;
cout << "Caller_zone : " << caller_zone << endl;
cout << "Callee : " << callee << endl;
cout << "Callee_zone : " << callee_zone << endl;
cout << "Duration : " << duration << endl;
cout << "Tariff : " << tariff << endl;
}
};
int main()
{
info(eco1(130999, 101, 7777, 99, 7000, 6)); //blad za duzo argumentow w wywolaniu funkcji
uint64_t bits;
eco1(130999, 101, 7777, 99, 7000, 6);//blad za duzo argumentow w wywolaniu funkcji
info(bits);
system("pause");
return 0;
}
// samo info ma błąd "info": nie przyjmuje 1 argumentów
Wyskakują mi błędy w kompilacji tylko ich nie rozumiem zwłaszcza tego z zbyt durzą ilością argómentów kiedy mam podanych 6 czyli tyle ille powinienem ;[