nixp.ru v3.0

25 мая 2017,
четверг,
23:15:48 MSK

DevOps с компанией «Флант»
insi написал 6 июня 2008 года в 22:28 (454 просмотра) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 4 комментария на сайте.

Помогите пожалуйста реализовать код программы на С++

Одномерный массив целых чисел, размер которго задается с клавиатуры. Запрограммировать следующие действия с массивом:

  1. циклически сдвигать на К позиций влево;

  2. выяснить, упорядочены ли элементы массива по невозрастанию или неубыванию;

  3. если в исходном массиве количество положительных значений меньше, чем отрицательных, то создавать новый массив для отрицательных значений, в противном случае — создавать массив для положительных значений и переписывать в него соответствующие значения исходного массива.

В приложении необходимо:

1. Для временного хранения наборов значений использовать только временные динамические массивы;

2. Программирование заданных действий производить с использованием указателей;

3. Вывод результатов оформлять в виде таблицы;

4. Создать пользовательсике функции;

5. В приложении необходимо обеспечить возможность выбора конкретного действия;

6. В приложении необходимо обеспечить возможность  повторного выполнения задания без перезапуска приложения;

YuriyRusinov

И что участники форума могут сделать, т.е. ты хочешь задать вопрос и получить на него ответ ? Или они должны написать тебе программу, если это так, то это не в этот раздел.

insi

Ну хотябы посдкажите кто может, как сдвинуть массив на К влево? Как я понял это делается путем деления без остатка. Но немогу это записать кодом

YuriyRusinov

Молча, первый элемент записываешь во временную переменную, остальные элементы сдвигаешь влево, и временную переменную ставишь на последнее место. Повторить K раз. Что мешает написать код ?

insi

Мешает нехватка знаний! Я не программист, но надо решить эту задачу. Смотрел разную литературу, но не нашел как сделать смещение. Так что если не трудно, то помогите с кодом

YuriyRusinov

ну примерный фрагмент кода таков

double v_tmp = x[0];

for (int i=0; i

x = x [i+1];

x[n-1]=v_tmp;

Остальное за $, а по существу берешь книгу либо Кернигана-Ричи, либо Страуструпа и пишешь.

rgo

Кстати, я подозреваю, что быстрее будет так:

for (int i=0; i
    double tmp = x[i];
    x[i] = x [i+1];
    x[i] = tmp;
}
YuriyRusinov

И что получится в результате :-)

rgo
YuriyRusinov
И что получится в результате :-)

Это вопрос? Тоже самое. Массив циклически сдвинется на один элемент.

upd. Понял. Там очепятка в коде. Тело цикла должно менять i-тый и (i+1)-й элементы местами.

insi

С этим я розабрался, спасибо! Теперь может еще бы разобраться с проверкой на невозрастание и неубывание элементов массива. Не подскажете как это можно сделать?

YuriyRusinov

Примерно также, в цикле. Включаем мозги и пишем аналогичный цикл. Эти задачи — для непрограммистов с мозгами и трудолюбием.

insi

Какой Вы умный!

YuriyRusinov

А проверку на неубывание можно сделать, добавив переменную типа bool и установив ее в true, а в цикле присвоить ей что-то типа bool isAsc = true;

for (int i=1; i

<здесь поставить подходящий оператор присваивания переменной isAsc>

И собственно, далее читать и искать в гугле.