problem z wypisaniem dynamicznej tablicy dwuwymiarowej

0

c++/borland c++ builder 6

Mam taki kod:

#include <locale>
#include <iomanip>
#include <conio.h>
#include <iostream>
#include <fstream>
#pragma hdrstop
#pragma argsused
using namespace std;

 int w; 
 int **tablica;
 
 void losowanie()
        {
             
              cout<<"Podaj rozmiar"<<endl;cin>>w;
              
              int **tablica = new int * [w];
              for (int j=0; j<w; j++)
               { tablica[j] = new int[w]; }  
              
          
              for(int i=0; i<w; i++)
                    { 
                      for(int j=0; j<w; j++)
                          { 
                          if (i!=j) tablica[i][j] = (rand() % 9)+1;
                          else tablica[i][j]=-1;                          
                          } 
                          
                    } 
         }
void wypisanie()

        {
                for (int a=0; a<w;a++)
                          { for (int b=0;b<w;b++)
                                   {  
                                   cout<<tablica[a][b]<<"    ";
                                   }cout<<endl;
                          }
        }

int main(int argc, char* argv[])
{
    
        losowanie();
        wypisanie();
        getch();
        return 0;
}

Kompilacja przechodzi, odpala i przestaje działac, a pomijając funkcje wypisanie() działa prawidłowo
problem z wypisaniem, w czym bład ????
proszę o pomoc

0

Co mówi debugger?

0

program odpala i wyrzuca komunikat o błedzie (scren w załączniku)

1
#include <iostream>
#include <cstdlib>
using namespace std;
 
int** losowanie(int w)
        {
              int** tablica = new int * [w];
              for (int j=0; j<w; j++)
               { tablica[j] = new int[w]; }  
 
 
              for(int i=0; i<w; i++)
                    { 
                      for(int j=0; j<w; j++)
                          { 
                          if (i!=j) tablica[i][j] = (rand() % 9)+1;
                          else tablica[i][j]=-1;                          
                          } 
 
                    }
	     return tablica; 
         }
void wypisanie(int** tablica, int w)
 
        {
                for (int a=0; a<w;a++)
                          { for (int b=0;b<w;b++)
                                   {  
                                   cout<<tablica[a][b]<<"    ";
                                   }cout<<endl;
                          }
        }
 
int main(int argc, char* argv[])
{
	int** tablica;
	int w;
        cin >> w;	
        tablica = losowanie(w);
        wypisanie(tablica, w);

	for(int i = 0; i < w; ++i)
		delete[] tablica[i];
	delete[] tablica;

        return 0;


}

Jak to jaki wywalalo? seg fault co innego moglo.

Edit: Zastanow sie na przyszlosc co to jest przeslanianie nazw, zywot zmiennych lokalnych, mem leaky, oraz AV windowsowe.

0

dziękuje:)

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