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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2014, 22:33   #1
Serg017
 
Регистрация: 28.04.2014
Сообщений: 8
По умолчанию Максимальный и минимальный элементы массива. Программирование пользовательских функций.

Добрый вечер, форумчане.
Задание прикреплю в виде картинки. Собственно интересует вопрос, как с помощью функции найти максимальный и минимальный элементы массива. Именно с помощью функции и никак иначе
Вот тело программы, мб и есть косячки, но это написано на скорую руку.
Код:
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
void cm(int A[], int a)
{
int i;
for (i=0; i<a; i++)
A[i]=i+rand();
}
void pm(int A[], int a)
{
int i;
for (i=0; i<a; i++)
printf ("%d", A[i]);
printf ("\n");
}
void main ()
{
int a[16], b[26];
printf("A[i]=");
cm(a,16);
pm(a,16);
printf("B[i]=");
cm(b,26); 
pm(b,26);
}
Изображения
Тип файла: png Untitled.png (7.9 Кб, 71 просмотров)

Последний раз редактировалось Stilet; 29.04.2014 в 08:00.
Serg017 вне форума Ответить с цитированием
Старый 28.04.2014, 23:29   #2
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Передаёте в функцию массив. Внутри функции объявляете переменную min = 999. Делаете цикл, в котором сравниваете min с текущим элементом массива. Если он меньше чем min - записываете его значение в min.
Возвращаете результат.

С максимальным - примерно так же.
ATL вне форума Ответить с цитированием
Старый 29.04.2014, 08:58   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от ATL
Внутри функции объявляете переменную min = 999
категорически не рекомендую.
Гораздно удобнее и надежнее брать в качестве минимума (и максимума, кстати, тоже) первый элемент массива:
Код:
min = A[0];
max = A[0];
for (i=0; i<a; i++) 
{
  if(A[i]<min) min = A[i];
  if(A[i]>max) max = A[i];
}
...
ну, как то так...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.04.2014, 19:32   #4
Serg017
 
Регистрация: 28.04.2014
Сообщений: 8
По умолчанию

Так?
Код:
void (int A[0], int a)
{
int i, max, min;
min = A[0];
max = A[0];
for (i=0; i<a; i++) 
{
  if(A[i]<min) min = A[i];
  if(A[i]>max) max = A[i];
  printf (" min \n", min);
printf (" max \n", max);
}
}

Последний раз редактировалось Serg017; 29.04.2014 в 19:34.
Serg017 вне форума Ответить с цитированием
Старый 29.04.2014, 21:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
void (int A[0], int a)
{
int i, max, min;
for (i=0; i<a; i++) 
{
  if(A[i]<min || i=0) min = A[i];
  if(A[i]>max || i=0) max = A[i];
  printf (" min \n", min);
printf (" max \n", max);
}
}
Или
Код:
void (int A[0], int a)
{
int i, max, min;
min = A[0];
max = A[0];
for (i=1; i<a; i++) 
{
  if(A[i]<min) min = A[i];
  if(A[i]>max) max = A[i];
  printf (" min \n", min);
printf (" max \n", max);
}
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2014, 22:26   #6
Serg017
 
Регистрация: 28.04.2014
Сообщений: 8
По умолчанию

Спасибо)
Потом также для массива "B", а дальше что делать, не подскажете?
Serg017 вне форума Ответить с цитированием
Старый 29.04.2014, 22:32   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

только я бы printf() вынес за цикл for

да. и ещё. Вам же не просто надо найти минимум и максимум!
Вам же нужно найти элементы, которые расположены МЕЖДУ этими величинами.
Следовательно, Вам нужно искать не сами значения, а их ИНДЕКСЫ.
например, так:
Код:
int i, imax, imin;
imin = 0;
imax = 0;
for (i=1; i<a; i++) 
{
  if(A[i]<A[imin]) imin = i;
  if(A[i]>A[imax]) imax = i;
}
вот теперь все элементы, которые расположены между номерами imax и imin (или imin и imax) можно перебрасывать в новый массив, как того требует задание.

Последний раз редактировалось Serge_Bliznykov; 29.04.2014 в 22:37.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.04.2014, 22:37   #8
Serg017
 
Регистрация: 28.04.2014
Сообщений: 8
По умолчанию

Логично, а то каждому элементу будет присваиваться текст
Serg017 вне форума Ответить с цитированием
Старый 29.04.2014, 22:45   #9
Serg017
 
Регистрация: 28.04.2014
Сообщений: 8
По умолчанию

Serge_Bliznykov, т.е. максимальные и минимальные элементы нам здесь вообще не нужны и можно сразу найти индексы?
Serg017 вне форума Ответить с цитированием
Старый 29.04.2014, 22:56   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Serg017 Посмотреть сообщение
Serge_Bliznykov, т.е. максимальные и минимальные элементы нам здесь вообще не нужны и можно сразу найти индексы?
не можно, а НУЖНО!

см. код в пост #7
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти минимальный и максимальный элементы массива Х и поменять их в массиве местами. Элементы массива вычисляются по формуле Xi=(( Милашечка Помощь студентам 0 26.05.2013 13:01
Найти максимальный и минимальный элементы списка и поменять их местами Slavik3 Общие вопросы C/C++ 4 15.10.2012 09:41
[C++] Переставить местами первый минимальный и первый максимальный элементы массива Aaaaaa111 Помощь студентам 2 27.02.2012 11:56