Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 22.12.2012, 02:47   #1 (permalink)
bulding
Member
 
Регистрация: 10.12.2012
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Unhappy Помогите разобраться с программой

Из массива X(N) все положительные элементы записать в массив Y(K), а все отрицательные элементы - в массив Z(m).Найти в каждом массиве максимальный по модулю элемент.Удалить в каждом массиве первый элемент. В программе написать функцию формирования массивов Y и Z, определения максимального по модулю элемента,удаление элемента.Мой друг написал ее,а комментарии нет.Помогите разобраться.С++

Код:
#include <iostream>
#include <iomanip>
using namespace std;
int maximum(int *arr, int size)
{
   int max;
   max = arr[0];
   for(int i=0; i<size; i++)
    {
        if(arr[i]>max)
        {
            max = arr[i];
        }
    }
  return max;
}
void deleted(int *arr,int size)
{
	int i;
	for(i=0;i<size-1;i++)
	{
		arr[i]=arr[i+1];

	}
	--size;
	cout<<"New";
	for(i=0;i<size;i++)
		cout<<setw(2)<<arr[i];

	cout<<endl;
}

void run(const int *begin, const int *end, int *pos, int *neg, int **p_pos, int **p_neg)
{
   *p_pos = pos;
   *p_neg = neg;

   for(const int* p = begin; p != end; ++p)
   {
      if(*p > 0) **p_pos = *p, ++(*p_pos);
      else if(*p < 0) **p_neg = *p, ++(*p_neg);
   }
}

int main()
{
   const int n = 5;
   int t=0,u=0;

   int arr[n];

   for(int i=0;i<n;i++)
   {cout<<"Array=";
   cin>>arr[i];}
   int pos[n];
   int neg[n];

   int *p_pos, *p_neg;

   run(arr, arr + n, pos, neg, &p_pos, &p_neg);

   cout<< "positives: "<<endl;
   for(int i=0;i<n;i++)
	   if(pos[i]>0) t++;
   for(int i=0;i<n;i++)
	   if(pos[i]<0) u++;
   for(const int* p = pos; p != p_pos; ++p)
      cout<<*p<<"\t";

      cout<<"MaxElement= "<<maximum(pos,n);
	  cout<<endl;
	  cout<<"New Massiv= ";deleted(pos,t);
	  cout<<endl;

   cout << "negatives: "<<endl;
   for(const int* p = neg; p != p_neg; ++p)
      cout<<*p<<"\t";

      cout<<"MaxElement= "<<maximum(neg,n);
	  cout<<endl;
	  cout<<"New Massiv= ";deleted(neg,u);
      cout<<endl;

	system ("pause");
    return 0;
}
bulding вне форума   Ответить с цитированием

Старый 22.12.2012, 02:47
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Посмотрите, может быть в обсуждаемых топиках проблема уже решена

Помогите с программой
Помогите с программой
Разобраться с программой табулирования сложной функции
Помогите с программой

Старый 22.12.2012, 03:33   #2 (permalink)
Николай_С
Радиоинженер
 
Аватар для Николай_С
 
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,308
Записей в дневнике: 7
Сказал(а) спасибо: 292
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
По умолчанию

Написать-то друг написал, только ошибок насажал...
Первая грубейшая ошибка в функции maximum() - числа массива используются "как есть", хотя, в задании сказано, что их надо брать по модулю. Вторая ошибочка - цикл нужно начинать не с 0, а с 1. Какой смысл сравнивать нулевой элемент массива сам с собой? Да и пременную i было бы неплохо объявить, а то компилятор заругается...

Описание простое:
- функция maximum() должна возвращать максимальное значение ПО МОДУЛЮ преданного в неё массива.
- подпрограмма deleted() удаляет первый элемент со здвигом массива. Если честно, я бы не стал вообще ничего удалять и сдвигать. Достаточно просто увеличить на единицу указатель на массив.
- подпрограмма run() разделяет исходный массив на два по заданному условию. Только вот непонятно, что она должна делать с нулевыми значениями? В том виде, что есть, она их просто игнорирует.
- функция main() является основной программой - она объявляет и заполняет массивы, запускает другие подпрограммы и функции.

Вот как-то-так....
Николай_С вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 15:55.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.