1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 36
1

одномерне массивы

06.12.2011, 19:28. Показов 1981. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти максимальный отрицательный элемент массива и подсчитать количество таких элементов.
Подскажите с циклом для функции поиска максимального отрицательного элемента.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2011, 19:28
Ответы с готовыми решениями:

Даны массивы A(8), F(8),Q(8). Сформировать массивы С(8), каждый элемент которого вычисляется по формуле
uses crt; type mas=array of integer; var A,F,Q,C:mas; i,s:integer; begin clrscr; ...

Даны массивы а и b. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi= -ai
Даны массивы а и b, состоящие из n-элементов каждый. Получить новые массивы a и b, элементы...

Упорядочить массивы по по убыванию, потом соединить массивы в один упорядоченный массив
Начала писать, запуталась Даны два одномерных массива состоящие из 10 целых чисел. Упорядочить...

Табулирование функции и поиск данных. Одномерные массивы. Двумерные массивы
Вычислить сумму первых четырех отрицательных элементов. В соответствии с п. 5.16 правил...

31
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
06.12.2011, 19:34 2
C++
1
2
3
4
int max = -100000;
for ( int index = 0; index < n; index++ )
    if ( arr[ index ] > max && arr[ index ] < 0 )
        max = arr[ index ];
Это если есть хотя бы один отрицательный.
1
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.12.2011, 19:40 3
Цитата Сообщение от Иван Аганин Посмотреть сообщение
и подсчитать количество таких элементов.
C++
1
if (arr[i] < 0) count++;
1
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 36
06.12.2011, 19:45  [ТС] 4
ну вот, что-то похожее, только с ошибками, помогите исправить:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int max_otriz(int a);
int all(int k);
int main()
{float x, a;
 int t;
 printf("\n Enter massiv = ");
 a = max_otriz(a);
 t = all(k);
 printf("\n MAX =",&a,"\n ALL=",&t);
}
int max_otriz(int a[i]);
int max = -100000;
for ( int index = 0; index < n; index++ )
 {
    if ( arr[ index ] > max && arr[ index ] < 0 )
        max = arr[ index ];
 }
 int all(int k);
 {
 if (arr[i] < 0) k++;
 }
Добавлено через 31 секунду
хотя, я наверно сам понял

Добавлено через 47 секунд
но все таки напишите свой вариант для надежности
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.12.2011, 20:44 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(){
  int arr[] = {5,66,-9,2,-66,-8,14,56,-15,-5,25,-20,-80};
  int i, count = 0, min = 0;
 
  for ( i = 0;  i < sizeof(arr)/sizeof(arr[0]) && arr[i] >= 0; i++ ){;} // ищем индекс первого отрицательного элемента
 
  for ( i++, min = arr[i], i++, count++; i < sizeof(arr)/sizeof(arr[0]); i++ ){
    if ( arr[i] < 0 ){ 
      count++;
      if ( arr[i] > min ){ min = arr[i]; }
    }
  }
  cout<<"result = "<<min<<"."<<endl<<"count = "<<count<<".";
  return 0;
}
1
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 36
06.12.2011, 20:46  [ТС] 6
а 13 строка, это что?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
06.12.2011, 20:47 7
Цитата Сообщение от Иван Аганин Посмотреть сообщение
int max = -100000;
-100000 - магическая константа. Так лучше не делать.
Что будет, если максимальное отрицательное число меньше -100000?

Добавлено через 33 секунды
Цитата Сообщение от Иван Аганин Посмотреть сообщение
а 13 строка, это что?
Это вывод на языке С++.
Если вы пишите на С, то так делать нельзя.
1
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 36
06.12.2011, 20:50  [ТС] 8
мы пишем на си

Добавлено через 1 минуту
вас не затруднит этот код на функции разбить?
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.12.2011, 20:56 9
Цитата Сообщение от Иван Аганин Посмотреть сообщение
мы пишем на си
тогда так :
C++
1
printf ("result = %d.\ncount = %d.", min, count );
Цитата Сообщение от Иван Аганин Посмотреть сообщение
вас не затруднит этот код на функции разбить?
куда его еще дробить-то?
0
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 36
06.12.2011, 21:42  [ТС] 10
просто у нас препод не принимает без функций

Добавлено через 38 минут
что такое sizeof?
0
Фрилансер
Эксперт С++
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
06.12.2011, 21:51 11
Цитата Сообщение от Mиxaил Посмотреть сообщение
int max = -100000;
for ( int index = 0; index < n; index++ )
if ( arr[ index ] > max && arr[ index ] < 0 )
max = arr[ index ];
Бред. Начнем с того что диапазон int до -32767

C++
1
2
3
4
5
6
for(int i = n; i > 0; i--) //находим 1й отрицательный
   if(arr[i]<0)
     max=i;
for(int i = max; i < n; i++)
  if(arr[i]<0 && arr[i]>arr[max])
    max=i;
