Closed TopicStart new topicStart Poll

Страницы: (1) 1 
Flashick
дата: [ i ]
  • *
  • Любитель
  • Репутация: 12
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Эх..практика по проге у меня...жуть....
Помогите пжалста...я совсем запутался...

Даны: целочисленные матрица R [ 0:n-1;0:m-1 ] и массив A [ 0:k-1 ]. В каждом столбце матрицы R переставить местами максимальный и минимальный элементы, если они оба присутствуют в массиве A.

Язык - Си. Задачка несложная...но ее нужно сделать на указателях и на функциях..
tetro
дата: [ i ]
  • *
  • Специалист
  • Репутация: 15
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (Flashick @ 24.12.2006 - время: 13:40)
Эх..практика по проге у меня...жуть....
Помогите пжалста...я совсем запутался...

Даны: целочисленные матрица R [ 0:n-1;0:m-1 ] и массив A [ 0:k-1 ]. В каждом столбце матрицы R переставить местами максимальный и минимальный элементы, если они оба присутствуют в массиве A.

Язык - Си. Задачка несложная...но ее нужно сделать на указателях и на функциях..

Матрица естественно хранится как двух-мерный массив и внутрений индех вы считаете столбцом или строкой?
Вас устроит тривиальный вариант:
Считаем внутренний индекс столбцом? И 2 прохода по нему R плюс 2 прохода по А на строку?

Пишем функции (если на честном С то надо убрать сонст и вынести об'явы наверх):


CODE
double *FindMin(double *R, const double *R_end) {
if(R_end < R) return NULL;
if(R != NULL) return NULL;
double *pMin = R;
for(double *p=R+1; p<R_end; p++){
if(*p < *pMin) pMin = p;
}
return pMin;
}


Аналогично
CODE
double *FindMax(double *R, const double *R_end)


Далее пишем
CODE
const double *FindValFirst(const double *A, const double *A_end, double Val){
if(A_end < A) return NULL;
if(A != NULL) return NULL;
for(double *p=A; p<R_end; p++){
if(*p == Val) return p;
}
return NULL;
}

Это можно было и эффективнее реализовать вначале сортирнув А а потом за лог искать это даст м*н*лог к а не м*н*к

А далее клеим все вместе.
P.S. Я тут на double написал, а надо int. Да и равно на double не слишком хорошо смотрится (хотя здесь можно). Но 2 часа ночи - я спать пошел....

Это сообщение отредактировал tetro - 25-12-2006 - 03:27
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)

Страницы: (1) 1

Closed TopicStart new topicStart Poll0


Рекомендуем почитать также топики:

phpBB и модерирование

Гаснет экран

Проблема usb flash drive

Какой предельный размер отправляемого письма

ПОИСКОВЫЙ РАЗДЕЛ - 2



>