Witam, mam zadanie o nastepującej treści “Napisz funkcję, która zależy od jednego arumentu - liczby całkowitej. Zaś zwraca napis (ciąg cyfr) reprezentujący podaną liczbą z oddzieleniem grup 3-cyfrowych przy pomocy przecinka np:1234567 => 1,234,567. Funkcja zwracać powinna wskaźnik do tablicy char”
Niestety nie wiem dlaczego po wywołaniu nie zwraca ona żadnej wartości. Gdy włożyłem do mojej funkcji “cout” po każdym zapisie znaku do nowej tablicy to wartości były poprawe, ale gdy już starałem się wydrukować wyniki po zakończeniu pętli for to ich “nie ma”. Proszę o pomoc.
Błąd polegał na tym że powinno być k-1 a nie k jako indeks cyfra1. Wystarczyło linie k=k-1 przenieść wyżej by osiągnąć ten rezultat. Zapis k-- to to samo tylko w prostszym zapisie.
Skasuj też linie
delete cyfry1;
bo w tym miejscu i tak nic nie robi.
Proponował bym też przerobić program by nie było w nim instrukcji goto , tego typu skoków należy unikać by kod był czytelniejszy.
Dziękuję za pomoc, po kilku zmianach wszystko działa.
Co do Twojej odpowiedzi alex mam dwa pytania:
“nie możesz użyć getline dla zmiennej wskaźnikowej, musi być tablica” - dlaczego?
Poza tym, co jeśli zamierzam wprowadzić więcej niż 100 liczb?? Nie uda mi się bo tablica jest za mała dlatego też nie może zrobić tak jak zaproponowałeś.
przy próbie kompilacji Twojego kodu mam błąd
"cyfry1.cpp: In function ‘char* funkcja(const char*)’:
cyfry1.cpp:6: error: ‘strlen’ was not declared in this scope"
ale to już jest mniej ważne - pytam tylko z ciekawości.
to wskazuje ona na nieokreślony obszar w pamięci, getline będzie próbować w ten obszar wpisać to co wpisze użytkownik z klawiatury - gwarantowany Access Violation.
Jak potrzebujesz więcej to zwiększ ze 100 do 1000, jak potrzebujesz bez ograniczenia to albo użyj:
string s;
getline(cin,s);
lub sklejaj dynamicznie z fragmentów używając strlen() i cin.gcount() do określenia czy wczytał już cały wiersz.
Dołącz większość kompilatorów ma to podpięte pod
Naucz się myśleć i działać samodzielnie, problem z strlen wpisz w google “cplusplus strlen” pierwszy link będzie akurat na temat, w pierwszych 3-ch wierszach będziesz miał informacje o