Czy można wstawić biały znak,spację do tablicy typu int?

Odpowiedz Nowy wątek
2018-12-05 20:22
0

Czy można?

Prośba do moderatora o dodanie tagu #rakcontent - vpiotr 2018-12-06 15:56
Nie chciałem tylko przepisywać tego samego. - Render125 2018-12-06 16:03

Pozostało 580 znaków

2018-12-06 03:01
0

Jeśli mam taką tablicę dwuwymiarową:

333444
4433
333344

I chcę zrobić

333444
4433
33334
edytowany 1x, ostatnio: furious programming, 2018-12-06 04:22

Pozostało 580 znaków

2018-12-06 08:51
3

to albo jak czlowiek uzyj std::vector i zapomnij o tablicach albo tworzysz nowa tablice, przepisujesz stara do nowej po za elementami ktore chcesz usunac i usuwasz stara (zwalniasz pamiec)

Pozostało 580 znaków

2018-12-06 15:40
0

Muszę użyć malloc i free

to jest stwierdzenie czy pytanie? - MarekR22 2018-12-06 15:53
Stwierdzenie - Render125 2018-12-06 16:02

Pozostało 580 znaków

2018-12-06 15:47
3

Czy można wstawić biały znak,spację do tablicy typu int?

Najprościej, całkowicie na chłopski rozum: Nie można, ponieważ jest to tablica licz całkowitych, a czy spacja jest liczbą całkowitą? I naturalnie nie chodzi mi tutaj o kod ASCII. ;-)

Pokaż w ogóle treść zadania.

edytowany 2x, ostatnio: grzesiek51114, 2018-12-06 15:49

Pozostało 580 znaków

2018-12-06 15:50
2

W C++? Jaka idea za tym stoi?

No ale skoro _musisz_¹ — przebiegasz tablicę raz, w poszukiwaniu wyrażeń, które nie zostaną usunięte. Jak już wiesz, ile ich będzie, to malloc-iem tworzysz nową tablicę, o potrzebnym rozmiarze, przepisujesz co chcesz i free zwalniasz starą pamięć.


¹ Jeśli robisz to na potrzeby jakiegoś kursu na studiach czy gdzieś, to spróbuj o tym zapomnieć jak tylko go zaliczysz…

edytowany 1x, ostatnio: Althorion, 2018-12-06 15:50

Pozostało 580 znaków

2018-12-06 17:14
4

@Render125: to cały czas jest problem XY, albo to zrozumiesz i zadasz zrozumiałe pytanie, albo będziesz tylko marzył o odpowiedzi, którą ci potrzebna.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2018-12-06 20:45
0
 
tab=(int**)malloc(n*sizeof(int*)); ///alokacja pamieci dla wierszy
    for(int i=0; i<n; i++)
    {
    tab[i]=(int*)malloc(t[i]*sizeof(int)); ///alokacja pamieci dla kolumn
    }
    /// Przypisanie wartoœci
    cout<<endl;
    cout<<"WYPELNIJ KAZDA Z TABLIC(Pamietaj ze mozesz tylko raz wpisac zero): ";
    for(int i=0; i<n; i++)
 {
 tab[i]=(int*)malloc(t[i]*sizeof(int));
 for ( int j = 0; j < t[i]; ++j)
   {
       cout<<"Element nr "<<j<<" :";
       cin>>tab[i][j];
   }
 }
edytowany 4x, ostatnio: Render125, 2018-12-06 20:50
Sformatuj kod, wywal html - kq 2018-12-06 20:49

Pozostało 580 znaków

2018-12-06 22:20
1

Gdyby nie test z kodu to nadal nie wiadomo by było na czym polega problem, a tak łącząc to z innym postami to można się domyśleć (ledwo):

for (int i = 0; i < n; i++) {
    for (int j = 0; j < t[i]; ++j) {
        if (tab[i][j]) {
            cout << setw(6) << tab[i][j];
        } else {
            cout << std::string(6, ' ');
        }
    }
    cout << '\n';
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2018-12-06 23:13
0

Co robi ten kod?

Pozostało 580 znaków

2018-12-07 00:49
0
grzesiek51114 napisał(a):

Pokaż w ogóle treść zadania.

Ogólnie to mam stworzyć tablicę dwuymiarową i dokonać kilku modyfikacji

211122222
11220212
22222111
111123
222222
1
11111

Po wciśnięciu U wszystkie elementy bezpośrednio poniżej 0 przenoszą się o polę w górę.

211122222
11222212
22222111
111123
2222 2
1
11111

Następnie wyrównujemy planszę do lewej, to znaczy "łatamy" luki w wierszu poprzez przesunięcie elementów po lukach w lewo.

211122222
11222212
22222111
111123
22222
1
11111

Patrzymy, jaka liczba weszła na miejsce 0: w naszym przykładzie jest to 2. Usuwamy z tablicy wszystkie pola, do których da się dotrzeć ruchami tylko w prawo i lewo albo tylko w górę i w dół bez przechodzenia przez pole o innej wartości (w naszym przykładzie przez pola o wartości innej niż 2). Przywracamy 0 na pole, w którym znajdowało się wcześniej

2111 2222
11  0 12
2222 111
1111 3
2222 
1
11111

Na koniec robimy wyrównianie w lewo.

21112222
11012
2222111
11113
2222 
1
11111
edytowany 1x, ostatnio: furious programming, 2018-12-08 21:26
Formatuj zawartość swoich postów. - furious programming 2018-12-08 21:26

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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