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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2011, 17:56   #1
ensoleille
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 25
По умолчанию удаление элементов

Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся менее 2 раз, и вывести размер полученного массива и его содержимое.


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


Код:
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<stdlib.h>
void main()
{
	int *a,*b;
	int i,j=0,N,k_ch=0;
	puts("Vvedite kolichestvo elementov massiva - N");
	scanf("%d",&N);
	a=(int*)malloc(N*sizeof(int));
	for(i=0;i<N;i++)
		a[i]=rand()%20-5;
	for(i=0;i<N;i++)
		{
			printf("%4d",*(a+i));
			puts("\n");
		}
	for(i=0;i<N;i++)	
		if(a[1-i]!=a[i])
			k_ch++;
	b=(int*)malloc(k_ch*sizeof(int));
	for(i=0;i<N;i++)
		if(a[1-i]!=a[i])
			b[j++]=a[i];		
	for(j=0;j<k_ch;j++)
	printf("%4d",*(b+j));
	puts("\n");
}
проблемма вся с циклами if =//

Последний раз редактировалось Stilet; 16.01.2011 в 18:53.
ensoleille вне форума Ответить с цитированием
Старый 16.01.2011, 19:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагается стратегия шринковки:
http://www.programmersforum.ru/showt...t=70310&page=4
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.01.2011, 22:43   #3
ensoleille
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 25
По умолчанию

как-то не сильно и понятно. проблема даже не в этом,а в том чтобы задать цикл( не пойму .чтобы элемент повторялся менее 2х раз.тоесть 1 раз. столько всего перепробывала.и всё работает не правильно
ensoleille вне форума Ответить с цитированием
Старый 16.01.2011, 22:59   #4
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Проще всего написать так )
Код:
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<stdlib.h>
void main()
{
	int *a,*b;
	int i,j=0,k,N;
	puts("Vvedite kolichestvo elementov massiva - N");
	scanf("%d",&N);
	a=(int*)malloc(N*sizeof(int));
	b=(int*)malloc(N*sizeof(int));
	for(i=0;i<N;i++)
		a[i]=rand()%20-5;
	for(i=0;i<N;i++)
			printf("%4d\n",*(a+i));

	for(i=0;i<N;i++)	
		for (k=0; k<N; k++) 
			if ((i!=k) && (a[i]==a[k])) {
				b[j++]=a[i];
				break;
			}
	printf("Resulting array: ");
	for(i=0;i<j;i++)
	printf("%4d, ",*(b+i));
}
Алгоритм неоптимальный конечно, но для учебной лабы сойдет )
Son Of Pain вне форума Ответить с цитированием
Старый 16.01.2011, 23:27   #5
ensoleille
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 25
По умолчанию

благодарю ^^
ensoleille вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элементов из списка. grave123 Общие вопросы C/C++ 0 10.03.2010 15:33
Удаление элементов из массива Jasper92 Общие вопросы C/C++ 3 06.03.2010 13:04
массивы. удаление элементов Ananim-Pbl6ak Паскаль, Turbo Pascal, PascalABC.NET 25 09.06.2009 11:07
Удаление элементов из списка Wi1D Помощь студентам 0 18.05.2009 00:23