народ помогите с задачей

Ответить
Ares
Сообщения: 1
Зарегистрирован: 13 июл 2009, 15:05

народ помогите с задачей

Сообщение Ares » 13 июл 2009, 15:26

Сжать n мерный целочисленный массив,удалив из него все элементы,величина которых находится в интервале [a,b].Освободившиеся в конце массива элементы заполнить нулями

Аватара пользователя
rrrFer
Сообщения: 224
Зарегистрирован: 07 сен 2008, 13:15
Контактная информация:

Re: народ помогите с задачей

Сообщение rrrFer » 14 июл 2009, 12:43

ICQ 395546[двести+восемнадцать]
мыло [ник на форуме]@mail.ru

Аватара пользователя
Sheka
Сообщения: 199
Зарегистрирован: 17 май 2009, 14:48
Контактная информация:

Re: народ помогите с задачей

Сообщение Sheka » 14 июл 2009, 12:51

Сделаю! Очень не дорого. В кратчайшие сроки. Договоримся! Ася 255507394.
Мои мысли настолько гениальны, что санитары уже приехали!
Ася 255507394.

rangerx
Сообщения: 25
Зарегистрирован: 01 июл 2009, 09:30

Re: народ помогите с задачей

Сообщение rangerx » 14 июл 2009, 18:41

Сделаю быстро и недорого. Обращайтесь. xranger@mail.ru

THuND3Rb0LT
Сообщения: 21
Зарегистрирован: 16 авг 2009, 12:02
Откуда: Dnepropetrovsk
Контактная информация:

Re: народ помогите с задачей

Сообщение THuND3Rb0LT » 19 сен 2009, 10:13

Сделаю бесплатно и почти полностью:

Код: Выделить всё

#include<iostream>
using namespace std;
const int n=10;
int main(int)
{
	int c[n]={5,7,11,4,0,34,174,8,9,10}; //при желании можно
 //написать цикл который будет генерировать значения ;)
	int a=0,b=0,d=10,i=0,count=0;
	cout<<"Enter a,b"<<endl;
	cin>>a>>b;
	for(i;i<n;i++)
	{
		if(c[i]>a && c[i]<b)
		{
			d=i;
			while(d<n)
			{
				c[d]=c[d+1];
				d+=1;
			}
			count+=1;
			c[n-count]=0;
		}
	}
	for(i=0;i<n;i++)
		cout<<c[i]<<"\t";
	return 0;
}
чот типу такого)

Newbie
Сообщения: 142
Зарегистрирован: 06 сен 2009, 18:45

Re: народ помогите с задачей

Сообщение Newbie » 19 сен 2009, 13:23

прикольно )))

d+=1;

Аватара пользователя
rrrFer
Сообщения: 224
Зарегистрирован: 07 сен 2008, 13:15
Контактная информация:

Re: народ помогите с задачей

Сообщение rrrFer » 19 сен 2009, 13:58

Код: Выделить всё

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main(){
	int i,j,A,B,*a,n;
	cin>>A>>B>>n;
	a=new int[n];
	for(int i=0;i<n;i++)
		cin>>a[i];
	for(int i=0;i<n;i++)
		if(a[i]<B&&a[i]>A){
			for(j=i--,n--;j<n;j++)
				a[j]=a[j+1];
			a[n++]=0;
		}
	for(int i=0;i<n;i++)
		cout<<a[i]<<" ";
	cout<<endl,cin.get(),cin.get();
             return 0;
}
THuND3Rb0LT

Код: Выделить всё

while(d<n)
{
	c[d]=c[d+1];
	d+=1;
}

выйдет за пределы массива

THuND3Rb0LT
Сообщения: 21
Зарегистрирован: 16 авг 2009, 12:02
Откуда: Dnepropetrovsk
Контактная информация:

Re: народ помогите с задачей

Сообщение THuND3Rb0LT » 19 сен 2009, 19:22

rrrFer писал(а): THuND3Rb0LT

Код: Выделить всё

while(d<n)
{
	c[d]=c[d+1];
	d+=1;
}

выйдет за пределы массива
Ну незнаю-незнаю, я тестировал, у меня все молодцом работало...
Точнее, помоему, оно и вправду выйдет, но страшного ничего не произойдет)

Аватара пользователя
rrrFer
Сообщения: 224
Зарегистрирован: 07 сен 2008, 13:15
Контактная информация:

Re: народ помогите с задачей

Сообщение rrrFer » 19 сен 2009, 19:45

THuND3Rb0LT
приложу снимок экрана.
запустил твою программу с массивом, который введен у тебя там, т.е.
int c[n]={5,7,11,4,0,34,174,8,9,10};
ввел А и Б соответсвенно 5 и 10, в результате получаю:
5 11 4 0 34 174 9 10 0 -858993460
т.е. вот в этом цикле:

Код: Выделить всё

while(d<n)
{
	c[d]=c[d+1];
	d+=1;
}
ты в последний элемент массива пишешь мусор.
кроме того, надо разобраться с алгоритмом - число "9" почему-то у тебя осталось.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Ответить