Tak na teraz wygląda cały kod. Jest jeszcze nie dokończony i cos tam na bieżąco przerabiałem ale cały czas jest ten problem. Program ma wykonywać dodawanie odejmowanie i mnożenie macierzy. Większość printfów jest kontrolnych i na koniec je usune.
#include <stdio.h>
#include <stdlib.h>
int w;
int k;
int i,j;
unsigned wiersze,kolumny;
int pobranie_i_zapis_A(int tab[wiersze][kolumny],unsigned wiersze,unsigned kolumny)
{
printf("Macierz A=\n");
for(w=0;w<wiersze;w++)
{
for(k=0;k<kolumny;k++)
{
scanf("%d",&tab[w][k]);
}
}
FILE *fp;
fp=fopen("calc.txt","w");
if (fp==NULL)fprintf(stderr,"Nie mozna otworzyc pliku\n");
for(w=0;w<wiersze;w++)
{
for(k=0;k<kolumny;k++)
{
fprintf(fp," %d",tab[w][k]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
//-------------------------------------------------------------------------------
int wypisanie(int tab[wiersze][kolumny], unsigned wiersze,unsigned kolumny)
{
printf("macierz a:\n");
for(w=0;w<wiersze;w++)
{
for(k=0;k<kolumny;k++)
{
printf(" %d",tab[w][k]);
}printf("\n");
}
}
//--------------------------------------------------------------------------------
int pobranie_i_zapis_B(int tab[wiersze][kolumny],unsigned wiersze,unsigned kolumny)
{
printf("Macierz B=\n");
for(w=0;w<wiersze;w++)
{
for(k=0;k<kolumny;k++)
{
scanf("%d",&tab[w][k]);
}
}
FILE *fp;
fp=fopen("calc.txt","a");
if (fp==NULL)fprintf(stderr,"Nie mozna otworzyc pliku\n");
else for(w=0;w<wiersze;w++)
{
fprintf(fp,"\n");
for(k=0;k<kolumny;k++)
{
fprintf(fp," %d",tab[w][k]);
}
}
fclose(fp);
}
//---------------------------------------------------------------------------------------
/*int odczyt_z_pliku(int tab_a[wiersze][kolumny],int tab_b[wiersze][kolumny],unsigned wiersze, unsigned kolumny)
{
int odczyt_z_pliku=0;
FILE *fp;
fp=fopen("calc.txt","r+");
if (fp==NULL){fprintf(stderr,"Nie mozna otworzyc pliku\n");exit(1);}
else for(w=0;w<wiersze;w++)
{
for(k=0;k<kolumny;k++)fscanf(fp,"%d",&tab_a[w][k]);
}
for(w=0;w<wiersze;w++)
{
for(k=0;k<kolumny;k++)fscanf(fp,"%d",&tab_b[w][k]);
}
fclose(fp);
return odczyt_z_pliku;
}*/
//--------------------------------------------------------------------------------------
int dodawanie(int tab_1[wiersze][kolumny],int tab_2[wiersze][kolumny],unsigned wiersze,unsigned kolumny)
{
FILE *fp;
fp=fopen("calc.txt","a+");
if (fp==NULL)fprintf(stderr,"Nie mozna otworzyc pliku\n");
else
{
for(i=0;i<wiersze;i++)
{
for(j=0;j<kolumny;j++)
{
fscanf(fp,"%d",&tab_1[i][j]);printf(" %da",tab_1[i][j]);
}printf("\n");
}
for(i=0;i<wiersze;i++)
{
for(j=0;j<kolumny;j++)
{
fscanf(fp,"%d",&tab_2[i][j]);printf(" %db",tab_2[i][j]);
}printf("\n");
}
printf("\n\n");
for(i=0;i<wiersze;i++)
{
for(j=0;j<kolumny;j++)
{
printf(" %d",tab_1[i][j]);
}printf("\n");
}printf("\n\n");
printf("\n\n");
for(i=0;i<wiersze;i++)
{
for(j=0;j<kolumny;j++)
{
printf(" %d",tab_2[i][j]);
}printf("\n");
}printf("\n\n");
fprintf(fp,"\n");
for(i=0;i<wiersze;i++)
{
fprintf(fp,"\n");
for(j=0;j<kolumny;j++)
{
fprintf(fp," %d",tab_1[i][j]+tab_2[i][j]);
printf(" %d",tab_1[i][j]+tab_2[i][j]);
}
printf("\n");
}
}
printf("\n");
fclose(fp);
}
//-----------------------------------------------------------------------------------------
int odejmowanie(int tab_1[wiersze][kolumny],int tab_2[wiersze][kolumny],unsigned wiersze,unsigned kolumny)
{
FILE *fp;
fp=fopen("calc.txt","a+");
if (fp==NULL)fprintf(stderr,"Nie mozna otworzyc pliku\n");
else
{
for(i=0;i<wiersze;i++)
{
for(j=0;j<kolumny;j++)
{
fscanf(fp,"%d",&tab_1[i][j]);printf(" %da",tab_1[i][j]);
}printf("\n");
}
for(i=0;i<wiersze;i++)
{
for(j=0;j<kolumny;j++)
{
fscanf(fp,"%d",&tab_2[i][j]);printf(" %db",tab_2[i][j]);
}printf("\n");
}
printf("\n\n");
for(i=0;i<wiersze;i++)
{
for(j=0;j<kolumny;j++)
{
printf(" %d",tab_1[i][j]);
}printf("\n");
}printf("\n\n");
printf("\n\n");
for(i=0;i<wiersze;i++)
{
for(j=0;j<kolumny;j++)
{
printf(" %d",tab_2[i][j]);
}printf("\n");
}printf("\n\n");
fprintf(fp,"\n");
for(i=0;i<wiersze;i++)
{
fprintf(fp,"\n");
for(j=0;j<kolumny;j++)
{
fprintf(fp," %d",tab_1[i][j]-tab_2[i][j]);
printf(" %d",tab_1[i][j]-tab_2[i][j]);
}
printf("\n");
}
}
printf("\n");
fclose(fp);
}
//-----------------------------------------------------------------------------------------
int main()
{
char znak;
printf("Prosze wybrac dzialanie('+','-' lub '*')\n");
scanf("%s",&znak);
int tab_A[wiersze][kolumny],tab_B[wiersze][kolumny];
int taba[wiersze][kolumny],tabb[wiersze][kolumny];
printf("Prosze podac wymiary macierzy:\nWiersze:");
scanf("%d",&wiersze);
printf("Kolumny:");
scanf("%d",&kolumny);
pobranie_i_zapis_A(tab_A,wiersze,kolumny);
wypisanie(tab_A,wiersze,kolumny);
pobranie_i_zapis_B(tab_B,wiersze,kolumny);
wypisanie(tab_B,wiersze,kolumny);
printf("C=\n");
//if (znak=='*') mnozenie(tab_A,tab_B,tab_C,wiersze,kolumny;
/*else*/ if (znak=='+') dodawanie(taba,tabb,wiersze,kolumny);
else if (znak=='-') odejmowanie(taba,tabb,wiersze,kolumny);
else printf("Error\n");
return 0;
}