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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2013, 23:48   #1
novopashinmm
 
Регистрация: 27.06.2013
Сообщений: 7
Радость Найти max

Есть пример программы которая находит max надо ее переделать так, чтобы еще найти номер max элемента в массиве.
Код:
#include "stdafx.h"
#include "stdio.h"
int maxi (int *, int);
int main()
{
	int dig [10]={5,3,2,4,6,7,11,17,0,13};
	int m,k;
	m=maxi(&dig[0],10);	
	printf ("%d %d\n", m);
	return 0;
}
int maxi (int *a, int n){
	int i, max;
	 max=*a;
	 for (i=1; i<n; i++)
		 if (*(a+i)>max)
			 max=*(a+i);	         
	 return max;
}


Думаю что нужно написать еще одну функцию nomermaxi, которая будет почти такая же как maxi только возвращает номер максимального элемента.
Нужно доработать эту функцию.

#include "stdafx.h"
#include "stdio.h"
int maxi (int *, int);
int nomermaxi (int *, int);
int main()
{
	int dig [10]={5,3,2,4,6,7,11,17,0,13};
	int m,k;
	m=maxi(&dig[0],10);
	k=nomermaxi(&dig[0],10);
	printf ("%d %d\n", m, k);
	return 0;
}
int maxi (int *a, int n){
	int i, max, k;
	 max=*a;
	 for (i=1; i<n; i++)
		 if (*(a+i)>max)
			 max=*(a+i);	         
	 return max;
}

int nomermaxi (int *a, int n){
	int i, max, k;
	 max=*a; k=0;
	 for (i=1; i<n; i++)
		 if (*(a+i)>max)
			 max=*(a+i);
	         k=k+1; 
             
	 return k;
}

Последний раз редактировалось Stilet; 05.07.2013 в 08:17.
novopashinmm вне форума Ответить с цитированием
Старый 05.07.2013, 01:07   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Код:
typedef struct _SEARCH_STRCT{
	int max;
	int pos;
}SEARCH_STRCT, *PSEARCH_STRCT;


SEARCH_STRCT maxi (int *a, int n){
	SEARCH_STRCT ret;	
	ret.max=*a;
	ret.pos = 1;

	for (int i=1; i<n; i++)
		if (*(a+i)>ret.max)	{
			ret.max=*(a+i);
			ret.pos = i+1;
		}
	return ret;
}
Так лучше.
Smogg вне форума Ответить с цитированием
Старый 05.07.2013, 08:26   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а не проще ли не искать максимум, а искать (и возвращать) только номер (точнее индекс) максимального элемента.
По номеру очень легко получить величину из массива

что-то типа:
Код:
int nomermaxi (int *a, int n){
  int k;
  k=0;
  for (i=1; i<n; i++)
      if (*(a+i)>*(a+k))
           k=i; 
  return k;
}
использование:
Код:
int main()
{
  int dig [10]={5,3,2,4,6,7,11,17,0,13};
  int maxk;
  maxk = nomermaxi(&dig[0],10);
  printf ("max = %d index = %d\n", dig[maxk], maxk);
  return 0;
}
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти max и min в стеке shilovec5377 Общие вопросы C/C++ 3 25.06.2013 09:46
Найти Max число, используя функцию. Roman1295 Паскаль, Turbo Pascal, PascalABC.NET 6 20.12.2012 18:43
двумерный массив, найти max min Koksa C# (си шарп) 1 10.10.2011 15:05
найти min max в массиве lubafffka Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 08.06.2011 15:48
Где найти литературу по Max Script? Stilet Свободное общение 0 31.07.2008 13:37