22.12.2012, 02:47 | #1 (permalink) |
Member
Регистрация: 10.12.2012
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите разобраться с программой
Код:
#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; } |
22.12.2012, 02:47 | |
Helpmaster
Member
Регистрация: 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
|
|
|