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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2008, 21:00   #1
GingeR
Новичок
Джуниор
 
Регистрация: 12.09.2008
Сообщений: 2
Восклицание Одолели матрицы!

Помогите пожалуйста! =(
Никак не получается реализовать для класса матриц функцию поиска. Возвращаемое значение должно быть int, а вернуть нужно номер элемента. Матрица представлена в виде массива.
Примерно вот такой код получается:
int Matrix:: find(double z) const
{
double temp=0;
for(int i=0;i<str;i++)
for(int j=0;j<eluse;j++)
if((m1+i*elstr+j)==z)
temp=m1+i*elstr+j;
return temp;
}
Я целуюсь лучше, чем готовлю! ;)
GingeR вне форума Ответить с цитированием
Старый 18.09.2008, 04:40   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от GingeR Посмотреть сообщение
Помогите пожалуйста! =(
Никак не получается реализовать для класса матриц функцию поиска. Возвращаемое значение должно быть int, а вернуть нужно номер элемента. Матрица представлена в виде массива.
Примерно вот такой код получается:
int Matrix:: find(double z) const
{
double temp=0;
for(int i=0;i<str;i++)
for(int j=0;j<eluse;j++)
if((m1+i*elstr+j)==z)
temp=m1+i*elstr+j;
return temp;
}
весь листинг программый скнинь, а то у нас телепаты в отпуске.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 18.09.2008, 10:06   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от GingeR Посмотреть сообщение
int Matrix:: find(double z) const
{
double temp=0;
for(int i=0;i<str;i++)
for(int j=0;j<eluse;j++)
if((m1+i*elstr+j)==z)
temp=m1+i*elstr+j;
return temp;
}
temp нужно инициализировать не как 0, а как -1, а то как вы определите что элемент не нашелся? ведь элемент матрицы[0][0] имеет индекс 0 и если не найдено ничего, тоже вернётся 0.
Может нужно писать: m1 + i*eluse+j ? а то судя по коду у вас количество столбцов eluse, а в формулу вычисления индекса подставляете elstr.
Вообще формула подсчета адреса элемента примерно такая: указатель_на_первый элемент_массива + номер_строки*количество_столбцов + номер_столбца.
только вам нужно вернуть не элемент, а его индекс, поэтому из строчки temp=m1+i*elstr+j нужно наверно удалить m1
И почему temp описан как double, а не int?
pu4koff вне форума Ответить с цитированием
Старый 18.09.2008, 10:19   #4
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
из строчки temp=m1+i*elstr+j нужно наверно удалить m1
знать бы че такое elstr

а вообще, ему надо вернуть номер елемента а не индекс, тогда:
temp=номер_строки*количество_элемен тов_встроке-1+номер_елемента_в_его_строке+1
вроде так...


предположим есть матрица 12(строк) на 8(столбцов) символов, мы нашли символ в 7 строке, в 4 элементе:

темп=12*6+4+1
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.

Последний раз редактировалось alexinspir; 18.09.2008 в 10:28.
alexinspir вне форума Ответить с цитированием
Старый 21.09.2008, 20:07   #5
GingeR
Новичок
Джуниор
 
Регистрация: 12.09.2008
Сообщений: 2
По умолчанию

Спасибо за помощь! =) Вот получившийся рабочий вариант функции (возвращает номер элемента в массиве)

int Matrix:: find(double z) const
{
for(int i=0;i<str;i++)
for(int j=0;j<eluse;j++)
if(*(m1+i*elstr+j)==z)
return (i*elstr+j+1);
return -1;
}
Я целуюсь лучше, чем готовлю! ;)
GingeR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрицы FatalX Помощь студентам 21 17.04.2009 22:50
матрицы chelsi Паскаль, Turbo Pascal, PascalABC.NET 13 25.04.2008 10:07
матрицы Ensoph Помощь студентам 1 24.10.2007 09:38