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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2009, 18:25   #1
Pasha9
 
Регистрация: 15.03.2009
Сообщений: 3
По умолчанию Матрица СИ ++

Определить количество строк матрицы, в которой элементы расположены в порядке возрастания. вот что у меня вышло, точнее не вышло:
void kolstr(int m, int n,int stroka, int a[n][m])
{
for (int i=0;i<m;i++)
{
for (int j=0;j<n;j++)
{
if (a[i][j]<a[i][j+1])
{stroka++;}
}
if (stroka>=n-1)
{stroka++;
stroka=0;
}
Заранее спасибо за помощь!
Pasha9 вне форума Ответить с цитированием
Старый 15.03.2009, 18:55   #2
XeN0N
Форумчанин
 
Аватар для XeN0N
 
Регистрация: 18.01.2009
Сообщений: 118
По умолчанию

Код:
void kolstr(int m, int n,int stroka, int a[n][m])
Так вроде нельзя, лучше использовать указатель
XeN0N вне форума Ответить с цитированием
Старый 15.03.2009, 21:06   #3
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Цитата:
int a[n][m])
надо писать
Код:
int *a)
то есть передавать адрес первого элемента - в языке C/C++ массивы передаются только по адресу

и в функцию массив передается как одномерный, поэтому пересчитывай коэффициенты. то есть вместо вот этого
Код:
a[i][j]<a[i][j+1]
пиши
Код:
a[i*col+j]<a[i*col+j+1]
, где col - количество столбцов массива 'a'; соответственно col тоже надо передать как параметр из вызывающей функции

Последний раз редактировалось capta1n; 16.03.2009 в 01:41.
capta1n вне форума Ответить с цитированием
Старый 15.03.2009, 22:03   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вообще-то правильно вот так: *int a)

И лучше сделать, чтобы функция возвращала количество строк.
А вот это:
Код:
if (stroka>=n-1)
{stroka++;
stroka=0;
Вообще не могу понять.

Функция и пример программы:
Код:
#include <iostream>
#include <conio.h>

using namespace std;

int kolstr(int m, int n, int *a)
{
 int i,j,k=0;
 for(i=0;i<m;i++)
   for(j=1;j<n;j++)
   {
    if(a[i*m+j]<a[i*m+j-1]) break;
    if(j==n-1) k++;
   }
 return k;
}

int main()
{
const int m=5,n=3;
int mas[m][n],i,j;
for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
   {
    cout<<"mas["<<i<<"]["<<j<<"]= ";
    cin>>mas[i][j];
   }
 }
cout<<"Kolichestvo strok v poryadke vozrastaniya: "<<kolstr(m,n,&mas[0][0]);

getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 15.03.2009, 22:40   #5
Pasha9
 
Регистрация: 15.03.2009
Сообщений: 3
По умолчанию

Спасибо большое за помощь!!!
Pasha9 вне форума Ответить с цитированием
Старый 16.03.2009, 01:41   #6
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

да - ошибся с между фактическими и формальными параметрами да при вызове функции писать надо &a[0][0], а в списке формальных надо писать int *a
capta1n вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица Chief Помощь студентам 1 30.01.2009 10:57
Матрица (Си) ManInBlack Помощь студентам 3 13.01.2009 13:43
матрица {C++} Влдислаав3911 Помощь студентам 1 28.05.2008 02:36
Матрица Cartman18 Помощь студентам 4 13.12.2007 19:49
Матрица Lima Паскаль, Turbo Pascal, PascalABC.NET 3 08.12.2006 01:01