[c]матрица в файле

  • Автор темы kokerka
  • Дата начала
K

kokerka

Гость
#1
Помогите пожалуйста. Нужно написать программу на Си: имеется текстовый файл в котором есть матрица(не обязательно квадратная) с числами с плавующей точкой. Пользователь вводит номера столбцов и операции с ними, и результирующий столбец сохраняется в другом текстовом файле. Возможно что пользователь просто напишет номера столбцов без операций

я написал часть проги считывающей из файла матрицу а вот как реализовать операции со столбцами не знаю.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main()
{
FILE *fp;
int index = 0, i = 0, j = 0, M = 0, N = 0;
char str[10] = {0};
double matrix[30][30] = {0};
double value = 0.0;
char ch;

if((fp = fopen("C:\\file.txt", "r"))==NULL)
{
printf("Error\n");
exit(1);
}

while(!feof(fp))
{
ch = getc(fp);
if(isdigit(ch))
{
while(!isspace(ch) && ch!=EOF)
{
str[index++] = ch;
ch = getc(fp);
}
value = atof(str);
matrix[i][j++] = value;
M = i; N = j-1;
if(ch=='\n'){ ++i; j = 0; }
memset(str, '\0', 10);
}
index = 0;
}

/*вывод на экран*/
for(i = 0; i <= M; ++i)
{
for(j = 0; j <= N; ++j)
{
printf("%g\t", matrix[i][j]);
}
printf("%c", '\n');
}

fclose(fp);
system("pause");
return 0;

}
 
Y

Yason

Гость
#2
1. Получаем от пользователя номера столбцов (например, column1 и column2), проверяем, есть ли такие в матрице.
2. Проверяем, указал ли пользователь операцию, если нет - ругаемся и выходим.
3. Объявляем массив result длиной (количество строк в матрице) - в него будем складывать результат.
4.
Код:
for (int i=0; i<N; i++) 
result[i] = evaluate(matrix[i, column1], matrix[i, column2], operation)
где evaluate() - функция, которая проводит операцию operation над переданными числами и возвращает результат. Внутри evaluate() -- простой switch на 4 арифметических действия.
5. Записываем result в файл.