» »

C++ - čudno obnašanje dinamično alociranega polja

C++ - čudno obnašanje dinamično alociranega polja

Nejc Pintar ::

Imam naslednjo funkcijo:

vozlisce * beri() {
 int x, y;
 ifstream f("graf.txt");
 f>>a;
 matrika=new int*[a];
 for (int i=0; i<a; i++) {
  matrika[i]=new int[a];
 }
 for (int i=0; i<a; i++) {
  for (int j=0; j<a; j++) {
   matrika[i][j]=0;
  }
 }
 while (!f.eof()) {
    f>>x;
    f>>y;
    matrika[x][y]=1;
    matrika[y][x]=1;
 }
 vozlisce * v = new vozlisce[a];
 for (int i=0; i<a; i++) {
     v[i].dolzina=32768;
     v[i].ime=i;
     v[i].predhodnik=-1;
     v[i].status=0;
 }
 return v;
}


problem je, da se mi že po tisti prvi inicializacijami z ničlami v arrayu pojavljajo čudne vrednosti:
(gdb) print **matrika@a@a
$5 = {{0, 0, 0, 0, 0, 0}, {0, 33, 0, 0, 0, 0}, {0, 0, 0, 33, 0, 0}, {0, 0, 0, 0, 0, 33}, {0, 0, 0, 0, 0, 0}, {0, 33, 0, 0, 0, 0}}


Če kdo vidi, kje delam napako naj mi prosim pove, saj se mi malo mudi.

LP, Nejc
Lahko je biti prvi, če si edini!

BigWhale ::

Kaj pa imas v graf.txt? Tole meni dela:

#include <stdio.h>

int main()
{

  int a, x, y;
  a = 3;

  int **matrika;
  matrika=new int*[a];

  for (int i=0; i<a; i++) {
     matrika[i]=new int[a];
  }

  for (int i=0; i<a; i++) {
    for (int j=0; j<a; j++) {
      matrika[i][j]=666;
    }
  }

  for (int i=0; i<a; i++) {
    for (int j=0; j<a; j++) {
     printf ("%d\n", matrika[i][j]);
    }
  }
}


Ali imas v fajlih kaj narobe ali pa pokvarjen racunalnik/prevajalnik/debugger... ;)

Zgodovina sprememb…

  • spremenil: BigWhale ()

Nejc Pintar ::

xxx@zzz:~/Documents/APS$ cat graf.txt
6
0       1
1       2
2       3
3       4
4       5
Lahko je biti prvi, če si edini!

Nejc Pintar ::

V fajlih ni nič narobe, ker do tiste točke prebere le velikost polja s fajla, ki je očitno pravilna, pa tudi probal sem ročno nastavit vrednost pa ne laufa...

btw, tvoj program mi dela.

doh, debuggerju mede, ali pa ga ne znam uporabljat?
Lahko je biti prvi, če si edini!

Zgodovina sprememb…

BigWhale ::

Verjetno drugo. ;) Trenutno ga sedaj nimam, pa tezko sprobam in kaj vec povem. Hehe.

Jean-Paul ::

p **matrika@a@a

Tako ne bo šlo, ker pomnilnika nisi rezerviral v enem kosu.
Poskusi tako:

p *matrika[0]@a, p *matrika[1]@a, ...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java - DN] Naključna števila

Oddelek: Šola
121350 (879) nyler
»

Kruskalov algoritem težave pri implementaciji

Oddelek: Programiranje
51601 (1375) zacetnik11
»

Java-random-polje

Oddelek: Programiranje
6949 (828) LeQuack
»

[Python]Računanje polj

Oddelek: Programiranje
8833 (588) phyro
»

mnozenje matrik

Oddelek: Programiranje
194724 (4386) Vesoljc

Več podobnih tem