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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2012, 20:12   #11
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

А если так?

Код:
	 for (i = i_start+1; i < i_end-1; i++)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 08.12.2012, 20:16   #12
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Это невозможно.
Переменные kol и s у вас по ходу программы никак не изменяются , они инициализированы нулем, следовательно при их выводе ответы должны быть нулевые.
Далее, попробуйте хотя бы взглянуть на код который я вам отпостил и вдуматься в его назначение.
Sciv
Цитата:
А если так?
Если на то пошло, в таком случае упустите последний элемент стоящий перед отриц.
Да и собственно причем здесь это?) Вы на сам код его посмотрите)

Последний раз редактировалось Базиля; 08.12.2012 в 20:20.
Базиля вне форума Ответить с цитированием
Старый 08.12.2012, 20:28   #13
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Если на то пошло, в таком случае упустите последний элемент стоящий перед отриц.
Да и собственно причем здесь это?) Вы на сам код его посмотрите)
И то верно. Торможу-с!
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 08.12.2012, 20:46   #14
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

Ребята, я полный плуг и не могу понять в чем ошибка
the_faceless вне форума Ответить с цитированием
Старый 08.12.2012, 20:57   #15
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Выводить то что нужно, а не то что попало.
Код:
#include <iostream.h>
void main()
{int a[20], n, i,k=0,i_start,i_end;
cout << "\t Input N (<=20) ";
cin >> n;
cout <<"\n\t Massiv A" << endl;
for(i = 0; i < n; i++)
{
cout << "\t a[ " << i+1 << " ] = ";
cin >> a[i];
}

 for (i=0;i<n;i++)
 {
 if (a[i]<0)
 {
	 if (k==1)
	 {
	 i_end=i;
	 k++;
	 break;
	}
        i_start=i;
	k++;
 }

 }
 if (k!=2)
	 cout<<"В массиве нет 2ух отриц эл. подряд";
	 else
	 { int pr=1;
	 for (i = i_start+1; i < i_end; i++)
		 pr*=a[i];
		 cout<<"Произведение="<<pr;
	 }
}
P.S. Язык как я понял все-таки с++, не с.

Последний раз редактировалось Базиля; 08.12.2012 в 21:08.
Базиля вне форума Ответить с цитированием
Старый 09.12.2012, 14:19   #16
the_faceless
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 15
По умолчанию

Спасибо огромное Sciv и Базиля, премного благодарен
Вот рабочий код, если кому понадобится
Код:
#include <stdafx.h>
#include <iostream>
using namespace std;
void main()
{
int a[20], n, i, k=0, i_start, i_end;
cout << "\t Input N (<=20)";
cin >> n;
cout <<"\n\t Massiv A" << endl;
for(i = 0; i < n; i++)
{
cout << "\t a[ " << i+1 << " ] = ";
cin >> a[i];
}

 for (i=0;i<n;i++)
 {
 if (a[i]<0)
 {
	 if (k==1)
	 {
	 i_end=i;
	 k++;
	 break;
	}
        i_start=i;
	k++;
 }

 }
 if (k!=2)
	 cout<<"В массиве нет 2ух отриц эл. подряд";
	 else
	 { int pr=1;
	 for (i = i_start+1; i < i_end; i++)
		 pr*=a[i];
		 cout<<"Произведение="<<pr;
	 }
}
the_faceless вне форума Ответить с цитированием
Старый 09.12.2012, 23:31   #17
геннадий 2012
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
По умолчанию

кто нибудь сможет объяснить мне эту программу от начала до конца?пожалуйста...

программка насколько я понимаю составлена на С++
Что значит здесь заголовок #include <stdafx.h> ?
k - это сумма?
помогите пожалуйста разобраться...
у меня почти такая же задача

В одномерном массиве,состоящем из n вещественных элементов, вычислить:
сумму элементов массива с нечетными номерами;
сумму элементов массива, расположенных между первым и последним отрицательными элементами.(вот с этим я и не могу справиться)
Сжать массив,удалив из него все элементы , модуль которых не превышает единицу. Освободившиеся в конце массива элементы заполнить нулями.(понятия не имею, как это делается)


