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

Преобразовать массив, если в нем есть хоть один отрицательный элемент - C++

Восстановить пароль Регистрация
 
Caxap
 Аватар для Caxap
36 / 20 / 1
Регистрация: 26.06.2011
Сообщений: 173
Записей в блоге: 1
17.05.2014, 20:42     Преобразовать массив, если в нем есть хоть один отрицательный элемент #1
Прошу помочь с решением.

Даны целые массивы А[10], B[10] и значения P и Q. Каждый массив пpеобpазовать по пpавилу: если в массиве
есть хотя бы один отpицательный элемент, то все отpицательные, имеющие нечетный номеp, заменить на
значение P (для массива A) и значение Q (для массива B). В пpотивном случае массивы оставить без изменения.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2014, 20:42     Преобразовать массив, если в нем есть хоть один отрицательный элемент
Посмотрите здесь:

Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые и записать эти значения в массив B C++
Двумерный массив: определить количество столбцов, содержащих хотя бы один отрицательный элемент. C++
C++ Стеки (функция, которая удаляет из стека первый отрицательный элемент, если такой есть)
C++ Составьте программу, обнуляющую главную диагональ матрицы, если в ней найдется хотя бы один отрицательный элемент
C++ Функции (Составьте программу, обнуляющую главную диагональ квадратной матрицы, если в ней найдется хотя бы один отрицательный элемент)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Caxap
 Аватар для Caxap
36 / 20 / 1
Регистрация: 26.06.2011
Сообщений: 173
Записей в блоге: 1
21.05.2014, 06:17  [ТС]     Преобразовать массив, если в нем есть хоть один отрицательный элемент #2
Актуально.
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,190
Завершенные тесты: 1
21.05.2014, 08:16     Преобразовать массив, если в нем есть хоть один отрицательный элемент #3
C++
1
2
3
4
5
6
7
for(int i=1;i<10;i+=2)
{
   if(A[i]<0)
      A[i]=P;
   if(B[i]<0)
      B[i]=Q;
}
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
21.05.2014, 10:23     Преобразовать массив, если в нем есть хоть один отрицательный элемент #4
Как котэ коту помогу.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <ctime>
 
int main()
{
    srand(time(NULL));
    int *A = new int[10];
    int *B = new int[10];
    bool A_fl = false;
    bool B_fl = false;
    std::cout << "\nEnter P for A array: ";
    int p = 0;
    std::cin >> p;
    std::cout << "\nEnter Q for B array: ";
    int q = 0;
    std::cin >> q;
    for (int i = 0; i < 10; ++i)
    {
        A[i] =  -10 + rand()%(10 + 10);
        if (A[i] < 0) A_fl = true;
        B[i] =  -10 + rand()%(10 + 10);
        if (B[i] < 0) B_fl = true;
    }
 
    std::cout << std::endl;
    std::cout << "A array - ";
    for (int i = 0; i < 10; ++i)
        std::cout << " " << A[i]; 
 
    std::cout << std::endl;
    std::cout << "B array - ";
    for (int i = 0; i < 10; ++i)
        std::cout << " " << B[i];
 
    if (A_fl)
    for(int i = 0; i < 10; ++i)
    {
        if (A[i] < 0 && i%2 == 0)
            A[i] = p;
    }
 
    if (B_fl)
    for(int i = 0; i < 10; ++i)
    {
        if (B[i] < 0 && i%2 == 0)
            B[i] = q;
    }
    std::cout << std::endl;
    std::cout << "A array result- ";
    for (int i = 0; i < 10; ++i)
        std::cout << " " << A[i]; 
 
    std::cout << std::endl;
    std::cout << "B array resuilt - ";
    for (int i = 0; i < 10; ++i)
        std::cout << " " << B[i];
 
    system("pause >> null");
}
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,190
Завершенные тесты: 1
21.05.2014, 10:29     Преобразовать массив, если в нем есть хоть один отрицательный элемент #5
Цитата Сообщение от Тамика Посмотреть сообщение
if (A_fl)
для данной задачи такие проверки оказываются лишними, т.к.
проверка на отрицательность все равно проводится внутри цикла.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
21.05.2014, 10:33     Преобразовать массив, если в нем есть хоть один отрицательный элемент #6
Цитата Сообщение от zss Посмотреть сообщение
для данной задачи такие проверки оказываются лишними, т.к.
проверка на отрицательность все равно проводится внутри цикла.
Что?
Это флаг. Он по умолчанию фолс. Если есть хоть один отрицательный, он тру. А потом, после заполнения массива, смотрим - если тру, значит выполняем то, что нужно. В чём проблема?

