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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
_Tanechka_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 48
#1

Заменить каждое число массива на расположене справа и большее заменяемого - C++

09.10.2012, 22:32. Просмотров 640. Ответов 18
Метки нет (Все метки)

Здравствуйте!
Помогите, пожалуйста, соствить алгоритм для массива
В массиве нужно заменить каждое число на другое, которое расположено справа и больше заменяемого. В противном случае заменить на ноль. т.е. если было -4 5 8 0 1 , нужно получить 8 8 0 1 0
очень нужна помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 22:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заменить каждое число массива на расположене справа и большее заменяемого (C++):

В массиве каждое число заменить на большее справа - C++
HELP PLEASE!!!!!!!!!!!! :gsorry: условие такое: в массиве заменить каждое число на другое, расположенное справа (ближайшее к...

Определить ближайшее к числу справа число, большее его самого. Стек - C++
Помогите, пожалуйста, с заданием. В строку выписан большой список действительных чисел (порядка нескольких миллионов записей). Для...

Каждое число заменить наибольшим из них - C++
Дано действительные числа a, b, c, d. Если a≤b≤c≤d, то каждое число заменить наибольшим из них; если a> b> c> d, то числа оставить без...

В строке заменить каждое число соответственным текстом - C++
С клавиатуры ввести строки что имеет и буквы и числа. Заменить каждое число соответственным числительным. Помогите.

Задача на if (Если A<=B<=C<=D, то каждое число заменить наибольшим из них...) - C++
Вот задача. Даны действительные числа A,B,C,D. Если A&lt;=B&lt;=C&lt;=D, то каждое число заменить наибольшим из них; если A&gt;B&gt;C&gt;D, то числа...

заменить каждое второе отрицательное число на половину максимума - C++
Использовать потоковые итераторы. Написать функцию outfile(), записывающую элементы контейнера в текстовый файл output.txt. Также...

18
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.10.2012, 22:36 #2
_Tanechka_, -4 5 8 0 1
Здесь 5 больше -4 и находится справа от него. Так почему мы не на него заменяем? Тогда должно получиться что-то типа 5 8 0 1 0.
0
_Tanechka_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 48
09.10.2012, 22:45  [ТС] #3
BumerangSP, неа... 8 8 0 1 0 должно быть)
это я не совсем правильно условие сформулировала..
ближайшее большее по значению расположенное справа, если так можно сказать...
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.10.2012, 22:48 #4
_Tanechka_, может, ближайшее наибольшее тогда? Т.е самое большое из всех.
1
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
09.10.2012, 22:51 #5
В любом случае тут нет ничего сложного. Все можно свести к примерно такому коду:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
    int arr[6] = {-4, 5, 8, 0, 1, 4};
    for (int i = 0; i<5; i++)
    {
        if (arr[i+1]>arr[i]) swap(arr[i+1], arr[i]);
        else arr[i] = 0;
        cout<<arr[i]<<" ";
    }
    system("pause");
    return 0;
}
1
John Prick
802 / 735 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
09.10.2012, 22:53 #6
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
#include <iostream>
#include <algorithm>
 
const int N = 10;
 
int getRand(void) { return rand() % 10; }
 
