На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (4) [1] 2 3 ... Последняя » все  ( Перейти к последнему сообщению )  
> Произведение эл-ов массива расположенных между max и min эл.
    программирую на с++, в вижл студио.
    программа работает, НО...
    мне нужно что б когда ibeg и iend располагались рядом, вместо произведения выдавало что они соседние, или когда они равны выводилось что все элементы одинаковые, а у меня выходи произведение, причем равное единице. в чем ошибка?

    ExpandedWrap disabled
      #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;
      }
    Сообщение отредактировано: Qraizer -
      M
      Используем тег [code] для добавления текста программы в пост! Устное предупреждение! Читаем правила!
        Цитата Chaynik @
        в чем ошибка?

        В том, что операторы вложены друг в друга как попало.
        Попробуй отформатировать программу и отступы расставить, тогда возможно и сам поймёшь, что неправильно.

        Добавлено
        Конкретно, вывод сообщения о том, что они соседние оказался единственным оператором цикла, который ни разу не выполняется.
          Цитата amk @
          сам поймёшь
          У 'нашего' Чайник'а женский пол, насколько я помню. :blush:

          <можно поставить на автоудаление>
            Славян а у тебя хорошая память ;)

            Добавлено
            amk, помоги исправить, пжл
              Как-то так работает, кажись:
              ExpandedWrap disabled
                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");
                Славян сработалоооооо :victory: благодарю :thanks:

                Добавлено
                Chaynik то есть, получается, я не туда вставила эти два условия, поэтому они не срабатывали?

                Добавлено
                Славян то есть, получается, я не туда вставила эти два условия, поэтому они не срабатывали?
                  Цитата Chaynik @
                  то есть, получается, я не туда вставила эти два условия, поэтому они не срабатывали?
                  Ну как бы да. Понятно же, что в цикле часто проверять на 'соседнесть' как-то расточительно. ;)

                  Добавлено
                  Кстати, всё чуть неверно будет работать, если ввести все элементы отрицательные. Додумайте, как сие поправить. :yes-sad:
                    Славян впредь буду внимательней :jokingly:
                    а может ты мне еще и с сортировкой поможешь?
                      Славян, почему неверно?.. по моему все так и должно быть...
                      Прикреплённая картинка
                      Прикреплённая картинка
                        Цитата Chaynik @
                        а может ты мне еще и с сортировкой поможешь?
                        Это где строки матрицы?

                        Добавлено
                        Цитата Chaynik @
                        почему неверно?.. по моему все так и должно быть...
                        Не, я вводил 6 элементов: -6, -5, -4, ..., -1. ;)
                          Славян, ххмммм... надеюсь моему преподу не придет в голову ввести все отриц :facepalm:

                          Добавлено
                          Славян, Упорядочить элементы массива по убыванию. вот условия сортировки...
                          препод сказал разобраться самим и сделать, т.к. мы этого не проходили... побудешь моим учителем? :D :rolleyes:
                            Цитата Chaynik @
                            ххмммм... надеюсь моему преподу не придет в голову ввести все отриц
                            На препода надейся, а сама не ... :yes:
                            Цитата Chaynik @
                            препод сказал разобраться самим и сделать, т.к. мы этого не проходили...
                            Сомневаюсь, однако! :blush:
                            Ну оставляйте задание, мы посмотрим. Если не к спеху, то до завтра придумаем. Сейчас убегаю! ;)
                              Цитата Chaynik @
                              Упорядочить элементы массива по убыванию

                              http://www.cplusplus.com/reference/algorithm/sort/
                                Славян, честное слово не объясняли..... а то бы сделала .. хоть начала бы...
                                условие написала уже "Упорядочить элементы массива по убыванию."
                                ладно я еще сама поищу, если не соображу ...

                                Добавлено
                                shm, спасибо)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1537 ]   [ 18 queries used ]   [ Generated: 15.05.24, 06:03 GMT ]