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

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

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

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

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

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

Добрый вечер уважаемые форумчане !Нужна ваша помощь!

В одномерном массиве состоявшим из n целочисленных элементов вычислить:
1)минимальный по модулю элемент массива;
2)сумму модулей элементов , расположенных после первого элемента ,равному нулю.
3)Преобразовать массив таким образом , чтобы в первой его половине распологались элементы , стоявшее в четных позициях , а во второй половине - элементы , стоявшее в нечетных позициях.


Мой код(смог запрограммировать только первое задание, помогите доделать мой код):


Код:
#include<iostream>
#include<iomanip>
#include<cmath>
#include<ctime>
using namespace std;
void RandInt ( int range_min, int range_max, int *u,  int nf)
{
	srand ((unsigned int) time(NULL));
for(int i=0;i<nf;i++)
{
	u[i]= rand()%(range_max-range_min)+range_min;
}
cout<<endl;
return;
}
void Vivod (int *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(int *u , int nf)
{
	int imin=0;
for(int i=0;i<nf;i++)
if(abs(u[i])<abs(u[imin]))
{ imin=i;}
cout<<"imin="<<imin<<" u[imin]= "<<u[imin]<<endl;
return;
}
return;
}
int main()
{
setlocale (0, "");
	const int n=7;
	int mus[n];
	int s=0;
RandInt (-5, 5, mus, n);
Reshenie ( mus, n);
Vivod ( mus, n);
return 0;
}
геннадий 2012 вне форума Ответить с цитированием
Старый 25.12.2012, 21:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
...
void RandInt ( int range_min, int range_max, int *u,  int nf)
{
	srand ((unsigned int) time(NULL));
bool nul=false;
int mabs=0;
for(int i=0;i<nf;i++){
u[i]= rand()%(range_max-range_min)+range_min;
mabs=abs(u[i]);
//1)минимальный по модулю элемент массива;
 if(mabs<min) min=u[i];
//2)сумму модулей элементов , расположенных после первого элемента ,равному нулю.
 if(!u[i]) nul=true; if(nul) sum+=mabs
}
cout<<endl;
return;
}
...
Цитата:
3)Преобразовать массив таким образом , чтобы в первой его половине распологались элементы , стоявшее в четных позициях , а во второй половине - элементы , стоявшее в нечетных позициях.
Код:
for(int i=0;i<nf/2;i++){
 int k=a[i];
 a[i]=a[i+i+1];
 a[i+i+1]=k;
}
Последнее с потолка, возможны ошибки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2012, 21:35   #3
геннадий 2012
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
По умолчанию

[QUOTE=Stilet;1157721]
Код:
...
void RandInt ( int range_min, int range_max, int *u,  int nf)
{
	srand ((unsigned int) time(NULL));
bool nul=false;
int mabs=0;
for(int i=0;i<nf;i++){
u[i]= rand()%(range_max-range_min)+range_min;
mabs=abs(u[i]);
//1)минимальный по модулю элемент массива;
 if(mabs<min) min=u[i];
//2)сумму модулей элементов , расположенных после первого элемента ,равному нулю.
 if(!u[i]) nul=true; if(nul) sum+=mabs
}
cout<<endl;
return;
}
...
Извините, не совсем понял.
А обязательно эту функцию вставлять в ф-ию рандомизаций.
Для чего нужны mabs и nul ?
геннадий 2012 вне форума Ответить с цитированием
Старый 25.12.2012, 21:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
обязательно эту функцию вставлять в ф-ию рандомизаций.
Нет. Просто чтоб код был меньше можно прямо при вводе нового элемента массива проводить вычисления.
Цитата:
Для чего нужны mabs и nul ?
mabs - это типа заглушки чтоб вычисление модуля не делалось часто
nul - это триггер. Первый нулевой элемент перещелкивает его заставляя следующий оператор включаться на суммированиие.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2012, 21:54   #5
геннадий 2012
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нет. Просто чтоб код был меньше можно прямо при вводе нового элемента массива проводить вычисления.

mabs - это типа заглушки чтоб вычисление модуля не делалось часто
nul - это триггер. Первый нулевой элемент перещелкивает его заставляя следующий оператор включаться на суммированиие.
Я новичок в программировании , не могли бы вы написать программу подробно , чтобы сумма модулей элементов , расположенных после первого элемента ,равному нулю была отдельной ф-ией и желательно не используя при этом логический тип данных.

Просто в данном случае для меня важно не кол-во строк в коде, важно чтобы я сам понимал код и в дальнейшем смог сам написать подобные программы....
геннадий 2012 вне форума Ответить с цитированием
Старый 25.12.2012, 22:04   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
важно чтобы я сам понимал код
Хорошо. Выдели if(mabs<min) min=u[i]; в отдельную функцию, учитывая что mabs=abs(u[i]);
Цикл оставь такой же.
Тоже самое - выдели if(!u[i]) nul=true; if(nul) sum+=mabs с таким же циклом.
Писать тебе все не буду дабы ты сам понимал код

abs() - функция получения модуля числа.
if(!u[i]) эквивалентно if(u[i]==0)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2012, 22:18   #7
геннадий 2012
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Хорошо. Выдели if(mabs<min) min=u[i]; в отдельную функцию, учитывая что mabs=abs(u[i]);
Цикл оставь такой же.
Тоже самое - выдели if(!u[i]) nul=true; if(nul) sum+=mabs с таким же циклом.
Писать тебе все не буду дабы ты сам понимал код

abs() - функция получения модуля числа.
if(!u[i]) эквивалентно if(u[i]==0)
Код:
void Novaya ( int *u , int nf, int sum, int mabs)
for(int i=0;i<nf;i++)
{
mabs=abs(u[i]);
 if(mabs<min) 
min=u[i];
if(u[i]==0) 
{sum+=mabs}
return;
}
по-моему я написал какой-то бред =((

Последний раз редактировалось геннадий 2012; 25.12.2012 в 22:21.
геннадий 2012 вне форума Ответить с цитированием
Старый 25.12.2012, 22:22   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

return из цикла убери.
int mabs в параметрах не нужен. Пиши уж int min туда если хочется минимум выдернуть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2012, 22:26   #9
геннадий 2012
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
return из цикла убери.
int mabs в параметрах не нужен. Пиши уж int min туда если хочется минимум выдернуть.
Код:
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;
}
c int mabs согласен, но return то во всех ф-иях нужен вроде.
геннадий 2012 вне форума Ответить с цитированием
Старый 25.12.2012, 22:58   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
return то во всех ф-иях нужен вроде.
Не во всех, и я не предлагаю от него избавится.
Я либо плохо вижу либо вижу что он внутри {} цикла, при все этом у функции отсутствует }
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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