Cześć,
Właśnie rozwiązuje zadanie z Symfonii Grębosza, którego treść brzmi następująco:
Napisz funkcję, która zarezerwuje 10 elementową tablicę, a jej adres przekaże wskaźnikowi o nazwie linijka Ma to być tablica, w której można przechowywać wskaźniki do tablic znaków.
Następnie za pomocą pętli for dla każdego z 10 elementów tej tablicy linijka:
- Zarezerwuj operatorem new tablicę 80 znaków,
- Jej adres wpisz do kolejnego elementu tablicy linijka
- W tej 80 znakowej tablicy znaków umieść C-string "to jest linijka nr" - gdzie n jest kolejnym numerem linijki (0-9)
- Po zrobieniu tego wszystkiego, wypisz kolejno zawartości tych C-stringów
- W tablicy wskaźników linijka dokonaj takiej zmiany, by zamienić zawartość elementu trzeciego z szóstym
- Za pomocą takiej samej jak poprzednio pętli for, wypisz na ekranie 10 C-stringów
- Zlikwiduj wszystkie rezerwowane operatorem new obiekty.
Poniżej umieszczam swój kod:
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
char ** tworzaca();
char * druk(char *wsk, const char lol[], int ktora);
const char tojest[19] = {"to jest linijka nr"};
char buffer[12];
int main()
{
char * *linijka;
linijka = tworzaca();
for(int i = 0; i < 10; i++)
{
linijka[i] = new char[80];
cout << druk(linijka[i], tojest, i) << endl;
}
for(int i = 0; i < 10; i++)
{
delete [] linijka[i];
}
delete [] linijka;
return 0;
}
char ** tworzaca()
{
char **w = new char*[10];
return w;
}
char * druk(char *wsk, const char lol[], int ktora)
{
int i;
char *pocz = wsk;
for(i = 0; i < 18; i++) // nie mialem pomyslu jak inaczej to wpisywanie "to jest..." zautomatyzowac
{
*(wsk++) = lol[i];
}
*(wsk++) = ' ';
*(wsk++) = itoa(ktora, buffer, 10); //tu trzeba zastosowac cos ala itoa, ale nie dziala
*wsk = 0;
return pocz;
}
To po kolei. Nie rozumiem celowości 2 podpunktu tego zadania, skoro i tak za chwile do tej tablicy mam wpisać ten ciąg znaków "To jest linijka nr n".
Problemem głównie jest dla mnie jednak ta itoa, nie działa i nie wiem jak zamienić liczbę na jej odpowiednik w ascii, żebym mógł go do c-stringu dołączyć. Jest jakaś inna możliwość zrobienia tego samego? Bo wygląda na to, że ta funkcja biblioteczna nie jest wspierana przez C++, tylko przez niektóre kompilatory... w taki sposób jak to jest tutaj napisane chciałem to zrobić: http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/
Byłbym również wdzięczny za wszelkie konstruktywne uwagi odnośnie tego, co napisałem :) Jeżeli moglibyście mi powiedzieć co mógłbym rozwiązać w jakiś lepszy sposób, to byłoby super :)
Z góry dziękuję za pomoc.
Pozdrawiam