Witajcie !
Dopiero zaczynam "prawdziwą" przygodę z C++ ;) Na ferie nauczyciel zadał mi dosyć ciekawy problem. Mam napisać funkcję, która zamieni nam liczby w systemie dziesiętnym na jakikolwiek inny system z przedziału 2-16. Jedynym ograniczeniem są typy zmiennych do funkcji. Deklaracja ma wyglądać następująco :
string konwersja(int liczba, int podstawa)
Tak więc zabrałem się do roboty. Podwinąłem rękawy i jazda. Niestety. Na samym końcu jednak dopadł mnie błąd, brzmiący następująco:
"conversion from std::string*' to non-scalar type
std::string' requested"
Błąd odnosi się do przedostatniej linii - "return wyjscie;".
Mój dotychczasowy kod (wiem, "trochę" chaotyczny) wygląda tak:
string konwersja(int liczba, int podstawa) {
int b, c, n = 1, nowa_liczba = liczba;
while(nowa_liczba = nowa_liczba / 10) n++;
int a = 0;
int reszta;
int tablica[0];
do{
nowa_liczba = liczba / podstawa;
reszta = liczba % podstawa;
tablica[a] = reszta;
liczba = nowa_liczba;
a++;
} while(liczba != 1);
string wyjscie[a];
tablica[a] = 1;
for(b=a, c=0; b>=0, c<=a; b--, c++){
switch(tablica[b])
{
case 0: wyjscie[c] = '0'; break;
case 1: wyjscie[c] = '1'; break;
case 2: wyjscie[c] = '2'; break;
case 3: wyjscie[c] = '3'; break;
case 4: wyjscie[c] = '4'; break;
case 5: wyjscie[c] = '5'; break;
case 6: wyjscie[c] = '6'; break;
case 7: wyjscie[c] = '7'; break;
case 8: wyjscie[c] = '8'; break;
case 9: wyjscie[c] = '9'; break;
case 10: wyjscie[c] = 'A'; break;
case 11: wyjscie[c] = 'B'; break;
case 12: wyjscie[c] = 'C'; break;
case 13: wyjscie[c] = 'D'; break;
case 14: wyjscie[c] = 'E'; break;
case 15: wyjscie[c] = 'F'; break;
}
}
return wyjscie;
}
Z góry dziękuję za wszelkie uwagi !
Pozdrawiam,
Jakub