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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 23:03   #11
геннадий 2012
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не во всех, и я не предлагаю от него избавится.
Я либо плохо вижу либо вижу что он внутри {} цикла, при все этом у функции отсутствует }
Извините
Код:
void Novaya ( int *u , int nf, int sum)
{
for(int i=0;i<nf;i++)
{
mabs=abs(u[i]);
 if(mabs<min) 
min=u[i];
if(u[i]==0) 
{sum+=mabs}
}
return;
}
теперь правильно вроде да?

Еще кое-что:
Вычислить ,сумму элементов массива , расположенных между первым и последним нулевыми элементами

Код:
void Reshenie(int *u , int nf,   int i_start, int i_end, int &sf)
{

for (int i=0; i<nf; i++)
        if (u[i] = 0)
        {
            i_start = i+1;
            //break;
        }
    for (int i=nf-1; i>=0; i--)
        if (u[i] = 0)
        {
            i_end = i-1;
           // break;
        }
    for (int i=i_start; i<i_end; i++)
	{ sf+= u[i];}
return;
}
Не могли бы вы подправить ошибки ,не вводя никаких новых переменных?
Нужны ли в этом случае break ?

Последний раз редактировалось Stilet; 26.12.2012 в 14:58.
геннадий 2012 вне форума Ответить с цитированием
Старый 26.12.2012, 11:43   #12
геннадий 2012
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
По умолчанию

предыдущее я доделал, спасибо
Еще одно задание и код прилагается


Код:

#include <iostream>
#include <iomanip>
#include <ctime>
#include <cmath>
using namespace std;
void RandDouble ( double range_min, double range_max, double *u,  int nf)
{
	srand ((unsigned int) time(NULL));
for(int i=0;i<nf;i++)
{
	u[i]=(double)rand()/(double)RAND_MAX*(range_max-range_min)+range_min;
}
cout<<endl;
return;
}
void Vivod (double *u , int nf)
{
	cout <<endl<<"Массив u" <<endl;
cout<<endl;
for(int i=0;i<nf;i++)
{
	cout<<"u["<<setw(2)<<i<<"]: ";
	cout <<setw(8)<<u[i]<<endl;
}
cout<<endl;
return ;
}
void Reshenie(double *u , int nf,  double &sf, int i_start)
{
	int imax=0;
for(int i=0;i<nf;i++)
if(abs(u[i])>abs(u[imax]))
{ imax=i;}
cout<<"imax="<<imax<< " u[imax]= "<<u[imax]<<endl;

for (int i=0;i<nf; i++)
        if (u[i] > 0)
        {
           i_start = i;
            break;
		}
		for (int i=i_start+1; i<nf; i++)
	{ sf+= u[i];}
return;
}

//функция сортировки методом Пузырька
void Puzirek(double*u, double nf, int&kf)
{
	kf=0;//кол-во итераций
	int temp;//для временного хранения
	int a, b;
	cout << endl <<  "a: ";cin>>a;
	cout<<"b: "; cin>>b;

	for(int i=0;i<nf-1;i++)
	for(int j=nf-1; i<=j;j--)//идут навстречу друг-другу
	{
		kf++;
		if((u[j]>=u[a] && u[j]<=u[b]) && (u[j-1]<a || u[j-1]>b))//если соседние элементы неупорядочены
		{//то происходит обмен соседними элементами
			temp=u[j];//временное запоминание
			u[j]=u[j-1];//обмен j-1-ого элемента на j-тый
			u[j-1]=temp;//обмен j-того на j-1-тый
		}
	}
	return;
}


int main()
{
setlocale (0, "");
	const int n=10;
	double mus[n];
	int i_start=0,k;
	double  s=0;
RandDouble (-5, 5, mus, n);
Reshenie ( mus, n, s, i_start);
Vivod ( mus, n);
cout<< " s= "<<s<<endl;
Puzirek(mus, n, k);//обращение к функций сортировки
	cout <<endl<<"Массив u" <<endl;
cout<<endl;
for(int i=0;i<n;i++)
{
	cout<<"u["<<setw(2)<<i<<"]: ";
	cout <<setw(8)<<mus[i]<<endl;
}

cout<<"k= "<<k<<endl;//кол-во итераций

return 0;
}
Никак не могу справиться с последним заданием, помогите пожалуйста доделать его в моем коде...нужно доделать либо переделать в функций Puzirek...
я уже сам запутался в нем...

Последний раз редактировалось геннадий 2012; 26.12.2012 в 18:19.
геннадий 2012 вне форума Ответить с цитированием
Старый 26.12.2012, 15:36   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
//Преобразовать массив таким образом, чтобы сначала распологались все элементы,
//целая часть которых лежит в интервале [a;b], а потом - все остальные.
Код:
void nununono(double* m,int len,int a,int b){
 double *q=new double[len];
 int k=0;
 for(int i=0;i<len;i++) if(int(m[i])>=a && int(m[i])<=b) q[k++]=m[i];
 for(int i=0;i<len;i++) if(int(m[i])<a || int(m[i])>b) q[k++]=m[i];
 for(int i=0;i<len;i++) m[i]=q[i]
 delete []q
}
Вызов: nununono(mus,10,2,4)
подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.12.2012, 18:18   #14
геннадий 2012
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
void nununono(double* m,int len,int a,int b){
 double *q=new double[len];
 int k=0;
 for(int i=0;i<len;i++) if(int(m[i])>=a && int(m[i])<=b) q[k++]=m[i];
 for(int i=0;i<len;i++) if(int(m[i])<a || int(m[i])>b) q[k++]=m[i];
 for(int i=0;i<len;i++) m[i]=q[i]
 delete []q
}
Вызов: nununono(mus,10,2,4)
подходит?
Да все спасибо я его сделал...
геннадий 2012 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти сумму модулей элемента массива, расположенных после первого отрицательного ? МоЗгАвеД Общие вопросы C/C++ 0 12.12.2011 17:36
В матрице в каждой строке найти сумму N Элементов расположенных после максимального элемента этой строки lexflax Паскаль, Turbo Pascal, PascalABC.NET 0 20.04.2011 14:41
в сглаженой матрице найти сумму модулей элементов расположенных ниже главной диагонали Sergeo_89 Паскаль, Turbo Pascal, PascalABC.NET 8 07.12.2010 00:02
сумму элементов массива, расположенных после последнего элемента, равного нулю. R@Ziel Помощь студентам 2 17.12.2009 23:44
Найти сумму парных элементов матрицы v[4][4].Расположенных ниже главной диагонали. Black_Angel91 Помощь студентам 11 21.04.2009 20:51