#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int m, n, k, i, j, l;
int **A;
int **B;
int **C;
FILE *plik;
plik=fopen("macierze.txt","w");
// pobieranie rozmiaru macierzy
printf("Wymiary macierzy: \n");
printf("m: "); scanf("%d", &m);
printf("n: "); scanf("%d", &n);
printf("k: "); scanf("%d", &k);
// generowanie macierzy
A = (int**)malloc(m*sizeof(int *));
B = (int**)malloc(n*sizeof(int *));
C = (int**)malloc(m*sizeof(int *));
for (i = 0; i<m; i++) {
A[i] = (int*)malloc(n*sizeof(int));
C[i] = (int*)malloc(k*sizeof(int));
}
for (i = 0; i<n; i++) {
B[i] = (int*)malloc(k*sizeof(int));
}
// wprowadzanie wartoœci macierzy
printf("Podaj wartoœci macierzy A: \n");
for(i=0; i<m; i++) {
for(j=0; j<n; j++) {
scanf("%d", &A[i][j]);
}
}
printf("Podaj wartoœci macierzy B: \n");
for(i=0; i<n; i++) {
for(j=0; j<k; j++) {
scanf("%d", &B[i][j]);
}
}
// wyœwietlanie wprowadzonych danych
printf("\n Wprowadzona macierz A: \n");
for(i=0; i<m; i++) {
for(j=0; j<n; j++) {
printf("%d ", A[i][j]);
}
printf("\n");
}
printf("\n Wprowadzona macierz B: \n");
for(i=0; i<n; i++) {
for(j=0; j<k; j++) {
printf("%d ", B[i][j]);
}
printf("\n");
}
// zerowanie macierzy wynikowej
for(i=0; i<m; i++) {
for(j=0; j<k; j++) {
C[i][j] = 0;
}
}
// mno¿enie AxB = C
for(l=0; l<m; l++) {
for(j=0; j<k; j++) {
for(i=0; i<n; i++) {
C[l][j] += (A[l][i] * B[i][j]);
}
}
}
// wyœwietlanie wyniku
printf("Macierz wynikowa: C= \n");
for(i=0; i<m; i++) {
for(j=0; j<k; j++) {
printf("%d ", C[i][j]);
}
printf("\n");
}
// zwalnianie pamiêci
for (i = 0; i<m; i++) {
free(A[i]);
free(C[i]);
}
for (i = 0; i<n; i++) {
free(B[i]);
}
free(A);
free(B);
free(C);
return 0;
}
Napisałem taki program do mnożenia macierzy o wymiarach pierwsza MxN i druga NxK. Teraz chciałbym zmodyfikować go aby wymiary macierzy oraz wartości komórek macierzy wczytywał z pliku tekstowego macierze.txt. Wymiary oraz wartości będą sztywno określone przez to co zawiera plik, a wynik mnożenia ma być zapisany do pliku wynik.txt. Mam plik w którym mam wymiary macierzy zapisane w sposób
2
3
2
I tak samo będą wpisane wartości komórek. Tworzę sobie uchwyt do pliku:
FILE *plik;
plik = fopen("macierze.txt", "r");
Problem mam w odczytaniu wartości do zmiennych - nie wiem jak po odczytaniu jednej zmiennej przejść do kolejnej linii w pliku i odczytać ją do drugiej.
Czy niezbędne jest użycie fseek? Jak jej do tego użyć? Ustawić pozycję na początek i iterować? Czy może jest inny sposób? Ogółem prosiłbym o podpowiedź bardziej w formie opisowej niż fragment kodu, chciałbym sam wykombinować jak to zakodować