Problem ze tablicami wskaźników

0

Mam takie zadanie:

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 n" - gdzie n jest kolejnym numerem linijki (od 0 do 9).
Po zrobieniu tego wobec wszystkich 10 elementów tablicy linijka, za pomocą pętli for wypisz na ekranie kolejno zawartość tych C-stringow.
W tablicy wskaźników linijka dokonaj takiej zmiany, by zamienić zawartość elementu 3 z 6.
Za pomocą takiej samej jak poprzednio pętli for wypisz na ekranie naszych 10 C-stringow.
Zlikwiduj wszystkie rezerwowane operatorem new obiekty.

/Symfonia C++ Standard Jerzy Grębosz

Będę wdzięczny za każda podpowiedź.

Kod, który udało mi się napisać:

#include <iostream>
using namespace std;
void jakas_funkcja();
int main()
{
jakas_funkcja();
}

void jakas_funkcja()
{
    char *linijka[10];
    char *wsk;


    for(int i = 0; i < 10; i++)
        {
            wsk = new char[80];
            linijka[i] = wsk;
            wsk[i] = "To jest linijka nr: ";
            cout << *wsk;

        }


}
 

No niestety ostro się przejechałem na tym zadaniu..pomożecie?

0
#include <iostream>
using namespace std;

//Napisz funkcję, 
void fun()
{
//która zarezerwuje 10 elementową tablicę, (Ma to być tablica, w której można przechowywać wskaźniki do tablic znaków.)
     char* tablica[10];
//a jej adres przekaże wskaźnikowi o nazwie linijka.
     char** linijka = tablica;

//Następnie za pomocą pętli for dla każdego z 10 elementów tej tablicy linijka: 
     for(int i = 0; i < 10; ++i)
     {
// -zarezerwuj operatorem new tablicę 80 znaków;
          char* temp = new char[80];
// -jej adres wpisz do kolejnego elementu tablicy linijka;
          *(linijka + i) = temp;
// -w tej 80 znakowej tablicy znaków umieść C-string "To jest linijka nr n" - gdzie n jest kolejnym numerem linijki (od 0 do 9).
          strcpy(temp, "To jest linijka nr: ");
		  int dlugosc = strlen(temp);
		  temp[dlugosc++] = i + '0';
		  temp[dlugosc] = '\0';
     }
//Po zrobieniu tego wobec wszystkich 10 elementów tablicy linijka, za pomocą pętli for wypisz na ekranie kolejno zawartość tych C-stringow.
	 for(int i = 0; i < 10; ++i)
		 cout << tablica[i] << endl;

	 cout << endl;
//W tablicy wskaźników linijka dokonaj takiej zmiany, by zamienić zawartość elementu 3 z 6.
	 char* temp = linijka[2];
	 *(linijka + 2) = *(linijka + 5);
	 linijka[5] = temp;
//Za pomocą takiej samej jak poprzednio pętli for wypisz na ekranie naszych 10 C-stringow.
	 for(int i = 0; i < 10; ++i)
		 cout << linijka[i] << endl;
//Zlikwiduj wszystkie rezerwowane operatorem new obiekty.
	 for(int i = 0; i < 10; ++i)
		 delete [] linijka[i];
}

int main()
{
	fun();
	getchar();
	return 0;
}
0

Dzięki :)

0

Słodki Swarogu,CO to ma być MJay?!

@Spawov
Wystarczy ino to w ciele maina:


const char *text="To jest linijka nr:";
char **linijka=new char*[10];

//stworzenie i wypełnienie tekstem
for(int cnt=0;cnt<10;cnt++)
{
    linijka[cnt]=new char[80];//+2 na cyfrę
    strcpy(linijka[cnt],text);
    itoa(cnt+1,linijka[cnt]+strlen(text),10);    
}

//wyświetlenie
for(int cnt=0;cnt<10;cnt++) printf("%s\n",linijka[cnt]);

//zamiana 3 z 6
char *tmp=linijka[2];
linijka[2]=linijka[5];
linijka[5]=tmp;

//wyświetlenie
for(int cnt=0;cnt<10;cnt++) printf("%s\n",linijka[cnt]);

for(int cnt=0;cnt<10;cnt++) delete[] linijka[cnt];
delete[] linijka;

1 użytkowników online, w tym zalogowanych: 0, gości: 1