Форум программистов, компьютерный форум CyberForum.ru

Одномерный массив более 3-х подряд идущих отрицательных элементов, заменить на максимальный элемент - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Считать вектор из файла, записать вектор в файл http://www.cyberforum.ru/cpp-beginners/thread1093341.html
Доброго времени суток. Программа должна считывать числа из заданного файла, потом записывать в другой файл вектор, в котором каждый элемент на 1 больше. Билдер dev c++ 4.9.9.5. Говорит, что не понимает что такое setw(), но и без его ничего не делает. Компилируется без setw() без ошибок, спрашивает то, что задумано, но не считывает файл. Подскажите что не так и где прочитать про звездочки(*) перед...
C++ Locale - не верное отображение символа - разделителя тысяч для чисел Объясните в чём может быть проблема символ - разделитель тысячной части в русской и украинской локали в консоли выглядит вместо пробела символом 'а'? // пример использования функции localeconv #include <iostream> // для оператора cout #include <clocale> // для функции localeconv #include <iomanip> using namespace std; ... http://www.cyberforum.ru/cpp-beginners/thread1093324.html
Наследование классов - не передается нужный параметр C++
Доброе утро всем! Встала не с той ноги и тут еще с кодом неполадки. Интересует такой вопрос - есть код PentagramGenerator *pentagram = new PentagramGenerator(v1, v2, v3, v4, v5); widget->setGeometryGenerator( pentagram); Функция setGeometryGenerator() принимает указатель на класс GeometryGenerator. А класс PentagramGenerator от него наследуется. class PentagramGenerator : public...
Как правильно выпустить проект из Visual Studio 2012 ? C++
Здравствуйте, подскажите пожалуйста как правильно выпустить проект из Visual Studio 2012 ? т.е. такая ситуация, запускаю из VS в Debug приложение работает, запускаю в ней же через Release все запускается, запускаю экзешник из папки пишет ошибку "Прекращена работа программы ..." потом пишет "Программа "..." не работает Возникшая проблема привела к прекращению работы программы. ..." как исправить...
C++ Есть ли введенное число в массиве? http://www.cyberforum.ru/cpp-beginners/thread1093286.html
нужна помощь , почти завалил сессию напишите пожалуйста программу с++ которая проверяет есть ли введенное число из клавиатуры в массиве , массив должен вводится во время роботы программы
C++ Создать файл и записать в него числа последовательности, не кратные заданному числу помогите ребят! #include "stdafx.h" #include <iostream> #include <ctime> #include <fstream> using namespace std; int main() { setlocale(LC_ALL, "rus"); подробнее

Показать сообщение отдельно
Ikol
7 / 7 / 3
Регистрация: 11.02.2012
Сообщений: 21
10.02.2014, 15:11     Одномерный массив более 3-х подряд идущих отрицательных элементов, заменить на максимальный элемент
Цитата Сообщение от Valera1984 Посмотреть сообщение
В одномерном массиве A=(a1, а2, ..., аn) все группы элементов, содержащие более 3-х подряд идущих отрицательных элементов, заменить на максимальный элемент.
Помогите разобраться ... Если в массиве попадается больше трех подряд отрицательных их надо убрать и вместо них записать один максимальный элемент..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
cout<<endl<<endl<<"MAXSIMALNII ILEMENT:";
for (int i=0; i<x; i++)
    if(a[i]>a[i_max])
        i_max=i;
        cout<< "a["<<i_max<<"] ="<<a[i_max]<<endl<<endl;
 
 
int k=0,n=0,ik=0;
for (int i=0;i<x-n;i++)
       {
        if(a[i]<0)
            {
               k++;
               ik=i;
               if (k>3) 
               {            
                      for ( int i=ik-2;a[i]<0;i++)
                                {                                   
                          for(int j=i; j<11-n;j++ )
                               
                          { a[j]=a[j+1];}
                              
                          k=0;i--;n++;
                    
                    
                              }
                a[ik-3]=a[i_max];                   
                           
               }                                      
        
        }
        
        
    if(a[i]>0){k=0;}
    }
Не совсем понял, что вы пытаетесь сделать тут, но если вы ищете максимальный элемент массива, то это будет выглядеть как-то так:

C++
1
2
3
4
5
6
cout<<endl<<endl<<"MAXSIMALNII ILEMENT:";
int max=0; //в этой переменной будет содержаться максимальное значение
for (int i=0; i<x; i++)
    if(a[i]>max)    //сравнивать нужно именно с этой переменной
        max=a[i];   //И присваивать нужно именно значение, а не индекс
        cout<< "Max = "<<max]<<endl<<endl;
Ну а сама замена примерно так(самый простой вариант)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int k=0;
for (int i=0;i<x;i++) 
       {
        if(a[i]<0)
            {
               k++;
               if (k>=3) 
               {     
                      a[j]=max;
                      x-=2;
                      for (int j=i-1;a<x;i++)
                          a[j]=a[j+2];
               }                                      
             }
        else k=0;\\В случае положительных чисел счётчик необходимо обнулять, чтобы он мог заново считать подряд идущие отрицательные числа                                   
        }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru