Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Необходимо одно изменение в задаче массива array99 Абрамяна

Ответить
Настройки темы
C/C++ - Необходимо одно изменение в задаче массива array99 Абрамяна

Аватара для alert30

Ветеран


Сообщения: 1088
Благодарности: 162


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: alert30
Дата: 10-02-2016
Вот сама задача: "Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся более двух раз, и вывести размер полученного массива и его содержимое."

Я решил, но получается так, что в программе выдает совсем иное.
В общем, нужно сделать так, чтобы эти одинаковые элементы, встречающиеся более 2 раз, удалил только один из них элемент и уменьшил общий размер массива на единицу. Например:
Код: Выделить весь код
Ввожу на компе "a[0]=2, a[1]=2, a[2]=2, a[3]=4, a[4]=4, a[5]=4, a[6]=33, a[7]=44, a[8]=9, a[9]=18"
Должно быть при выводе:
"A[]: 2 2 4 4 33 44 9 18
Размер массива: 8"
Вот, собственно, код:
Код
Код: Выделить весь код
#include <conio.h>
#include <cstdlib>
#include <iostream>
#include <memory.h>

using namespace std;
void in_a(int* a, int N);
void out_a(int* a, int N);

int main(int argc, char *argv[])
{
    system("color 0f");
    setlocale (0,"");
    int N;
    cout<<"Введите N (N<=10): ";
    cin>>N;
	int *a=new int[N];
	memset((void*)a, 0x00, sizeof(int)*N);
    int *a_T=new int [N];
    memset((void*)a_T, 0x00, sizeof(int)*N);
	if (N<=10){
		cout<<"Заполнение массива"<<endl;
		in_a(a,N);
		int T=0;
		for(int i=0;i<N;i++){
		int C=0;
		for(int j=0;j<N;j++) if (a[j]==a[i]) C++;
    	if (C<=2) a_T[T++]=a[i];
		}
		a=a_T;
		cout<<"Ответ\na[]: ";
		out_a(a,N);
		cout<<"\nРазмер полученного массива: "<<T;
		}
		else cout<<"Ошибка";
		getch();
		}

void in_a(int* a, int N){
for(int T=0;T<N;T++){
cout<<"a["<<T<<"]=";
cin>>a[T];
}
}
 
void out_a(int* a, int n){
for (int T=0;a[T]!=0;T++) cout<<a[T]<<" ";
}

Отправлено: 11:29, 08-02-2016

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата alert30:
В общем, нужно сделать так, чтобы эти одинаковые элементы, встречающиеся более 2 раз, к примеру, было таким (то есть чтобы при трехразового такого же элемента удалил только один из них элемент с массивом и уменьшил его целостный размер массива на единицу): »
Коллега, попробуйте придать больше смысла этому предложению.

Цитата alert30:
Удалить из массива все элементы, встречающиеся более двух раз »
Подряд или в произвольном порядке?

Отправлено: 11:45, 08-02-2016 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для alert30

Ветеран


Сообщения: 1088
Благодарности: 162

Профиль | Отправить PM | Цитировать


Цитата Iska:
Коллега, попробуйте придать больше смысла этому предложению. »
Моего примера не хватает? Написал же.
UPD: Сократил до смысла.
Цитата Iska:
Подряд или в произвольном порядке? »
Если в задаче такого не сказано, то, пожалуй, выберу в произвольном порядке.

Отправлено: 08:44, 10-02-2016 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


alert30, Прошу прощения, если задену.
Но из набора букв решения я смысла не увидел.
Поэтому я предложу подумать о задаче не в терминах языка, а своими словами на бумаге.
Т.к. безыдейный код сложно проверять и искать в нем ошибку.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 18:27, 17-02-2016 | #4


Ветеран


Сообщения: 1404
Благодарности: 135

Профиль | Отправить PM | Цитировать


Через 3 массива нужно, наверное, делать, так как самый пессимистичный вариант, если все N элементов массива разные. Второй массив - множество элементов, присутствующих в массиве, которое является подмножеством первого массива. Третий массив - количество каждого из типов элементов. Объем требуемой памяти получается 3*N. Второй массив в итоге будет искомым массивом после удаления. Решение нужно написать или уже не актуально?

-------
Ehhh.. what's up, doc?..


Отправлено: 06:25, 23-02-2016 | #5


Аватара для alert30

Ветеран


Сообщения: 1088
Благодарности: 162

Профиль | Отправить PM | Цитировать


Спасибо всем, решение мне лично скинули давно.

Отправлено: 02:49, 30-03-2016 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Необходимо одно изменение в задаче массива array99 Абрамяна

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2010 - Outlook (напоминание в повторяющейся задаче) VictorST Microsoft Office (Word, Excel, Outlook и т.д.) 4 10-11-2015 15:46
PowerShell - [блог] NetSh vs NETTCPIP модуль на простой задаче Kazun Скриптовые языки администрирования Windows 0 30-05-2013 07:30
linux и windows одно и тоже? starwarser Флейм 7 16-06-2010 11:28
C/C++ - [решено] Теоретический вопрос в задаче о классе целых чисел Sky-er Программирование и базы данных 4 08-01-2009 04:18
Работает только одно ядро nomad73 Процесcоры 18 03-06-2008 14:46




 
Переход