совсем глупый вопрос(я программирование начал изучать только недавно) Эту задачку можно в одной программке составить?

ниже попробую скинуть свой вариант который не работает


Код:
#include <iostream>
#include <cmath>
#include <ctime>
#include <iomanip>
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<<"Massiv 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 )
{
for (int i=0; i<nf; i+=2)
{
		
			sf+=u[i]; 
}

//бла бла бла что то здесь не так.
for (int i=0; i<nf; i++)
        if (u[i] < 0)
        {
            i1 = i;
            break;
        }
 
    for (int i=nf-1; i; i--)
        if (u[i] < 0)
        {
            i2 = i;
            break;
        }
 
    for (int i=i1+1; i<i2; i++)
        sf+= u[i];
 
return ;
}
int main ()
{
	const int n=7;
	double mus[n];
	double  s=0;
RandDouble (-5, 5, mus, n);
Reshenie ( mus, n, s );
Vivod ( mus, n);
	cout<< " s= "<<s<<endl;
			return 0;
}

Последний раз редактировалось геннадий 2012; 09.12.2012 в 23:58.
геннадий 2012 вне форума Ответить с цитированием
Старый 10.12.2012, 01:55   #18
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

очень забавно кстати, знать как писать свои польз. п/п и при этом не знать ответа на вопрос :
Цитата:
Эту задачку можно в одной программке составить?
Цитата:
ниже попробую скинуть свой вариант который не работает
А зачем врать то?

Цитата:
сумму элементов массива, расположенных между первым и последним отрицательными элементами.(вот с этим я и не могу справиться)
Код решения представлен чуточку выше.
Взгляните, не поленитесь.

Последний раз редактировалось Базиля; 10.12.2012 в 02:00.
Базиля вне форума Ответить с цитированием
Старый 10.12.2012, 08:51   #19
геннадий 2012
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
По умолчанию

Вообще то я не врал.
Я все это много раз просмотрел...и код который выше мне не совсем понятен.(там в принципе произведение находят,а мне нужна сумма)
И если вы взглянули на мой код, то могли бы увидеть,что первую часть я решил...а вторую не смог..вот я и подумал..может нужно все это отдельно делать...


вторую выполнил..нет идеи по третьей(сжать массив , заполнить нулями)?

Последний раз редактировалось геннадий 2012; 10.12.2012 в 18:14.
геннадий 2012 вне форума Ответить с цитированием
Старый 10.12.2012, 21:14   #20
геннадий 2012
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
По умолчанию

Я почти все составил, но в массиве у меня заменяются явно не те элементы.Ниже скидываю свой код.

Не поможете найти ошибку?

Код:
Код:
#include <iostream>
#include <cmath>
#include <ctime>
#include <iomanip>
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 i_end, double &kf)
{
for (int i=0; i<nf; i+=2)
{	sf+=u[i]; }
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++)
	{ kf+= u[i];}
	return ;
}

void lol(double *u , int nf,  int i)
{
//вот где-то здесь явно ошибка.
	for(i=0 ; i<nf ; i++)
  if (abs(u[i])<1) 
 for (int j=i ; j<nf-1 ; j++)
  {
	  u[j]=u[j]+1;
      u[nf-1]=0;
      --nf;
	  --i; 
}
return ;
}
int main ()
{
	setlocale (0, "");
	const int n=7;
	double mus[n];
	double  s=0,k=0;
	int i_start, i_end, i;
RandDouble (-5, 5, mus, n);
Reshenie ( mus, n, s, i_start, i_end, k);
Vivod ( mus, n);
cout<< " s= "<<s<<endl;
cout<< " k= "<<k<<endl;
cout<<endl;
lol(mus, n, i);
cout <<endl<<" Переделанный массив " <<endl;
cout<<endl;

for(int i=0;i<n;i++)
{
	cout<<"mus["<<setw(2)<<i<<"]: ";
	cout <<setw(8)<<mus[i]<<endl;
}
cout<<endl;

			return 0;
}

Последний раз редактировалось геннадий 2012; 10.12.2012 в 21:16.
геннадий 2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
одномерный массив curly182 Паскаль, Turbo Pascal, PascalABC.NET 2 16.05.2009 15:01