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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.01.2012, 22:52   #1
Paulsan
Пользователь
 
Регистрация: 11.10.2010
Сообщений: 18
По умолчанию задача по одномерному массиву

Определить, есть ли в массиве L[1..N] значение, равное (min +max) / 2 и вывести его номер. Удалить это значение в массиве.

Первая половина задачи вроде работает, а во второй вообще труба...

#include<iostream>
using namespace std;
int main()
{
setlocale(0,"");
cout<<"введите кол-во элементов массива: ";
int N;
cin>>N;
int i,j,k;
float L[50];
for (i=1;i<=N;i++) L[i]=i;
for (i=1;i<=N;i++)
cout<<L[i]<<' ';
cout<<endl;
float C =(L[1]+L[N])/2;
cout<<"(min + max) / 2 = "<<C;
cout<<endl;
k=0;
for(i=0;i<N;i++)
{
if (!(L[i]=C))
{
L[k]= L[i];
k++;
}
}
for(i=0;i<k;i++)
cout<<L[i]<<' ';
cin.get();
}
Paulsan вне форума
Старый 05.01.2012, 23:16   #2
CaHb4ec
Пользователь
 
Регистрация: 02.01.2012
Сообщений: 25
По умолчанию

Такой код читать не удобно... Хорошо хоть не большой. Если будешь еще писать, оформляй получше.
удаление необходимого элемента:
Код:
int k=0;
for(int i=0;i<N;i++)
{
	if(L[i]==C)
	{
		k=i;
	}
}
for(int i=k;i<N-1;i++)
{
	L[i]=L[i+1];
}
CaHb4ec вне форума
Старый 05.01.2012, 23:36   #3
Paulsan
Пользователь
 
Регистрация: 11.10.2010
Сообщений: 18
По умолчанию

Я подставил, но не работает - выдаёт число с плавающей запятой
Paulsan вне форума
Старый 05.01.2012, 23:56   #4
CaHb4ec
Пользователь
 
Регистрация: 02.01.2012
Сообщений: 25
По умолчанию

Посмотрел как у вас индексация элементов идет... Обычно в массивах отсчет идет с нулевого элемента, т.е:
Код:
for(int i=0;i<N;i++)
Подправил код под этот нюанс и немного изменил:
Код:
k=-1;
for(int i=1;i<=N;i++)
{
	if(L[i]==C)
	{
		k=i; //cout<<L[i]<<'='<<C;
	}
}
if(k>=0)
{
	for(int i=k;i<N;i++)
	{
		L[i]=L[i+1];
	}
	N--;
}
for(i=1;i<=N;i++)
cout<<L[i]<<' ';
CaHb4ec вне форума
Старый 06.01.2012, 00:24   #5
Paulsan
Пользователь
 
Регистрация: 11.10.2010
Сообщений: 18
По умолчанию

Спасибо огромное, CaHb4ec!
Paulsan вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по одномерному массиву leha_demi Помощь студентам 1 17.12.2010 21:00
Вопрос по одномерному массиву (delhi) Ямерт Помощь студентам 2 23.11.2010 22:11
Вопрос по одномерному массиву Borland C Northex Помощь студентам 3 09.11.2010 21:45
одномерному массиву и табличкам viper52rus Помощь студентам 4 12.06.2010 15:25
Задача по одномерному массиву, сделать с процедурами deu4er Помощь студентам 6 13.11.2008 13:59