Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2013, 23:14   #1
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
Смущение Вывод массива по условию

Доброе время суток!
Столкнулся с небольшой проблемой. Но не смотря на это пока еще не решил. Нужен совет.
Код:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

#define SIZE 100

int main()
{
	int mass[SIZE] = {0}, res[SIZE] = {0};
	int i, j, counter = 0;

	system("chcp 1251 > nul");
	srand(time(NULL));

	printf("\n МАССИВ ЧИСЕЛ:\n");
	printf(" *************\n");

	/* Заполнение массива случайными числами от 1 до 100 и его печать */
	for(i = 0; i < SIZE; i++)
	{
		mass[i] = rand()%100+1;
		printf(" %3d", mass[i]);
	}
	
	printf("\n\n Результирующая матрица:\n");
	printf(" **********************\n");
	
	for(i = 0; i < SIZE; i++)
	{
		for(j = i+1; j < SIZE; j++)
		{
			if(mass[i] == mass[j])
			{	
				counter++;
				
				if(counter >= 3)
				{
					res[i] = mass[i];
					printf(" %3d", res[i]);
					break;
				}
			}	
		}	
	}
	printf("\n");
return 0;
}
Массив заполняется случайными числами. В результат выводятся только те числа, которые встречаются 3 или более раз. С этим я справился, но есть другая проблема: происходит так что некоторые цифры повторяются в результирующей матрице. На сколько я понимаю это связано с тем, что например одно из чисел встречается в исходном массиве 4, 5, 6 и более раз, условие успешно выполняется и выводит его второй раз. Как можно обойти эту ситуацию. Подобная тема вроде встречалась на форуме, но так и не была решена.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 19.01.2013, 23:52   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
но так и не была решена.
Ну еще бы, высший пилотаж
Код:
#include <algorithm>
int main()
{
	int res1[8] = {10,20,20,20,30,30,20,20};
	int res2[8]={};
	std::unique_copy(res1, res1+8, res2);
	return 0;
}
EUGY вне форума Ответить с цитированием
Старый 20.01.2013, 11:13   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

А как это можно сделать в контексте моего кода.
Код:
std::unique_copy(res1, res1+8, res2);
Я так понимаю этот код удаляет повторяющиеся значения из массива. Или я ошибаюсь
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод данных удовлетворяющих условию alex(21) Microsoft Office Access 2 09.03.2012 21:59
инициализация массива, вывод массива и обработка массива должны быть реализованы с помоshью функций airesjke Помощь студентам 0 02.03.2012 16:14
Вывод в файл подходящих по условию строк матрицы den-nokia Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 09.12.2010 13:30
Сумма и произведение элементов массива, удовлетворяющих условию (генерация float массива) felodese Помощь студентам 1 11.11.2010 20:52
вывод в DBGrid по условию Sergey2 БД в Delphi 13 01.03.2010 21:41