Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С++]Массивы , элементы массива 
:(
    Опции темы
insi
Дата 10.6.2008, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 14.5.2008

Репутация: нет
Всего: нет



Подскажите пожалуйста, как выяснить, упорядочены ли элементы массива по невозрастанию или неубыванию?
PM MAIL   Вверх
susanin
Дата 10.6.2008, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 7



Цитата(insi @  10.6.2008,  21:22 Найти цитируемый пост)
по невозрастанию или неубыванию

это как? неубыванию==возрастанию а невозрастанию == убыванию? если так, то просто берешь первый элемент и в зависимости от того на что проверить надо сравниваешь первый элемент с последующими. создаешь флаг какой нибудь, если встречается пара элементиов, которая не упорядочена в необходимом порядке, то флаг изменяешь(наприер с 0 на 1) а в конце смотршь на флаг и делаешь оттуда выводы, отсортирован массив(флаг не изменился) или не осортирован (флаг изменился). да... и наверно надо в цикле когда будешь сравнивать элементы сделать break усли изменился флаг, чтобы если попадется 2 и более элементов, флаг больше не менялся..
PM MAIL   Вверх
insi
Дата 11.6.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 14.5.2008

Репутация: нет
Всего: нет



Нет, это я так понял надо пройти каждый элемент массива и проверить не убывает ли весь массив, если он не убывает, то вывести "элементы массива не убывают", если убывавает - то "элементы массива убывают", и соответственно с невозрастанием тоже самое. Как это сделать? 
PM MAIL   Вверх
susanin
Дата 12.6.2008, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 7



insi, ну я в принципе это и сказал в алгоритме! смотри. есть массив. создаешь какой нибудь флаг (например flag).. проходишь массив от начала до конца. например проверяя попутно больше (меньше) ли текущий элемент следующего. если текущий элемент меньше(больше) следующего (следовательно для упорядочивания по возрастанию(убыванию) надо поменять местами элементы) изменяешься флаг и в конце смотришь на флаг... если надо, могу в принципе код набросать...к прмеру дан массив 58, 12, 6, 4 , 2, 0 ... программы выведет что массив убывает или 12, 58, 6, 4, 2, 0.... программа выведет "не убывает"

Добавлено через 2 минуты и 56 секунд
если я не так понял, то приведи пример, как ты понимаешь задание... с массивом чисел

Это сообщение отредактировал(а) susanin - 12.6.2008, 00:41
PM MAIL   Вверх
Palladin
Дата 12.6.2008, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Код


int main()
{
int a[100];
int n=1;// кол-во элементов массива
int n_voz,n_ybiv; // для подсчета
cout<<"Введите кол-во элементов массива: ";
cin>>n;

for(int i=1;i<=n;i++) ////// вводим массив
{
  cout<<"A["<<i<<"]= "<<endl;
  cin>>a[i];
}

n_voz=1;
n_ybiv=1;
for(int i=1;i<=n-1;i++)
{
 if(a[i]>=a[i+1]){n_ybiv++;}
 if(a[i]<=a[i+1]){n_voz++;}
}
if(n_ybiv==n) cout<<"Massiv otsortirovan po ubivaniyou";
if(n_voz==n) cout<<"Massiv otsortirovan po vozrastaniyou";
if(n_voz!=n&&n_ybiv!=n)cout<<"Massiv ne otsortirovan";
getch();
return 0;
}


Это сообщение отредактировал(а) Palladin - 12.6.2008, 06:14


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
insi
Дата 13.6.2008, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 14.5.2008

Репутация: нет
Всего: нет



Огромное спасибо!
А не подскажете, как теперь сделать такой ход: 
если в исходном массиве количество положительных значений меньше, чем отрицательных,
 то создавать новый массив для отрицательных значений, в противном случае - создавать
 массив для положительных значений и переписывать в него соответствующие значения исходного
 массива.
PM MAIL   Вверх
bobik02
Дата 13.6.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 26.11.2007

Репутация: 3
Всего: 14



на
Код

#include <iostream>
#include <conio>

using namespace std;

const int n = 5;

int main()
{
  int array[n] = { -5, -7, 3, 2,-9 };
  int all_true = 0, all_false = 0;
  int count = 0;


  for ( int i=0 ; i < n; i++ ) {
    if ( array[i] < 0 ) {
      all_false++;
    } else {
      all_true++;
    }
  }


  if ( all_false > all_true ) {
    int* new_array = new int[all_false];
    for ( int i=0; i < n; i++) {
      if ( array[i] < 0 ) {
        new_array[count++] = array[i];
      }
    }
  } else {
    int* new_array = new int[all_true];
    for ( int i=0; i < n; i++) {
      if ( array[i] > 0 ) {
        new_array[count++] = array[i];
      }
    }
  }

  return 0;
}


смысл короче ты понял ?  smile 


--------------------
Have a nice day
PM   Вверх
insi
Дата 14.6.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 14.5.2008

Репутация: нет
Всего: нет



Да,  огромное спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0717 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.