Добавлено через 1 минуту
А, поняла. Просто если он фолс, то зачем лишний раз мотать цикл?
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,190
Завершенные тесты: 1
21.05.2014, 10:41     Преобразовать массив, если в нем есть хоть один отрицательный элемент #7
Цитата Сообщение от Тамика Посмотреть сообщение
Просто если он фолс, то зачем лишний раз мотать цикл?
Нет не в этом дело. Вообще определять эти флаги не надо, т.к. внутри цикла все равно есть проверка
if(A[i]<0) .....
И еще, т.к. нужны только нечетные индексы, то цикл надо идти с шагом 2
и проверка на четность тоже не понадобится.
Т.е. программа сократится очень существенно.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
21.05.2014, 10:48     Преобразовать массив, если в нем есть хоть один отрицательный элемент #8
Цитата Сообщение от zss Посмотреть сообщение
Нет не в этом дело. Вообще определять эти флаги не надо, т.к. внутри цикла все равно есть проверка
if(A[i]<0) .....
Я о том же на самом деле.
Если флаг фолс, то вообще даже не нужно начинать пробег по циклу. Просто пропустить это. Я не знаю как лучше. Может и без флагов лучше. Но мне так удобней. Потому пусть ТС уже решает. Спасибо за замечание.
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,190
Завершенные тесты: 1
21.05.2014, 10:53     Преобразовать массив, если в нем есть хоть один отрицательный элемент #9
Еще раз повторюсь. ПРИ ВВОДЕ никаких флагов определять не надо.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <ctime>
int main()
{
    srand(time(NULL));
    int A[10];
    int B[10];
    std::cout << "\nEnter P for A array: ";
    int p = 0;
    std::cin >> p;
    std::cout << "\nEnter Q for B array: ";
    int q = 0;
    std::cin >> q;
    for (int i = 0; i < 10; ++i)
    {
        A[i] =  -10 + rand()%(10 + 10);
        B[i] =  -10 + rand()%(10 + 10);
    }
 
    std::cout << std::endl;
    std::cout << "A array - ";
    for (int i = 0; i < 10; ++i)
        std::cout << " " << A[i]; 
 
    std::cout << std::endl;
    std::cout << "B array - ";
    for (int i = 0; i < 10; ++i)
        std::cout << " " << B[i];
 
    for(int i = 1; i < 10; i+=2)
    {
        if (A[i] < 0 )
            A[i] = p;
        if (B[i] < 0 )
            B[i] = q;
    }
    std::cout << std::endl;
    std::cout << "A array result- ";
    for (int i = 0; i < 10; ++i)
        std::cout << " " << A[i]; 
 
    std::cout << std::endl;
    std::cout << "B array resuilt - ";
    for (int i = 0; i < 10; ++i)
        std::cout << " " << B[i];
 
    system("pause >> null");
}
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
21.05.2014, 11:05     Преобразовать массив, если в нем есть хоть один отрицательный элемент #10
Еще раз повторюсь. ПРИ ВВОДЕ никаких флагов определять не надо.
Ок.
Caxap
 Аватар для Caxap
36 / 20 / 1
Регистрация: 26.06.2011
Сообщений: 173
Записей в блоге: 1
21.05.2014, 23:35  [ТС]     Преобразовать массив, если в нем есть хоть один отрицательный элемент #11
Почти правильно, только заменяются четные отрицательные элементы, а нужно нечетные отрицательные элементы ))
Caxap
 Аватар для Caxap
36 / 20 / 1
Регистрация: 26.06.2011
Сообщений: 173
Записей в блоге: 1
22.05.2014, 23:54  [ТС]     Преобразовать массив, если в нем есть хоть один отрицательный элемент #12
Подскажите пожалуйста, как заменить нечетные отрицательные?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 10:08     Преобразовать массив, если в нем есть хоть один отрицательный элемент
Еще ссылки по теме:

Найти ошибку! Двумерный массив, определить кол., столбцов где хоть один элемент <0 C++
C++ Преобразовать одномерный массив и найти в нем элемент
Найти произведение положительных элементов в тех столбцах, в которых есть хотя бы один отрицательный элемент C++

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

Или воспользуйтесь поиском по форуму:
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
23.05.2014, 10:08     Преобразовать массив, если в нем есть хоть один отрицательный элемент #13
Заменяются отрицательыне элементы с нечетным индексом.
1, 3, 5 , 7 ... А что Вам нужно?
Yandex
Объявления
23.05.2014, 10:08     Преобразовать массив, если в нем есть хоть один отрицательный элемент
Ответ Создать тему
Опции темы

Текущее время: 17:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru