Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2011, 20:14   #1
Вечно грустная...
Пользователь
 
Аватар для Вечно грустная...
 
Регистрация: 04.02.2011
Сообщений: 34
Смущение Тут пример решения матрицы который содержит нули ниже главной диагонали; А мне нужно сделать наоборот выш

Код:
/Файл LAB2.H /
/*     Описание функций и внешних переменных файла LAB2.C     */
extern int L2_RESULT;   /* Глобальна переменна - флаг ошибки */
/***** Выделение памяти под матрицу */
int creat_matr ( int N );
/***** Чтение элемента матрицы по заданным координатам */
int read_matr ( int x, int y );
/***** Запись элемент в матрицу по заданным координатам */
int write_matr ( int x, int y, int value );
/***** Уничтожение матрицы */
int close_matr ( void );
 
/Файл LAB2.C /
/* В этом файле определены функции и переменные для обработки
   матрицы, заполненной нулями ниже главной диагонали          */
#include <alloc.h>
static int NN;                     
static int SIZE;                        
static int *m_addr=NULL;  
static int lin(int, int); 
static char ch_coord(int, int);
int L2_RESULT;
 

/*            Выделение памяти под сжатую матрицу        */
int creat_matr ( int N ) {
   /* N - размер матрицы */
   NN=N;
   SIZE=N*(N-1)/2+N;
   if ((m_addr=(int *)malloc(SIZE*sizeof(int))) == NULL )
      return L2_RESULT=-1;
   else
      return L2_RESULT=0;
/* Возвращает 0, если выделение прошло успешно, иначе -1 */
}

/*       Уничтожение матрицы (освобождение памяти)            */
int close_matr(void) {
   if ( m_addr!=NULL ) {
      free(m_addr);
      m_addr=NULL;
      return L2_RESULT=0;
      }
   else return L2_RESULT=-1;
/*  Возвращает 0, если освобождение пршло успешно, иначе - -1  */
}
/***********************************************************/
/*     Чтение элемента матрицы по заданным координатам     */
int read_matr(int x, int y) {
   /* x, y -координати (строка, столбец) */
   if ( ch_coord(x,y) ) return 0;
   /* Если координаты попадают в нулевой участок - возвращается
      0, иначе - применяется функция линеаризации */
   return (x > y) ? 0 : m_addr[lin(x,y)];
   /* Проверка успешности чтения - по переменной
      L2_RESULT:  0 - без ошибок, -1 - была ошибка */
}
 
/*************************************************************/
/*      Запись элемента матрицы по заданным координатам      */
int write_matr(int x, int y, int value) {
   /* x, y -координати, value - записываемое значение */
   if ( chcoord(x,y) ) return;
   /* Если координаты попадают в нулевой участок - записи нет, 
      иначе - применяется функция линеаризации */
   if ( x > y ) return 0;
   else return m_addr[lin(x,y)]=value;
   /* Проверка успешности записи - по L2_RESULT */
}
 
/************************************************************/
/*       Преобразование 2-мерних координат в линейную       */
/*                      (вариант 3)                         */
static int lin(int x, int y) {
   int n;
    n=NN-x;
   return SIZE-n*(n-1)/2-n+y-x;
}
 
/***************************************************************/
/*                  Проверка корректности обращения            */
static char ch_coord(int x, int y) {
   if ( ( m_addr==NULL ) ||
        ( x>SIZE ) || ( y>SIZE ) || ( x<0 ) || ( y<0 ) )
      /* Если матрица не размещена в памяти, или заданные
         координаты выходят за пределы матрицы */
       return L2_RESULT=-1;
    return L2_RESULT=0;
}
/*********************Конец файла LAB2.C ***********************/
 
/************************ Файл MAIN2.C **************************/
/* "Программа пользователя" */
#include "lab2.h"
main(){
 int R;    /* размерность */
 int i, j; /* номера строки и столбца */
 int m;    /* значения элемента */
 int op;   /* операция */
  clrscr();
  printf('Введите размерность матрицы >'); scanf("%d",R);
  /* создание матрицы */
  if ( creat_matr (R) ) {
     printf("Ошибка создания матрицы\n");
     exit(0);
     }
  /* заполнение матрицы */
  for ( m=j=0; j<R; j++)
     for ( i=о; i<R; i++)
           write_matr(i,j,++m);
   while(1) {
      /* вывод матрицы на экран */
      clrscr();
      for (j=0; j<R; j++) {
         for (i=0; i<R; i++)
            printf("%3d ",read_matr(i,j));
            printf("\n");
         }
      printf("0 - выход\n1 - чтение\n2 - запись\n>")
      scanf("%d",&op);
      switch(op) {
        case 0:
          if (close_matr()) printf("Ошибка при уничтожении\n");
          else printf("Матрица уничтожена\n");
          exit(0);
        case 1: case 2:
          printf("Введите номер строки >");
          scanf("%d",&j);
          printf("Введите номер столбца >");
          scanf("%d",&i);
          if (op==2) {
             printf("Введите значение элемента >");
             scanf("%d",&m);
             write_matr(j,i,m);
             if (L2_RESULT<0) pritnf("Ошибка записи\n");
             }
          else {
             m=read_matr(j,i);
             if (L2_RESULT<0) pritnf("Ошибка считывания\n");
             else printf("Считано: %d\n",m);
             }
          printf("Нажмите клавишу\n"); getch();
          break;
        }
      }
}
Помогите пожалуйста подскажите что и где нужно поменять?

