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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++]Одномерный массив , помогите понять задание 
V
    Опции темы
bobik02
  Дата 26.11.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вот задали такую задачку:

Сгенерировать и вывести на экран одномерный массив: X{Xi} (i = 1,n  где n =10 ) у диапазоне целых чисел [20;90] . Сформировать массив Z, который  складывается  с єлементов массива X , которые устравивают условию Xi > 40 . Упорядочить єлементы массива Z по  возрастанию .


так вот что не ясно: 
1.) как с помощью генератора случайных чисел сгенерить  i = 1, n где n 10 в диапазоне чисел [20; 90]   (если не затруднит можно код, а то я не пойму что то )
2.) И каким образом можно упорядочить єлементы по возростнаию ? (тут код не надо просто объсните на примере как построить алгоритм)

(только помгите разобратся , но не делайте за меня задачу, буду очень признателен за помощь smile )


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


Новичок



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

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



По возрастанию значит первым будет стоять наименьший по значению элемент
Достигает ся это так:
Цикл 1 (от начала до конца массива)
   |--Цикл 2 (от начала до конца массива)
          |--(если элемент меьше предыдушего меняем их местами)
PM MAIL   Вверх
orthrus
Дата 26.11.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



Цитата(bobik02 @  26.11.2007,  17:01 Найти цитируемый пост)
1.) как с помощью генератора случайных чисел сгенерить  i = 1, n где n 10 в диапазоне чисел [20; 90]


примерно так:

Код

int rnd = random(70) + 20;


Цитата(bobik02 @  26.11.2007,  17:01 Найти цитируемый пост)
2.) И каким образом можно упорядочить єлементы по возростнаию ?


При помощи любой сортировки, воспользуйся самой простой пузырьковой smile 

Это сообщение отредактировал(а) orthrus - 26.11.2007, 17:55


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
bobik02
  Дата 26.11.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я полагаю что алгоритм должен работать так:
1.) Генерим массив X (в диапазоне от 20 до 90...)
2.) Записываем только те элементы с массива X в массив Z если выполняется условие ( X > 40 )
3.) Сортируем элемнты массива Z по возрастанию .

пункт 1-й есть, со 2-м проблема, с 3-м пока что не могу понять как отсортировать  smile 
ну вот начал делать:
Код

#include <iostream>
#include <conio>

using namespace std;

const n = 10;

int main(int argc, char* argv[])
{
   clrscr();

   int arrayX[n];

  cout << "X : ";
  for ( int i = 0; i < n; i++ )
  {
    arrayX[i] = random(70) + 20; // генерим массив у диапазоне от 20 до 90
    cout << arrayX[i] << " " ;
  }

   // .....
  
  getch();
  return 0;
}


столкнулся с такой проблемой:
в задаче сказано что второй массив (Z):  складывается  с элементов массива X , которые устравивают условию Xi > 40 

например сгенерило такой первый(X) массив: {59, 54, 76 , 54, 72, 53, 46, 34 , 56, 71}
соовтествено с 10 элементов (n), 
если брать єтот пример то по условию второй массив (Z) будет с 9-ти єлементов так как: мы выяснили что Xi > 40 , то берем все элементы,  кроме 34.

значит и второй массив должен содержать 9ть элементов... (соответсвенно n-1 в данном случаи)
я думал решить это так:
Код

    ...

   int count = 0;
   
   ....  в цыкле где мы генерим массив задаем такое условие
    if ( arrayX[i] < 40 )
    {
      count++;
    }
   ..... оно подсчитает сколько нужно будет отминусовать от n

   а дальше хотел инициализировать массив Z:
   int arrayZ[n - count];


но компилятор не хочет меня слушатся и говорит такую ошибку:
E2313 Constant expression required in function main(int,char * *) 

в подскажите как побороть ? 



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


Опытный
**


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

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



c сортировкой разобрался  smile  вот пузырьковой:
Код

...
int tmp;
   for(int i = 0; i <= n-1; i++)
  {
      for( int j = 0; j <= n-2-i; j++)
      {
          if( arrayX[j] > arrayX[j+1] )
          {
              tmp = arrayX[j];
              arrayX[j] = arrayX[j+1];
              arrayX[j+1] = tmp;
          }
      }
  }
....


теперь осталось, только:  Сформировать массив Z, который  складывается  с єлементов массива X , которые устравивают условию Xi > 40   smile  

помогите  ?


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


Опытный
**


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

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



...

Это сообщение отредактировал(а) bobik02 - 26.11.2007, 21:57


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



вот так надо сделать:
Код

    ...

   int count = 0;
   
   ....  в цыкле где мы генерим массив задаем такое условие
    if ( arrayX[i] < 40 )
    {
      count++;
    }
   ..... оно подсчитает сколько нужно будет отминусовать от n

   а дальше хотел инициализировать массив Z:
   int *arrayZ = new int[n - count];


т.е. массив надо создавать динамически, т.к. на этапе компиляции count вычислить невозможно следовательно и создать массив статически с кол-вом элементов = count тоже невозможно.

Это сообщение отредактировал(а) orthrus - 27.11.2007, 07:14


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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