max=a[0][0];
for (int i=0;i<5;i++)
if (a>max)
max=a;
Помогите разобраться с матрицами на С
Задание:
m = 5, n = 5. Найти: (a) максимальный элемент главной диагонали; (b) произведение и число положительных элементов выше главной диагонали; (c) сумму отрицательных элементов.
Код:
wanja, ,благодарю...по возможности объясните как реализуются вторые два вопроса..))
Код:
count = 0;
mult = 1;
for i=1:n
for j=i+1:m
if (M[i,j]>0) then count++; mult*=M[i,j]; endif
endfor
endfor
mult = 1;
for i=1:n
for j=i+1:m
if (M[i,j]>0) then count++; mult*=M[i,j]; endif
endfor
endfor
(c)
Код:
negsum = 0;
for i=1:n
for j=1:m
if(M[i,j]<0) then negsum+=M[i,j]; endif
endfor
endfor
for i=1:n
for j=1:m
if(M[i,j]<0) then negsum+=M[i,j]; endif
endfor
endfor
sigmov, спасибо огромное...у меня проблемы с синтаксисом на С...если можно помогите собрать это в единый код...какие библиотеки использовать и объявление соответствующих переменных...:)
Цитата: Andrew199170
sigmov, спасибо огромное...у меня проблемы с синтаксисом на С...если можно помогите собрать это в единый код...какие библиотеки использовать и объявление соответствующих переменных...:)
Что сказать - учите С!
Вам еще считать матрицу из файла считать нужно!
Код:
int **txt_load(char fname[], int m, int n)
{
FILE *file;
if((file = fopen(fname, "rt"))==NULL)
{
printf("Can't open file. Programm will be closed");
exit(1);
}
int **p;
p = (int **) malloc((m+1)*sizeof(int *));
for(int i=0; i<n; i++)
p = (int *)malloc(n*sizeof(int));
p[m]=NULL;
return p;
for(int i=0; i< *m; i++)
for(int j=0; j< *n; j++)
fscanf(file, " %d", &p[j]);
fclose(file);
return p;
}
{
FILE *file;
if((file = fopen(fname, "rt"))==NULL)
{
printf("Can't open file. Programm will be closed");
exit(1);
}
int **p;
p = (int **) malloc((m+1)*sizeof(int *));
for(int i=0; i<n; i++)
p = (int *)malloc(n*sizeof(int));
p[m]=NULL;
return p;
for(int i=0; i< *m; i++)
for(int j=0; j< *n; j++)
fscanf(file, " %d", &p[j]);
fclose(file);
return p;
}
Тогда в функции main() нужно будет написать так:
Код:
int m = ?, n= ?, **matrix;
char fname[] = "???";
matrix = txt_load(fname, m,n);
char fname[] = "???";
matrix = txt_load(fname, m,n);
И вместо знаков вопроса подставить свои значения m и n, а также имя файла, из которого нужно прочитать матрицу. Наверняка есть более простые способы это сделать, но это первое что пришло в голову.
P.S. и не забудьте в конце программы очистить память
Код:
for(int i=0; matrix; i++)
free(matrix);
free(matrix);
free(matrix);
free(matrix);
Цитата: Andrew199170
Числовые значения элементов матрицы хранятся и читаются из текстового файла. Исходная матрица и результаты должны быть выведены на экран в удобном для прочтения виде.
В файле данных записан размер матрицы - число строк и число столбцов, затем элементы матрицы.
Код:
#include <fstream.h>
#include <iostream.h>
#include <iomanip.h>
const int MAX=100;
// функция readdata читает данные из файла и выводит их на экран
bool readdata(char* name, int A[MAX][MAX], int& m , int& n)
// m - число строк, n - число столбцов
{
int i, j;
ifstream f(name);
if (!f)
{
cout << "Error: file not found" <<endl;
return false;
}
f >> m;
f >> n;
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
f >> A[j];
cout << " " << setw(4) << A[j];
}
cout << endl;
}
f.close();
return true;
}
int main()
{
int A[MAX][MAX]; // матрица
int m, n; // m - число строк, n - число столбцов
readdata( "data5.txt", A, m, n);
// читаем данные из файла и выводим их на экран
/*
Перед тем, как запустить программу,
в файл записываем данные в следующем виде
В первой строке число строк, число столбцов
Дальше сама матрица
Пример
3 4
11 12 13 14
22 25 27 28
33 12 9 4
*/
return 0;
}
#include <iostream.h>
#include <iomanip.h>
const int MAX=100;
// функция readdata читает данные из файла и выводит их на экран
bool readdata(char* name, int A[MAX][MAX], int& m , int& n)
// m - число строк, n - число столбцов
{
int i, j;
ifstream f(name);
if (!f)
{
cout << "Error: file not found" <<endl;
return false;
}
f >> m;
f >> n;
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
f >> A[j];
cout << " " << setw(4) << A[j];
}
cout << endl;
}
f.close();
return true;
}
int main()
{
int A[MAX][MAX]; // матрица
int m, n; // m - число строк, n - число столбцов
readdata( "data5.txt", A, m, n);
// читаем данные из файла и выводим их на экран
/*
Перед тем, как запустить программу,
в файл записываем данные в следующем виде
В первой строке число строк, число столбцов
Дальше сама матрица
Пример
3 4
11 12 13 14
22 25 27 28
33 12 9 4
*/
return 0;
}
Спасибо всем огромное за помощь!)) :)