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

Массив: Удалить из массива все отрицательные элементы. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Арифметика Класса Двусвязного списка http://www.cyberforum.ru/cpp-beginners/thread392317.html
Всем привет. тут такая проблема есть у меня программа создание двусвязного циклического списка и действия над ним. и надо создать арифметику т.е сложить два списка вычесть и сравнить. проблема в следуйщем при создании функции для допустим сложение нужна ссылка на голову второго списка ( я хочу складывать не сами элементы а путем слияния). вот примерная функция void List::Summa (const List...
C++ Умножения матрицы на вектор. Задание Выполнить задачу распараллеливания алгоритма (на любом языке программирования.) Дано 100 матриц и 100 векторов, умножение каждой матрицы на каждый вектор. Пока решил так: #include <iostream> #include <stdlib.h> #include <conio.h> #include <stdio.h> #include <time.h> http://www.cyberforum.ru/cpp-beginners/thread392306.html
Задача со строками(найти в тексте определенные слова) C++
Ребят, помогите с задачкой: В имеющемся словаре найти группы слов, записанных одними и теми же буквами и отличающиеся только их порядком, то есть перестановкой, например, (КОМАР, КОРМА). Заранее спасибо.
Написать программу метод секущих C++
Помогите написать программу, нужно решить нелинейное уравнение pow(x,5)-pow(x,4)+3*pow(x,3)-5*pow(x,2)+15*x-1=0 метод секущих. С погрешностью 0.01. также нужно вывести результат на какой итерации найден корень. программа для курсовой, методом половинного деления сделал а этот никак не могу реализовать(
C++ програма на С++ http://www.cyberforum.ru/cpp-beginners/thread392283.html
Задача. Обычная ошибка при наборе состоит в том что вы помещаете руки на клавиатуре на 1 ряд правее верной позиции. Тогда "Q" будет печататься как "W", "J" печататься как "K", и т.д. Ваша задача состоит в расшифровке сообщения набранного таким образом. ВХОДНЫЕ ДАННЫЕ. входные данные состоят из нескольких строк текста. Каждая строка может содержать цифры, пробелы, прописные буквы на...
C++ Вывести содержимое очереди на экран двумя столбцами Требуется модифицировать текст программы для реализации самостоятельного задания. #include "stdafx.h" #include <windows.h> #include <iostream> #include <stdlib.h> #include <iomanip> using namespace std; struct CH подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
27.11.2011, 16:26     Массив: Удалить из массива все отрицательные элементы.
Цитата Сообщение от Thinker Посмотреть сообщение
Сыроежка, какая разница каким элементом будут заменены удаляемые элементы, задача же - удалить, значит просто переставить элементы в массиве. Если массив не динамический, то удалить (realloc) вы не сможете, поэтому здесь требуется просто произвести перестановку и все. Вы поймите, размер массива остается прежним, просто вводится новая переменная, отвечающая за количество элементов, не обладающих тем свойствам, которые надо было удалить.



Не по теме:

И почему вы так резко реагируете, непонятно, на вас же никто не нападал, просто спокойно обсуждаем задачу

Как это - какая разница?! Вы вообще-то отдаете себе отчет, что вы говорите?! А если вы выберите значение, совпадающее с допусттимым значением для массива? Как вы разберетесь, где удаленный элемент, а где нет?!
И кто вам сказал, что требуется сделать перестановку элементов? Задачи по перестановке элементов формулируются совершенно по-другому! Не надо фантазировать! В условиях задачи ничего про перестановку не говорится. Сказано только, что нужно удалить отрицательные элементы. Без дополнительной инофрмации о том, каким значением заменять отрицательные элементы массива, задачу не решить.

Теперь по поводу вашего очередного безграмотного заявления по поводу ввода "новой переменной". Не пониамаете, почему оно безграмотно? Три минуты вам на размышления, а уж потом читайте мой ответ, если сами не додумаетесь! (Увы, для меня лично очевидно, что вы не додумаетесь, если вам даже дать несколько часов!)

Итак, что у нас на входе? Массив! Что мы должны получить на выходе? Массив! Когда же вы вводите дополнительный объект, то это уже не массив! Это уже некий контейнер, состоящий из двух объектов, связанных между собой: самого массива и некоторо1 дополнительной переменной. То есть если вам нужно будет далее работать с тем, что вы получили после решения задачи, то вам постоянно надо будет работать с этими двумя объектами.
Почему вектор не является массивом, хотя все его элементы располагаются на непрерывном участке памяти точно также, как массив? Да потому что у него как раз и есть дополнительные переменные, которые контролирует его организацию, как, например, значение, возвращаемое size()? или значение, возвращаемое capacity().
Понимаете, о чем я говорю? Или не доходит? Так и в вашем решении вы на входе имеете массив, а на выходе строите некоторый упрощенный контейнер, который уже массивом не является, хотя и строится на основе массива. Ваш контейнер содержит два члена: это сам исходный массив и, на самом деле, еще две переменные, как у вектора, которые можно условно назвать size и capacity.

Поэтому не надо ничего изобретать! Надо было с самого начала не бежать писать безграмотный код, а спросить у автора исходного вопроса, каким значением заменять отрицательные элементы. А дураки сначала бегут писать код, а лишь потом, если им повезет и найдется тот, кто им укажет на их оплошность, начинают задумываться, а что они сделали?! Да и то только в том случае, если есть чем задумываться.

Я же не случайно привел пример массива из одного элемента int a[] = { -1 };. Допустим, кто-то к вам обратился за помощью удалить отрицательные элементы из этого массива. Вы ему говорите, что удалили. Заказчик распечатывает массив, и что он видет? Как был отрицательный элемент -1, так и остался! Он возмущенно бежит к вам и гневно заявляет, вы же ничего не сделали, верните деньги за работу! А вы ему в ответ, а ваш массив содержит 0 элементов! Клиент возмещенно, как 0 элементов? Массив не может иметь 0 элементов! Верните мой массив обратно! Но вам же не хочется возвращать назад деньги, и элемент массива вы ему вернуть не можете, поэтому вы пускаетесь в длинные рассвуждения и предлагаете клиенту некоторый костыль в виде дополнительной переменной, для которой клиент теперь должен выделить память и постоянно эту переменную таскать вместе со своим массивом!
 
Текущее время: 04:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru