To polecam także sprawdzić, że działa i to, że można w środku zadeklarować int tab[w][w] bo ktoś pisał że tak nie można:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
int i,j,w;
printf("Podaj jakas liczbe:\n");
scanf("%d",&w);
int tab[w][w];
for(i=0;i<w;i++)
for(j=0;j<w;j++)
tab[i][j]=1;
for(i=0;i<w;i++)
for(j=0;j<w;j++)
printf("%d\n",tab[i][j]);
system("PAUSE");
return 0;
}
tylko z roszerzeniem cpp trzeba zapisać bo z rozszerzeniem .c rzeczywiście nie da rady.
Dodano po 1 [godziny] 4 [minuty]:
Oto kod, który dobrze odczytuje tą nieszczesną tablice z pliku:
//odczyt z pliku
printf("Podaj nazwe pliku w ktorym miesci sie graf:\n");
scanf("%s",&nazwa_pliku);
plik = fopen(nazwa_pliku, "r");
do
{
fscanf(plik,"%d%c",&i,&znak);
w=w+1;
}
while(znak==',');
rewind(plik);
int tab[w][w];
for(i=0;i<=w-1;i++)
for(j=0;j<=w-1;j++)
{
fscanf(plik,"%d,",&tab[i][j]);
}
fclose(plik);
Rzeczywiście Seba traciłęm tą informacje o "w" sczytując za każdym razem "w". No i drugą pętlę trochę zmieniłem patrząc na Twoje sczytywanie tabeli scanf-em. No i potem jak wypisuje sobie:
for(i=0;i<=w-1;i++)
for(j=0;j<=w-1;j++)
printf("%d\n",tab[i][j])
To mi poprawnie wypisują się te wartości. Ale nie mogę w ogóle robić żadnych operacji na tych tab[i][j] bo np. tab[0][0] wynosi 1 a potem nagle jakieś 1356832. Chodzi o to, że np. kiedys robiłem taki program z liczbami pierwszymi i to mi poprawnie zapisywało tab[i] do pliku:
for(i=2;i<=n;i++)
{
y=tab[i];
if(y!=0)
fprintf(f,"%d\n",y);
}
pod warunkiem, że zmienna y nie była użyta w programie ani razu, ale już to nie:
for(i=2;i<=n;i++)
{
if(tab[i]!=0)
fprintf(f,"%d\n",tab[i]);
}
No a teraz sobie wyobraźcie że w tym programie z tab[i][j] ja musze wykonywać dużo operacji logicznych na tych tab[i][j] i zapisywać je do struktury:
struct KrawedzGrafu{
int odwezla;
int dowezla;
int waga;
};
no to o ile w tamtym programie z liczbami pierwszymi sobie poradziłem, bo nie był zbyt rozbudowany, przypadkiem natrafiłem na to, że trzeba dać y=tab[i] to tutaj w tym programie ja chce mieć od razu tab[i][j] jako dobre a nie kombinować.
NO WIĘC JAK ZROBIĆ ŻEBY PROGRAM MI TRAKTOWAŁ TE LICZBY TAB[i][j] JAKO NORMALNE LICZBY, ŻE NIE RAZ JE DOBRZE WIDZI A RAZ WIDZI JAKIEŚ 223234445. PROGRAMOWANIE W C to po prostu porażka!!!
Dodano po 11 [minuty]: Albo mam taki kompilator beznadziejny, jakąś gównianą wersje, niedoroba Dev-C++ 4.0.0.0