int main(void)
{
    setlocale(LC_ALL, "Russian");
 
    int Array[N];
    std::generate(Array, Array + N, getRand);
    std::cout << "Исходный массив: ";
    std::copy(Array, Array + N, std::ostream_iterator<int>(std::cout, " "));
 
    int slip = 0;
    while (slip < N)
    {
        int * Max = std::max_element(Array + slip, Array + N);
        std::fill(Array + slip, Max, *Max);
        slip = std::distance(Array, Max) + 1;
        *Max = 0;
    }
    std::cout << '\n' << "Преобразованный массив: ";
    std::copy(Array, Array + N, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    system("pause");
    return 0;
}
1
_Tanechka_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 48
09.10.2012, 23:09  [ТС] #7
BumerangSP, мои великие слова были заменены банальными, ну что ж... можно и так

Добавлено через 9 минут
yuron_477, спасибо, но не совсем так...
ваша программа выводит 5 8 0 1 4, а должна 8 8 0 4 4 0

Добавлено через 4 минуты
John Prick, у меня не компилируется ваш код
0
John Prick
802 / 735 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
09.10.2012, 23:12 #8
Цитата Сообщение от _Tanechka_ Посмотреть сообщение
John Prick, у меня не компилируется ваш код
Что пишет? В какой среде работаете?
1
_Tanechka_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 48
09.10.2012, 23:17  [ТС] #9
John Prick, Visual C++
вот что говорит....
1>------ Построение начато: проект: t_3_1, Конфигурация: Debug Win32 ------
1>Построение начато 09.10.2012 22:07:47.
1>InitializeBuildStatus:
1> Обращение к "Debug\t_3_1.unsuccessfulbuild".
1>ClCompile:
1> Z_1.cpp
1>c:\users\admin\desktop\t_3_1\t_3_1\z_1.cpp(16): error C2039: ostream_iterator: не является членом "std"
1>c:\users\admin\desktop\t_3_1\t_3_1\z_1.cpp(16): error C2065: ostream_iterator: необъявленный идентификатор
1>c:\users\admin\desktop\t_3_1\t_3_1\z_1.cpp(16): error C2062: тип "int" не требуется
1>c:\users\admin\desktop\t_3_1\t_3_1\z_1.cpp(27): error C2039: ostream_iterator: не является членом "std"
1>c:\users\admin\desktop\t_3_1\t_3_1\z_1.cpp(27): error C2065: ostream_iterator: необъявленный идентификатор
1>c:\users\admin\desktop\t_3_1\t_3_1\z_1.cpp(27): error C2062: тип "int" не требуется
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.84
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
John Prick
802 / 735 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
09.10.2012, 23:22 #10
Странно конечно, но попробуйте подключить файл
C++
1
#include <iterator>
Если не поможет, замените так:
C++
1
2
3
4
std::copy(Array, Array + N, std::ostream_iterator<int>(std::cout, " ")); // уберите
// вместо этого вставьте
for (int i = 0; i < N; ++i)
   std::cout << Array[i] << " ";
1
_Tanechka_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 48
09.10.2012, 23:26  [ТС] #11
John Prick, работает!!!!! большое-большое спасибо, вы меня очень выручили)
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
09.10.2012, 23:27 #12
На всякий случай без stl:
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
#include <iostream>
#include <ctime>
int main(void)
{
 srand(time(NULL));
 const int n = 10; //размер массива   
 int* a = new int [n];
 int m=0;
 for (int i=0; i<n; i++)
   std::cout<<(a[i]=rand()%11)<<" ";
 for (int i=0; i<n; i++)
  { 
    int m=i;
    for (int j=i+1; j<n; j++) 
    if (a[i]<a[j])
     {
      a[i]=a[j];
       m=j; 
     }
      if (i==m)
       a[m]=0;    
  } 
 std::cout<<std::endl;
 for (int i=0; i<n; i++)
   std::cout<<a[i]<<" "; 
 system("pause");
 return 0;
}
1
_Tanechka_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 48
09.10.2012, 23:31  [ТС] #13
BumerangSP, и вам огромное спасибо!
0
John Prick
802 / 735 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
09.10.2012, 23:34 #14
_Tanechka_, ну если вам это всё преподу какому показывать, то возможно вариант без использования стандартной библиотеки (это те функции, которые начинаются с std:: ) вам подойдёт лучше. Обычно преподы хотят, чтобы "всё сделал сам", а тут половину работы за вас сделала стандартная библиотека
1
_Tanechka_
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 48
10.10.2012, 00:01  [ТС] #15
BumerangSP, а если ближайшее большее?
0
10.10.2012, 00:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2012, 00:01
Привет! Вот еще темы с ответами:

Разбить строку на слова и заменить каждое на соответствующее ему число - C++
Добрый день, помогите пожалуйста реализовать одну программку. У меня есть несколько слов и каждому слову соответствует какое-то...

Даны действительные числа A, B, C, D. Каждое число заменить наибольшим из них, если выполняется условие - C++
Даны действительные числа A,B,C,D. Если A&lt;=B&lt;=C&lt;=D, то каждое число заменить наибольшим из них; если A&gt;B&gt;C&gt;D, то числа оставить без...

Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа - C++
При решении использовать масив в файле)

Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа - C++
Помогите пожалуйста. Нужно Объявить массив целых чисел и заполнить его случайными значениями. Размерность масссива: 100 Диапазон...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru