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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2011, 07:23   #1
inc
Пользователь
 
Аватар для inc
 
Регистрация: 23.05.2011
Сообщений: 14
По умолчанию Дана вещественная прямоугольная матрица порядка n´m (n = 8, m = 5)

Помогите решить задачу

Дана вещественная прямоугольная матрица порядка n´m (n = 8, m = 5). Написать две функции, определяющие:
1. количество элементов массива, лежащих в диапазоне от А до В;
2. сумму модулей элементов массива, расположенных после первого отрицательного элемента.


консольная/с++

вот первая часть только недоделанная ,не знаю что не так

Код:
#include <iostream>
#include <conio.h>

#define N 8
#define M 5

typedef int ARRAY[N][M];

int Diapazon (ARRAY &m);
//int Sum (ARRAY &m);

using namespace std;

int main(void)
{
    ARRAY m =
    {
        { 1, 2, 3, 4, 1 },
        { 0, 2, 3, 0, 2 },
        { 1, 2, 3, 4, 3 },
        { 1, 2, 0, 4, 0 },
        { 1, 2, 3, 4, 4 },
        { 1, 0, 3, 4, 1 },
        { 1, 2, 3, 4, 2 },
        { 0, 2, 3, 0, 1 }
    };

    int d = Diapazon (m);
    cout << "Diapazon = " << d << endl;


  // Завершение работы программы
  getch ();
  return 0;
}


int Diapazon (ARRAY &m)
{
  int n = 0;
  int A;
  int B;
  cout << "A= ";
  cin >> A;
  cout << "B= ";
  cin >> B;
  for (int i = 0; i < N; i++) // цикл по всем строкам
  {
    for (int j = 0; j < M; j++) // цикл по элементам строки
    {
      if (n > A && n < B)
      {
        n++;

      }
    }

  }
  return n;
}
inc вне форума Ответить с цитированием
Старый 23.05.2011, 16:35   #2
inc
Пользователь
 
Аватар для inc
 
Регистрация: 23.05.2011
Сообщений: 14
По умолчанию

пожалуйста помогите !
inc вне форума Ответить с цитированием
Старый 23.05.2011, 16:47   #3
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
1. Си не знаю, но по моему у Вас
Код:
if (n > A && n < B)
здесь проверяется некий счётчик "количество элементов массива, лежащих в диапазоне от А до В", а не сами элементы массива.
2. И здесь же в цикле Вы можете подсчитать "сумму модулей элементов массива, расположенных после первого отрицательного элемента" обнаружив первый отрицательный элемент и установив флаг того, что теперь надо считать. Только определитесь по строкам Вам надо проходиться или по колонкам.
До свидания

Последний раз редактировалось OlegVE; 23.05.2011 в 16:57.
OlegVE вне форума Ответить с цитированием
Старый 23.05.2011, 17:14   #4
inc
Пользователь
 
Аватар для inc
 
Регистрация: 23.05.2011
Сообщений: 14
По умолчанию

а можно поподробней или пример какой нибудь спасибо
inc вне форума Ответить с цитированием
Старый 23.05.2011, 17:22   #5
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Цитата:
1. Си не знаю...
Ждите ответа. Удачи.
OlegVE вне форума Ответить с цитированием
Старый 23.05.2011, 18:19   #6
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Код:

#include <iostream>
#include <conio.h>

#define N 8
#define M 5

typedef int ARRAY[N][M];

int Diapazon (ARRAY &m);
int Sum (ARRAY &m);

using namespace std;

int main(void)
{
    ARRAY m =
    {
        { 1, 2, 3, 4, 1 },
        { 0, 2, 3, 0, 2 },
        { 1, 2, 3, 4, 3 },
        { 1, 2, 0, 4, 0 },
        { 1, 2, 3, 4, 4 },
        { 1, 0, 3, 4, 1 },
        { 1, 2, 3, 4, 2 },
        { 0, -2, -3, 0, 1 }
    };

    int d = Diapazon (m);
    cout << "Diapazon = " << d << endl;
	d=Sum (m);
    cout << "\nSum = " << d << endl;



  // Завершение работы программы
  getch ();
  return 0;
}


int Diapazon (ARRAY &m)
{
  int n = 0;
  int A;
  int B;
  cout << "A= ";
  cin >> A;
  cout << "B= ";
  cin >> B;
  for (int i = 0; i < N; i++) // цикл по всем строкам
  {
    for (int j = 0; j < M; j++) // цикл по элементам строки
    {
	int t=m[i][j];
      if (t > A && t < B)
      {
        n++;
      }
    }

  }
  return n;
}

int Sum (ARRAY &m)
{
int n =0;
int t;
bool x = false;
  for (int i = 0; i < N; i++) // цикл по всем строкам
  {
    for (int j = 0; j < M; j++) // цикл по элементам строки
    {
	t = m[i][j];
	if (x==true)
	{
		if (t<0)
		{
		t=-t; 
		}
		n+=t;	
	}
    if (t  < 0)
		{
		x = true;
		}
    }
  }
  return n;
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 23.05.2011, 18:24   #7
alex_8
Пользователь
 
Регистрация: 18.10.2009
Сообщений: 30
По умолчанию

Код:
int Diapazon (ARRAY &m)
{
	int n = 0;
	int A1, A2;
	int B1, B2;
	printf("Введите начало диапазона строка, столбец: ");
	scanf("%i %i", &A1, &A2);
	printf("Введите конец диапазона строка, столбец:  ");
	scanf("%i %i", &B1, &B2);
	if ((A1 <= N)&&(A2 <= M)&&(B1 <= N)&&(B2 <= M)&&(A1 <= B1))
	{
		A2 = M - A2;
		B2 = M - B2;
		n = ((B1-A1)*M)+A2-B2;
	}
	return n;
}
ICQ 422605533
alex_8 вне форума Ответить с цитированием
Старый 23.05.2011, 19:45   #8
inc
Пользователь
 
Аватар для inc
 
Регистрация: 23.05.2011
Сообщений: 14
По умолчанию

спасибо огромное вам !
inc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дана прямоугольная матрица... Avvakymova Паскаль, Turbo Pascal, PascalABC.NET 2 08.05.2011 12:55
дана вещественная матрица размером N*N. вычислить произведение отрицательных элементов, находящихся над и IRINOK Помощь студентам 6 14.12.2010 22:44
Дана целочисленная прямоугольная матрица. Lollipo Общие вопросы C/C++ 1 12.10.2010 10:52
дана целочисленная прямоугольная матрица Jet-Tea Общие вопросы C/C++ 9 02.06.2010 16:41
Дана целочисленная прямоугольная матрица... gregorio Помощь студентам 1 22.04.2009 20:27