C++ dynamiczny rozmiar tablic

Odpowiedz Nowy wątek
2017-11-02 22:24
0

Mam pytanie odnośnie podstaw (zapewne). Mam program, który operuje na macierzach (NxN). Do testowania używałem

 #define N jakaśLiczba

ale program ma być obsługiwany z klawiatury, stąd moje pytanie: w jaki sposób ustawić N dopiero po wpisaniu z klawiatury w funkcjach przed main()?
Z góry dzięki za pomoc.

Pozostało 580 znaków

2017-11-02 22:30
0

Nie da sie.


Pozostało 580 znaków

2017-11-02 22:56
0

#define (podobnie, jak #include i parę innych) to dyrektywa preprocesora, która wykonywana jest w trakcie kompilacji (ściślej chwilę przed) i nie da się ich zmienić już w trakcie działania programu.


Pozostało 580 znaków

2017-11-02 23:05
2

Oczywiście że się da - o ile zrezygnujesz z polskich liter.

#include <iostream>
using namespace std;

int jakasLiczba;

#define N jakasLiczba

int main() {
    while (cin >> N) {
        cout << "N wynosi: " << N << endl;
    }
    return 0;
}

https://ideone.com/bYLD3g

;-)


Szacuje się, że w Polsce brakuje 50 tys. programistów
edytowany 1x, ostatnio: vpiotr, 2017-11-02 23:05

Pozostało 580 znaków

2017-11-02 23:11
0

Jak zrobię coś takiego to:
Error: array bound is not an integer constant before ']' token
jakiś fragment kodu;

void wypisz_macierz(double A[N][N])
{
    for(i=0;i<N;++i)
    {
        for(j=0;j<N;++j)
        {
            cout<<setw(10)<<A[i][j]<<"\t";
        }
        cout<<"\n";
    }
}
edytowany 1x, ostatnio: Mattii4211, 2017-11-02 23:12

Pozostało 580 znaków

2017-11-02 23:13
1

Trzy tematy do ogarnięcia:

  • tablice dynamiczne w C++
  • dwuwymiarowe tablice dynamiczne w C++
  • std::vector

Wersja Pro:


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

2017-11-02 23:21
ziomek
0

Przykład konstruktora:

int row;
int col;

int** mat;

matrix(int m, int n) : row(m), col(n), mat(nullptr)
{
    mat = new int*[row];

    for (int i = 0; i < row; ++i)
        mat[i] = new int[col];
}
Sugerowanie używania new w takim przypadku jest karygodne. - kq 2017-11-03 05:51

Pozostało 580 znaków

2017-11-02 23:28
ziomek
0

Poczytaj odpowiedź z zielonym ptaszkiem o różnicy pomiędzy statyczno-dynamiczną allokacją a w pełni dynamiczną tablicą dwuwymiarową:

https://stackoverflow.com/que[...]dynamic-two-dimensional-array

Pozostało 580 znaków

2017-11-02 23:35
0

ok poczytam, a zamieniłby ktoś tą moją funkcję aby działała, później analogicznie bym mógł dla całego programu

Pozostało 580 znaków

2017-11-03 00:00
ziomek
0

Stary wkleiłem Ci rozwiązanie domyśl się :D

Pozostało 580 znaków

2017-11-03 00:01
ziomek
0

podpowiedź, row i col weź z cin.

To co wkleiłem jest fragmentem struktury, możesz też zrobić to bez konstruktora.

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