Witam, napisalem program ktory wczytuje z pliku dwie macierze. Po czym sprawdza czy jedna jest transpozycja drugiej. Program wyswietla prawidlowe wyniki dla wiekszosci komorek macierzy, niestety zdarzaja sie bledy, mimo jak mi sie wydaje prawidlowego kodu. Dodatkowo w sekcji gdzie badany jest warunek zwraca mi tak!, mimo iz nie sa transpozycjami. Mozliwe ze ma to zwiazek z bledem
***stack smashing detected *** ktory wyswietla mi sie po wykonaniu programu na ekranie.
Zrobilem jeszcze transpozycje Maicerzy A dla podgladu, ale tam rowniez zdarzaja sie bledy ;/
#include <stdio.h>
int main()
{
int tabA[1][2];
int k;
int tabB[3][2];
int c,v;
int tabAT[2][1];
FILE *plik1;
plik1=fopen("A.txt","rw");
if(plik1==NULL)
printf("blad z otwarciem pliku\n");
FILE *plik2;
plik2=fopen("B.txt","rw");
if(plik2==NULL)
printf("blad z otwarciem pliku\n");
fscanf(plik1, "%d.%d.%d", &tabA[0][0],&tabA[0][1],&tabA[0][2]);
fscanf(plik1, "%d.%d.%d", &tabA[1][0],&tabA[1][1],&tabA[1][2]);
printf("MacierzA:\n");
for(int i=0; i<2;i++)
{
for(int j=0; j<3; j++)
{
printf("%d\t", tabA[i][j]);
if(j==(2))
printf("\n");
}
}
printf("\n");
printf("MacierzB:\n");
fscanf(plik2, "%d %d %d ", &tabB[0][0],&tabB[0][1],&tabB[0][2]);
fscanf(plik2, "%d %d %d ", &tabB[1][0],&tabB[1][1],&tabB[1][2]);
fscanf(plik2, "%d %d %d ", &tabB[2][0],&tabB[2][1],&tabB[2][2]);
fscanf(plik2, "%d %d %d ", &tabB[3][0],&tabB[3][1],&tabB[3][2]);
for(int i=0; i<4;i++)
{
for(int j=0; j<3; j++)
{
printf("%d\t", tabB[i][j]);
if(j==(2))
printf("\n");
}
}
for(int i=0; i<2; i++)
{
for(int j=0; j<3; j++)
{
tabAT[j][i]=tabA[i][j];
}
printf("Macierz AT:\n");
for(int i=0; i<3; i++)
{
for(int j=0;j<2;j++)
{
printf("%d\t", tabA[i][j]);
if(j==(1))
printf("\n");
}
}
printf("Czy macierz B jest transpozycja A?\n");
for(int i=0; i<2;i++)
{
for(int j=0; j<3; j++)
{
if(tabA[i][j]=tabB[j][i])
k=1;
else if(tabA[i][j]!=tabB[j][i])
k=0;
continue;
}
}
if(k=1)
printf("Tak!\n");
else
printf("Nie!\n");
return 0;
}}