0
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 36
06.12.2011, 21:55  [ТС] 12
и все??
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
06.12.2011, 22:11 13
Сама функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int fun( const int *arr, int n )
{
int max = 0;
for(int i = n; i > 0; i--) //находим 1й отрицательный
   if(arr[i]<0)
     max=i;
for(int i = max; i < n; i++)
  if(arr[i]<0 && arr[i]>arr[max])
    max=i;
// подсчитаем количество максимальных элементов
int count = 0;
for(int i = 0; i < n; ++i) // можно начать не с 0, а с max.
      if( arr[i] == arr[max] )
            ++count;
return count;
}
Вызывать функцию так:
C++
1
int count = fun( arr, size ); // находим количество максимальных отрицательных чисел
Добавлено через 3 минуты
Вам надо, чтобы еще функция находила макс. отриц. элемент?
0
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 36
06.12.2011, 22:13  [ТС] 14
Цитата Сообщение от Chelioss Посмотреть сообщение
Код C++1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int fun( const int *arr, int n )
{
int max = 0;
for(int i = n; i > 0; i--) //находим 1й отрицательный
if(arr[i]<0)
max=i;
for(int i = max; i < n; i++)
if(arr[i]<0 && arr[i]>arr[max])
max=i;
// подсчитаем количество максимальных элементов
int count = 0;
for(int i = 0; i < n; ++i) // можно начать не с 0, а с max.
if( arr[i] == arr[max] )
++count;
return count;
}
это код функции?

Добавлено через 2 минуты
Цитата Сообщение от Chelioss Посмотреть сообщение
Вам надо, чтобы еще функция находила макс. отриц. элемент?
да, нужно чтобы находила отрицательный элемент, а вторая функция считала сколько отрицательных всего
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
06.12.2011, 22:15 15
Функция находит максим. отриц. элемент.
C++
1
2
3
4
5
6
7
8
9
10
11
int fun( const int *arr, int n )
{
int max = 0;
for(int i = n; i > 0; i--) //находим 1й отрицательный
   if(arr[i]<0)
     max=i;
for(int i = max; i < n; i++)
  if(arr[i]<0 && arr[i]>arr[max])
    max=i;
return arr[max];
}
Функция находит количество:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int fun2( const int *arr, int n )
{
int max = 0;
for(int i = n; i > 0; i--) //находим 1й отрицательный
   if(arr[i]<0)
     max=i;
for(int i = max; i < n; i++)
  if(arr[i]<0 && arr[i]>arr[max])
    max=i;
// подсчитаем количество максимальных элементов
int count = 0;
for(int i = 0; i < n; ++i) // можно начать не с 0, а с max.
      if( arr[i] == arr[max] )
            ++count;
return count;
}
0
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 36
06.12.2011, 22:26  [ТС] 16
а функции вызывать так же, как вы мне написали ранее?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
06.12.2011, 22:27 17
Да...
0
0 / 0 / 1
Регистрация: 01.12.2011
Сообщений: 15
06.12.2011, 22:38 18
у меня эта же ситуация, только задание выглядит следующим образом
"Найти в массиве четыре смежных числа с чередующимися знаками «+»«-» или «-» «+»."
Написал код но не могу понять в чем ошибка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int main()
{
  int a[6], i, s, m, n, k, e;
  printf("Введите массив чисел: ");
  m = k = e = 0;
  for(i = 1;i != 6;i++)
   {
        scanf("%d", &a[i]);
        if (a[i] > 0 && a[i+1] < 0)
                   {
                     m = a[i];
                     printf ("%d",m);
                     k = k+1;
                   };
        if (k==2) break;
   }
   for(i = 1;i != 6;i++)
       { if (a[i] < 0 && a[i+1] > 0)
                   {
                     m = a[i];
                     printf ("%d",m);
                     e = e+1;
                   };
        if (e==2) break;
   }
   getch();
}
0
Dekio
06.12.2011, 22:39
  #19
 Комментарий модератора 
jed11, Чего в чужую тему лезешь?!
0
0 / 0 / 1
Регистрация: 01.12.2011
Сообщений: 15
06.12.2011, 22:42 20
Dekio, батенька "Иван Аганин" разрешил...
0
06.12.2011, 22:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2011, 22:42
Помогаю со студенческими работами здесь

Массивы. Циклические алгоритмы (Заполнить массивы случайными числами, лежащими в интервале 0 до 100)
Доброго дня, уважаемые форумчане, помогите пожалуйста решить задание. Заполнить массивы случайными...

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц)
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник...

Файлы. Компоненты - массивы чисел. Переформировать файл, где сначала идут массивы с положительными макс. элементами
Здравствуйте!! я пишу такую задачу: нужно написать две программы, одна из них создает файл, где...

Структуры, массивы, указатели, динамические массивы структур
Помогите с решением задачи (прикрепляю условие). Заранее спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru