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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2012, 17:53   #1
Prokill
 
Регистрация: 09.11.2011
Сообщений: 7
По умолчанию Седловая точка и кол-во отриц элементвов (с++)

помогите переделать , не всегда правильно выводит седловую точку и желательно что бы матрицу выводило на экран после ввода элементов
вот код
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;

int min_j(int *p, int x_sz){
   int *tmp = p;
   int i = 0;
   for(int x = 0; x < x_sz; x++){
       if(p[x] < *tmp){
           tmp = &p[x];
           i = x;
       }
   }
   return i;
}

int max_i(int *p, int x_sz, int y_sz){
   int *tmp = p;
   int j = 0;
   int d = 0;
   for(int y = 0; y < y_sz; y ++){
       if(p[d] > *tmp){
           tmp = &p[d];
           j = y;
       }
       d += x_sz;
   }
   return j;
}

void find_points(int *pMatrix, int I, int J){
   int i, j;	
   for(int y = 0; y < I; y++){
       j = min_j(&pMatrix[y * J + 0], J);
       i = max_i(&pMatrix[j], J, I);

       if(i == y){
          
           cout << "A(" << i << ", " << j <<") = " << pMatrix[i * J + j] <<endl;
       }
   }
}

int cnt_neg(int *pMatrix, int I, int J){
   int cnt = 0, tmp;
   bool success;
   for(int y = 0; y < I; y++){
       success = false;
       tmp = 0;
       for(int x = 0; x < J; x++){
           if(pMatrix[y * J + x] < 0) tmp++;
           else if(pMatrix[y * J + x] == 0) success = true;
       }
       if(success) cnt += tmp;
   }
   return cnt;
}

void main(){
   int I, J;
   cout << "Chislo strok: I = ";
   cin >> I;
   cout << "Chislo stolbcov: J = ";
   cin >> J;

   int *m = new int [I * J];

   for(int y = 0; y < I; y++){
       cout << "Vvedite " << y+1 << " stroku matrici: " << endl;
       for(int x = 0; x < J; x++){
           cin >> m[y * J + x];
       }
   }

   cout << endl;

   //1
   int cnt = cnt_neg(m, I, J);
   cout << "Kolichestvo otric elementov: " << cnt << endl << endl;

   //2
   find_points(m, I, J);
}

Последний раз редактировалось Prokill; 05.01.2012 в 18:02.
Prokill вне форума Ответить с цитированием
Старый 05.01.2012, 17:59   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

оформи код, пожалуйста.
в таком виде читать, а тем более, разбирать вряд ли найдутся желающие.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 05.01.2012, 18:03   #3
Prokill
 
Регистрация: 09.11.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
оформи код, пожалуйста.
в таком виде читать, а тем более, разбирать вряд ли найдутся желающие.
подправил)
Prokill вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Три подряд отриц. елемента. паскаль Wild_klas Помощь студентам 2 16.12.2010 22:42
седловая точка tanek Помощь студентам 7 02.10.2009 02:45
Помогите найти строку с наибольшим кол-вом отриц. эл-ов Danil21 Общие вопросы C/C++ 1 21.06.2009 11:54