From Stilet: Код оформляй спецтегом по кнопке #
Хочу жить... а не существовать...

Последний раз редактировалось Stilet; 05.02.2011 в 13:57.
Вечно грустная... вне форума Ответить с цитированием
Старый 04.02.2011, 21:04   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

о, мои глаза, оформите пожалуйста код
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 04.02.2011, 22:00   #3
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Вечно грустная... Посмотреть сообщение
Тут пример решения матрицы...
Нету такого термина "решение матрицы" в математике...
...
Самостоятельно поисправлять ошибки в этом самом "примере" для начала не пытались?..
Vago вне форума Ответить с цитированием
Старый 04.02.2011, 22:22   #4
Вечно грустная...
Пользователь
 
Аватар для Вечно грустная...
 
Регистрация: 04.02.2011
Сообщений: 34
Смущение

Вот постановка задачи:
Для разряженной матрицы целых чисел в соответствии с индивидуальным заданием создать модуль доступа к ней, у котором обеспечить экономию памяти при размещении данных.

Функция write_matr предназначена для записи элемента в матрицу. Прототип функции:
int write_matr(int x, int y, int value);
где x и y - координаты (строка и столбец), value - то значение, которое нужно записать. Функция возвращает значение параметра value, или 0 - если была попытка записи в нулевой участок. Если после выполнения функции значение переменной L2_RESULT -1, то это указывает на ошибку при обращении.

Выполнение функции подобно функции read_matr с тем отличием, что, если координаты указывают на ненулевой участок, то функция записывает value в массив m_addr.

Функция ch_coord предназначена для проверки корректности задания координат. Эта функция описана как static и поэтому может вызываться только из этого же модуля. Прототип функции:
static char ch_coord(int x, int y);
где x и y - координаты (строка и столбец). Функция возвращает 0, если координаты верные, -1 - если неверные. Соответственно, функция также устанавливает значение глобальной переменной L2_RESULT.

Функция lin предназначена для преобразования двумерных координат в индекс в одномерном массиве. Эта функция описана как static и поэтому может вызываться только из этого же модуля. Прототип функции:
static int lin(int x, int y);
где x и y - координаты (строка и столбец). Функция возвращает координату в массиве m_addr.
Хочу жить... а не существовать...
Вечно грустная... вне форума Ответить с цитированием
Старый 04.02.2011, 22:40   #5
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Ещё раз... Прежде чем лезть в логику... Попытаться оттранслировать программу хотя бы для того, чтобы самостоятельно исправить описки типа буквы "o" вместо цифры "0" или pritnf() вместо printf() не пытались?..
Vago вне форума Ответить с цитированием
Старый 04.02.2011, 23:01   #6
Вечно грустная...
Пользователь
 
Аватар для Вечно грустная...
 
Регистрация: 04.02.2011
Сообщений: 34
Смущение

Ааааа да я их исправляла я вам пример чисто с этого сайта скопировала http://khpi-iip.mipk.kharkiv.edu/lib...ab1/spl02.html а так у меня оно выходит=)
Хочу жить... а не существовать...
Вечно грустная... вне форума Ответить с цитированием
Старый 04.02.2011, 23:09   #7
Вечно грустная...
Пользователь
 
Аватар для Вечно грустная...
 
Регистрация: 04.02.2011
Сообщений: 34
По умолчанию

Еще извините меня пожалуйста если я неправильно выражаюсь или разъясняю свои доводы либо пользуюсь не теми терминами или допускаю грубую ошибку итд итп... Просто я как сказать чайник в таких делах=))))))))
Хочу жить... а не существовать...
Вечно грустная... вне форума Ответить с цитированием
Старый 04.02.2011, 23:36   #8
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Вечно грустная... Посмотреть сообщение
я вам пример чисто с этого сайта скопировала http://khpi-iip.mipk.kharkiv.edu/lib...ab1/spl02.html
Палкий привiт викладачам ХПI!..
...
"Мыло" своё в ЛС скиньте.
Vago вне форума Ответить с цитированием
Старый 04.02.2011, 23:48   #9
Вечно грустная...
Пользователь
 
Аватар для Вечно грустная...
 
Регистрация: 04.02.2011
Сообщений: 34
Смущение

Цитата:
Сообщение от Vago Посмотреть сообщение
Палкий привiт викладачам ХПI!..
...
"Мыло" своё в ЛС скиньте.
Хотите верьте хотите нет но я тут не вижу личку.
Хочу жить... а не существовать...
Вечно грустная... вне форума Ответить с цитированием
Старый 04.02.2011, 23:54   #10
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

vago собака inbox.ru
Vago вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в сглаженой матрице найти сумму модулей элементов расположенных ниже главной диагонали Sergeo_89 Паскаль, Turbo Pascal, PascalABC.NET 8 07.12.2010 00:02
Массив, нахождение макс элемента ниже главной диагонали L3zh1Y Помощь студентам 2 15.05.2010 13:36
Вычисление сумм элементов матрицы А размера n x n, лежащих выше, ниже и на главной диагонали Tomoa Microsoft Office Word 8 04.04.2010 20:18
Маx элемент ниже главной диагонали Отчаявшаяся Помощь студентам 2 16.11.2009 18:19
Найти сумму парных элементов матрицы v[4][4].Расположенных ниже главной диагонали. Black_Angel91 Помощь студентам 11 21.04.2009 20:51