Tablica dwuwymiarowa jako parametr do funkcji 9857 6

O temacie

Autor Trout

Zaczęty 3.01.2012 roku

Wyświetleń 9857

Odpowiedzi 6

Trout

Trout

Użytkownicy
posty50
Propsy1
  • Użytkownicy
Witem,
Mam zadanie, zeby stworzyc funkcje, ktora przyjmuje jako parametr tablice dwuwymiarowa o nieokreslonej wielkosci, losuje do niej wartosci z podanego jako parametr przedzialu i wypisuje ja. Zrobilem cos takiego

#include <iostream>
using namespace std;
int los (int tab[][7],int w,int kol, int pp, int kp){
for (int i = 0;i<w;i++){
for (int j = 0;j<kol;j++)
tab[i][j] = rand() % (kp-pp+1) + pp;
}
}
int wypisz (int tab[][7],int w,int kol){
for (int i = 0;i<w;i++){
for (int j = 0;j<kol;j++)
cout<<tab[i][j];
cout<<endl;
}
}

int main()
{
    srand(time(NULL));
    int tab[5][7];
    los(tab,5,7,0,9);
    wypisz(tab,5,7);
    system("PAUSE");
}
No ale tak mam tylko nieokreslona liczbe wierszy a chcialbym tez kolumn. Wiem, że trzeba by pokombinować ze wskaznikami, ale niestety nie wychodzilo mi to a w internecie tez nie zdolalem znalezc odpowiedzi na moje pytanie.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Tablica dwuwymiarowa jako parametr do funkcji
#1 2012-01-04, 00:11(Ostatnia zmiana: 2012-01-04, 00:12)
Czy koniecznie musisz mieć nieokreśloną dwuwymiarową tablicę? Jedyne co mi przychodzi do głowy, to alokowanie i realokowanie pamięci w momencie dodania nowego elementu do tablicy.

Może źle rozumiesz treść zadania? Może chodzi o utworzeniu tablicy po podaniu przez użytkownika wielkości tej tablicy? Wtedy jeśli zna się jeden wymiar, to można zapisać tak:
int **tab = new int *[rozmiar];Funkcja przyjmuje wtedy tablicę, jako
funkcja (int **tab)

Trout

Trout

Użytkownicy
posty50
Propsy1
  • Użytkownicy
Tablica musi by utworzona w main() tak jak jest. A ilość  wierszy i kolumn maja zostac podane jako parametry funkcji. Tylko nie wiem jak mam przekazac w takim razie ta tablice do funkcji.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Skoro znasz liczbę kolumn i wierszy, to po prostu utwórz w funkcji main() tablicę tab[w][kol], a przekazujesz ją wtedy tak jak wcześniej napisałem
funkcja (int **tab)
int los (int **tab,int w,int kol, int pp, int kp)

Trout

Trout

Użytkownicy
posty50
Propsy1
  • Użytkownicy
Wg tego co zrozumielem to poprawilem program na:
#include <iostream>
using namespace std;
int los (int **tab,int w,int kol, int pp, int kp){
for (int i = 0;i<w;i++){
for (int j = 0;j<kol;j++)
tab[i][j] = rand() % (kp-pp+1) + pp;
}
}
int wypisz (int **tab,int w,int kol){
for (int i = 0;i<w;i++){
for (int j = 0;j<kol;j++)
cout<<tab[i][j];
cout<<endl;
}
}

int main()
{
    srand(time(NULL));
    int tab[5][7];
    los(tab,5,7,0,9);
    wypisz(tab,5,7);
    system("PAUSE");
}
Jednak cos musialem zle zrozumiec, bo w liniach wywolania funkcji los i wypisz kompilator wskazuje blad.
21 C:\Users\Paweł\Desktop\program 44\program 44.cpp cannot convert `int (*)[7]' to `int**' for argument `1' to `int los(int**, int, int, int, int)'
22 C:\Users\Paweł\Desktop\program 44\program 44.cpp cannot convert `int (*)[7]' to `int**' for argument `1' to `int wypisz(int**, int, int)'
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Tablica dwuwymiarowa jako parametr do funkcji
#5 2012-01-04, 21:00(Ostatnia zmiana: 2012-01-04, 21:01)
Ok, tak zadeklaruj tablicę:
int **tab = new int *[5];
for (int i = 0; i < 5; ++i)
   tab[i] = new int [7];

Trout

Trout

Użytkownicy
posty50
Propsy1
  • Użytkownicy
Dzieki wielkie, juz czaje o co w tym chodzi  :)  props  :ok:
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry