Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define BUFLEN 10
- typedef struct mRida{
- int *rida;
- } mRida;
- typedef struct matrix{
- mRida *mRead;
- int max;
- int a;
- int n;
- } matrix;
- void loeRead(matrix *x, char *fnimi);
- void lisaRida(matrix *x, int abi[]);
- void arvutamine(matrix *x, char *fonimi);
- void vabasta(matrix *x);
- int main(void)
- {
- matrix x = {NULL, 0, 0, 0};
- loeRead(&x, "sisend.txt");
- arvutamine(&x, "valja.txt");
- vabasta(&x);
- return 0;
- }
- void loeRead(matrix *x, char *fnimi)
- {
- FILE *f = fopen(fnimi, "r");
- int N, i;
- if(f == NULL)
- {
- printf("Faili %s ei saanud avada \n", fnimi);
- exit(0);
- }
- if(fscanf(f, "%d", &N)==1)
- {
- if(N > 0 && N < 11)
- {
- x->n = N;
- x->a++;
- }
- else
- {
- printf("Ruutmaatriks on liiga suur/vaike");
- exit(0);
- }
- }
- int abi[N];
- while(!feof(f))
- {
- for(i = 0; i < x->n;i++)
- {
- fscanf(f, "%d", &abi[i]);
- }
- lisaRida(x, abi);
- }
- fclose(f);
- }
- void lisaRida(matrix *x, int abi[])
- {
- mRida *pAbi = NULL;
- int *rAbi;
- int i;
- if(x->max <= x->a) //pole ruumi lisada
- {
- x->max = (x->max + 2) * 2;
- pAbi = (mRida*)realloc
- (x->mRead, x->max * sizeof(mRida));
- if(abi != NULL){
- x->mRead = pAbi;
- }
- }
- rAbi = malloc(sizeof(int));
- if(abi != NULL)
- {
- x->mRead[x->a].rida= rAbi;
- }
- for(i = 0; i<x->n;i++)
- x->mRead[x->a].rida[i] = abi[i];
- for(i = 0; i<x->n;i++)
- printf(" %3d ", x->mRead[x->a].rida[i]);
- printf("\n");
- x->a++;
- }
- void arvutamine(matrix *x, char *fonimi)
- {
- FILE *fo = fopen(fonimi, "w");
- if(fo == NULL)
- {
- printf("Faili %s ei saanud avada \n", fonimi);
- exit(0);
- }
- int i, j, arv;
- // I = RIDA
- // J = VEERG
- for(i=0;i<x->n;i++)
- {
- for(j=0;j<x->n;j++)
- fprintf(fo," %3d ", x->mRead[i+1].rida[j]);
- fprintf(fo, "\n");
- }
- printf("===uus maatriks B===\n");
- fprintf(fo,"===uus maatriks B===\n");
- for(i=0;i<x->n;i++)
- {
- for(j=0;j<x->n;j++)
- {
- arv = (x->mRead[i+1].rida[j] *
- x->mRead[j+1].rida[i]);
- printf(" %3d ", arv);
- fprintf(fo," %3d ", arv);
- }
- printf("\n");
- fprintf(fo, "\n");
- }
- fclose(fo);
- }
- void vabasta(matrix *x)
- {
- int i;
- for(i=0; i < (x->n); i++)
- {
- free((x->mRead+i)->(rida + j));
- }
- free(x->mRead);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement