Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.227.107.109] |
|
Страницы: (4) [1] 2 3 ... Последняя » все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
программирую на с++, в вижл студио.
программа работает, НО... мне нужно что б когда ibeg и iend располагались рядом, вместо произведения выдавало что они соседние, или когда они равны выводилось что все элементы одинаковые, а у меня выходи произведение, причем равное единице. в чем ошибка? #include <iostream> using namespace std; int main() { setlocale (LC_ALL, "Russian"); int n, s=0, k=0; cout <<"Введите количество элементов массива"<<endl; cin >> n; int*a=new int[n]; cout<<"Введите элементы массива"<<endl; for (int i=0; i<n; i++) cin>>a[i]; cout<<"Введенный массив"<<endl; for (int i=0; i<n; i++) cout <<a[i] <<" "; // обработка массива int i, imax, imin, p=1; for (int i=0; i<n; i++) {if (a[i]>0) {s+=a[i], k++;}} for (i = imax = imin = 0; i< n; i++) { if (abs(a[i]) > abs(a[imax])) imax = i; if (abs(a[i]) < abs(a[imin])) imin = i; } cout << "\n max = " <<abs(a[imax]) <<"min = " << abs(a[imin]); int ibeg = imax < imin ? imax : imin; int iend = imax < imin ? imin : imax; cout << "\n ibeg = " << ibeg <<" iend = " << iend; for ( i= ibeg + 1; i < iend; i++) if (iend==ibeg+1){cout<<"max и min - соседние";} if(iend==ibeg){cout<<"Все элементы одинаковые";} else if (a[i] > 0) p*=a[i]; cout << "Произведение элементов массива расположенных между max и min по модулю эл.: " << p<< endl; if (k>0) cout << "Сумма положительных элементов массива: "<<s <<endl; else cout << "Положительных элементов нет"; system ("pause"); return 0; } |
Сообщ.
#2
,
|
|
|
M Используем тег [code] для добавления текста программы в пост! Устное предупреждение! Читаем правила! |
Сообщ.
#3
,
|
|
|
Цитата Chaynik @ в чем ошибка? В том, что операторы вложены друг в друга как попало. Попробуй отформатировать программу и отступы расставить, тогда возможно и сам поймёшь, что неправильно. Добавлено Конкретно, вывод сообщения о том, что они соседние оказался единственным оператором цикла, который ни разу не выполняется. |
Сообщ.
#4
,
|
|
|
Цитата amk @ У 'нашего' Чайник'а женский пол, насколько я помню. сам поймёшь <можно поставить на автоудаление> |
Сообщ.
#5
,
|
|
|
Славян а у тебя хорошая память
Добавлено amk, помоги исправить, пжл |
Сообщ.
#6
,
|
|
|
Как-то так работает, кажись:
cout << "\n ibeg = " << ibeg <<" iend = " << iend << endl; if( iend==ibeg+1 ) cout<<"max и min - соседние" << endl; else if( iend==ibeg ) cout << "Все элементы одинаковые" << endl; else { for( i=ibeg + 1; i < iend; i++) if( a[i]>0 ) p *= a[i]; cout << "Произведение элементов массива расположенных между max и min по модулю эл.: " << p<< endl; } if( k>0 ) cout << "Сумма положительных элементов массива: "<<s <<endl; else cout << "Положительных элементов нет"; system ("pause"); |
Сообщ.
#7
,
|
|
|
Славян сработалоооооо благодарю
Добавлено Chaynik то есть, получается, я не туда вставила эти два условия, поэтому они не срабатывали? Добавлено Славян то есть, получается, я не туда вставила эти два условия, поэтому они не срабатывали? |
Сообщ.
#8
,
|
|
|
Цитата Chaynik @ Ну как бы да. Понятно же, что в цикле часто проверять на 'соседнесть' как-то расточительно. то есть, получается, я не туда вставила эти два условия, поэтому они не срабатывали? Добавлено Кстати, всё чуть неверно будет работать, если ввести все элементы отрицательные. Додумайте, как сие поправить. |
Сообщ.
#9
,
|
|
|
Славян впредь буду внимательней
а может ты мне еще и с сортировкой поможешь? |
Сообщ.
#10
,
|
|
|
Сообщ.
#11
,
|
|
|
Цитата Chaynik @ Это где строки матрицы? а может ты мне еще и с сортировкой поможешь? Добавлено Цитата Chaynik @ Не, я вводил 6 элементов: -6, -5, -4, ..., -1. почему неверно?.. по моему все так и должно быть... |
Сообщ.
#12
,
|
|
|
Славян, ххмммм... надеюсь моему преподу не придет в голову ввести все отриц
Добавлено Славян, Упорядочить элементы массива по убыванию. вот условия сортировки... препод сказал разобраться самим и сделать, т.к. мы этого не проходили... побудешь моим учителем? |
Сообщ.
#13
,
|
|
|
Цитата Chaynik @ На препода надейся, а сама не ... ххмммм... надеюсь моему преподу не придет в голову ввести все отриц Цитата Chaynik @ Сомневаюсь, однако! препод сказал разобраться самим и сделать, т.к. мы этого не проходили... Ну оставляйте задание, мы посмотрим. Если не к спеху, то до завтра придумаем. Сейчас убегаю! |
Сообщ.
#14
,
|
|
|
Цитата Chaynik @ Упорядочить элементы массива по убыванию http://www.cplusplus.com/reference/algorithm/sort/ |
Сообщ.
#15
,
|
|
|
Славян, честное слово не объясняли..... а то бы сделала .. хоть начала бы...
условие написала уже "Упорядочить элементы массива по убыванию." ладно я еще сама поищу, если не соображу ... Добавлено shm, спасибо) |