Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Иван Аганин
1 / 1 / 1
Регистрация: 16.11.2011
Сообщений: 36
#1

одномерне массивы - C++

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

Найти максимальный отрицательный элемент массива и подсчитать количество таких элементов.
Подскажите с циклом для функции поиска максимального отрицательного элемента.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2011, 19:28     одномерне массивы
Посмотрите здесь:

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

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

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

Табулирование функции и поиск данных. Одномерные массивы. Двумерные массивы - C#
Вычислить сумму первых четырех отрицательных элементов. В соответствии с п. 5.16 правил "Запрещено создавать темы с множеством...

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
531 / 436 / 37
Регистрация: 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 ];
Это если есть хотя бы один отрицательный.
BRcr
4006 / 2295 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
06.12.2011, 19:40     одномерне массивы #3
Цитата Сообщение от Иван Аганин Посмотреть сообщение
и подсчитать количество таких элементов.
C++
1
if (arr[i] < 0) count++;
Иван Аганин
1 / 1 / 1
Регистрация: 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 секунд
но все таки напишите свой вариант для надежности
BRcr
4006 / 2295 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 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
Регистрация: 16.11.2011
Сообщений: 36
06.12.2011, 20:46  [ТС]     одномерне массивы #6
а 13 строка, это что?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
06.12.2011, 20:47     одномерне массивы #7
Цитата Сообщение от Иван Аганин Посмотреть сообщение
int max = -100000;
-100000 - магическая константа. Так лучше не делать.
Что будет, если максимальное отрицательное число меньше -100000?

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

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

Добавлено через 38 минут
что такое sizeof?
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 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;
Иван Аганин
1 / 1 / 1
Регистрация: 16.11.2011
Сообщений: 36
06.12.2011, 21:55  [ТС]     одномерне массивы #12
и все??
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
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 минуты
Вам надо, чтобы еще функция находила макс. отриц. элемент?
Иван Аганин
1 / 1 / 1
Регистрация: 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 Посмотреть сообщение
Вам надо, чтобы еще функция находила макс. отриц. элемент?
да, нужно чтобы находила отрицательный элемент, а вторая функция считала сколько отрицательных всего
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
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;
}
Иван Аганин
1 / 1 / 1
Регистрация: 16.11.2011
Сообщений: 36
06.12.2011, 22:26  [ТС]     одномерне массивы #16
а функции вызывать так же, как вы мне написали ранее?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
06.12.2011, 22:27     одномерне массивы #17
Да...
jed11
0 / 0 / 0
Регистрация: 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();
}
Dekio
06.12.2011, 22:39
  #19
 Комментарий модератора 
jed11, Чего в чужую тему лезешь?!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2011, 22:42     одномерне массивы
Еще ссылки по теме:

Попадание точки. Массивы чисел. Массивы записей. - C++
Всем привет. По языкам задали три контрольные на си. Я сам си не знаю, даже не представляю, поэтому очень нужна ваша помощь. ...

Многомерные массивы, как перебирать внутренние массивы - C++
Здравствуйте. Такой учебный код и плохо понимаю как перебираются внутренние массивы, может кто пояснит подоходчивее. Именно внутренний...

.NET 4.x Создать массив, содержащий массивы, которые, в свою очередь, содержат массивы, в которых уже будут храниться различные типы данных - C#
Мне нужно создать массив, содержащий массивы, которые, в свою очередь, содержат массивы, в которых уже будут храниться различные типы...

Статические массивы,Динамические массивы,строки - Delphi
1)Создать двумерный массив A(N,M) целых положительных и отрицательных чисел с помощью функции Random. Найти произведение всех четных...


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

Или воспользуйтесь поиском по форуму:
jed11
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 15
06.12.2011, 22:42     одномерне массивы #20
Dekio, батенька "Иван Аганин" разрешил...
Yandex
Объявления
06.12.2011, 22:42     одномерне массивы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru