Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите разобраться с матрицами на С

52K
11 декабря 2009 года
Andrew199170
8 / / 11.12.2009
2. На основе счетной циклической алгоритмической структуры с требуемым уровнем вложенности составить программу для ЭВМ, позволяющую найти значения величин, определяемых пунктами (a), (b), (c) вариантов задания для матрицы, включающей m строк и n столбцов. Числовые значения элементов матрицы хранятся и читаются из текстового файла. Исходная матрица и результаты должны быть выведены на экран в удобном для прочтения виде.
Задание:
m = 5, n = 5. Найти: (a) максимальный элемент главной диагонали; (b) произведение и число положительных элементов выше главной диагонали; (c) сумму отрицательных элементов.
247
12 декабря 2009 года
wanja
1.2K / / 03.02.2003
a)
 
Код:
max=a[0][0];
for (int i=0;i<5;i++)
   if (a>max)
      max=a;
52K
12 декабря 2009 года
Andrew199170
8 / / 11.12.2009
wanja, ,благодарю...по возможности объясните как реализуются вторые два вопроса..))
842
12 декабря 2009 года
sigmov
301 / / 16.09.2008
(б)
 
Код:
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


(c)
 
Код:
negsum = 0;
for i=1:n
  for j=1:m
    if(M[i,j]<0) then negsum+=M[i,j]; endif
  endfor
endfor
52K
12 декабря 2009 года
Andrew199170
8 / / 11.12.2009
sigmov, спасибо огромное...у меня проблемы с синтаксисом на С...если можно помогите собрать это в единый код...какие библиотеки использовать и объявление соответствующих переменных...:)
842
12 декабря 2009 года
sigmov
301 / / 16.09.2008
Цитата: Andrew199170
sigmov, спасибо огромное...у меня проблемы с синтаксисом на С...если можно помогите собрать это в единый код...какие библиотеки использовать и объявление соответствующих переменных...:)



Что сказать - учите С!

Вам еще считать матрицу из файла считать нужно!

47K
12 декабря 2009 года
Cka3o4HuK
31 / / 21.10.2009
Если размер матрицы, загружаемой из файла известен, то можно сделать что-то типа такого
Код:
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;
}

Тогда в функции main() нужно будет написать так:
 
Код:
int m = ?, n= ?, **matrix;
char fname[] = "???";
matrix = txt_load(fname, m,n);

И вместо знаков вопроса подставить свои значения m и n, а также имя файла, из которого нужно прочитать матрицу. Наверняка есть более простые способы это сделать, но это первое что пришло в голову.

P.S. и не забудьте в конце программы очистить память
 
Код:
for(int i=0; matrix; i++)
        free(matrix);
    free(matrix);
41K
12 декабря 2009 года
Alex57
44 / / 22.02.2009
Цитата: 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;

}
52K
12 декабря 2009 года
Andrew199170
8 / / 11.12.2009
Спасибо всем огромное за помощь!)) :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог