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

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

Войти
Регистрация
Восстановить пароль
 
Caxap
37 / 21 / 2
Регистрация: 26.06.2011
Сообщений: 184
Записей в блоге: 1
#1

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

17.05.2014, 20:42. Просмотров 636. Ответов 12
Метки нет (Все метки)

Прошу помочь с решением.

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

Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые и записать эти значения в массив B - C++
Задана матрица Z(5,4). Найти в каждой строке, если там есть отрицательный элемент, среднее арифметическое всех элементов, исключая нулевые...

Найти ошибку! Двумерный массив, определить кол., столбцов где хоть один элемент <0 - C++
Все работет отлично но при вводе ,допустим, матрицы с кол., строк 4 и кол., столбцов 5. И минимальном -5 и максимальном 5 элемента массива....

Найти произведение положительных элементов в тех столбцах, в которых есть хотя бы один отрицательный элемент - C++
Помогите, пожалуйста! В среде Visual Studio 2013 написать консольную программу на языке C++ с использованием двумерного динамического...

Преобразовать одномерный массив и найти в нем элемент - C++
Здравствуйте. Помогите пожалуйста в решении следующей задачи. В одномерном массиве состоящем из n вещественных элементов вычислить: ...

Удалить из списка последний отрицательный элемент, если такой есть (линейные списки) - C++
Помогите, пожалуйста. Нужно, написать программу, которая удаляет из списка последний отрицательный элемент, если такой есть.

Составьте программу, обнуляющую главную диагональ матрицы, если в ней найдется хотя бы один отрицательный элемент - C++
Дан двумерный массив А(M, M) в виде квадратной матрицы. Составьте про-грамму, обнуляющую главную диагональ матрицы, если в ней найдется...

12
Caxap
37 / 21 / 2
Регистрация: 26.06.2011
Сообщений: 184
Записей в блоге: 1
21.05.2014, 06:17  [ТС] #2
Актуально.
0
zss
Модератор
Эксперт С++
6695 / 6257 / 2085
Регистрация: 18.12.2011
Сообщений: 16,337
Завершенные тесты: 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;
}
1
Тамика
Котовчанин
918 / 462 / 145
Регистрация: 16.02.2010
Сообщений: 3,259
Записей в блоге: 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");
}
1
zss
Модератор
Эксперт С++
6695 / 6257 / 2085
Регистрация: 18.12.2011
Сообщений: 16,337
Завершенные тесты: 1
21.05.2014, 10:29 #5
Цитата Сообщение от Тамика Посмотреть сообщение
if (A_fl)
для данной задачи такие проверки оказываются лишними, т.к.
проверка на отрицательность все равно проводится внутри цикла.
2
Тамика
Котовчанин
918 / 462 / 145
Регистрация: 16.02.2010
Сообщений: 3,259
Записей в блоге: 27
21.05.2014, 10:33 #6
Цитата Сообщение от zss Посмотреть сообщение
для данной задачи такие проверки оказываются лишними, т.к.
проверка на отрицательность все равно проводится внутри цикла.
Что?
Это флаг. Он по умолчанию фолс. Если есть хоть один отрицательный, он тру. А потом, после заполнения массива, смотрим - если тру, значит выполняем то, что нужно. В чём проблема?

Добавлено через 1 минуту
А, поняла. Просто если он фолс, то зачем лишний раз мотать цикл?
0
zss
Модератор
Эксперт С++
6695 / 6257 / 2085
Регистрация: 18.12.2011
Сообщений: 16,337
Завершенные тесты: 1
21.05.2014, 10:41 #7
Цитата Сообщение от Тамика Посмотреть сообщение
Просто если он фолс, то зачем лишний раз мотать цикл?
Нет не в этом дело. Вообще определять эти флаги не надо, т.к. внутри цикла все равно есть проверка
if(A[i]<0) .....
И еще, т.к. нужны только нечетные индексы, то цикл надо идти с шагом 2
и проверка на четность тоже не понадобится.
Т.е. программа сократится очень существенно.
1
Тамика
Котовчанин
918 / 462 / 145
Регистрация: 16.02.2010
Сообщений: 3,259
Записей в блоге: 27
21.05.2014, 10:48 #8
Цитата Сообщение от zss Посмотреть сообщение
Нет не в этом дело. Вообще определять эти флаги не надо, т.к. внутри цикла все равно есть проверка
if(A[i]<0) .....
Я о том же на самом деле.
Если флаг фолс, то вообще даже не нужно начинать пробег по циклу. Просто пропустить это. Я не знаю как лучше. Может и без флагов лучше. Но мне так удобней. Потому пусть ТС уже решает. Спасибо за замечание.
1
zss
Модератор
Эксперт С++
6695 / 6257 / 2085
Регистрация: 18.12.2011
Сообщений: 16,337
Завершенные тесты: 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");
}
1
Тамика
Котовчанин
918 / 462 / 145
Регистрация: 16.02.2010
Сообщений: 3,259
Записей в блоге: 27
21.05.2014, 11:05 #10
Еще раз повторюсь. ПРИ ВВОДЕ никаких флагов определять не надо.
Ок.
1
Caxap
37 / 21 / 2
Регистрация: 26.06.2011
Сообщений: 184
Записей в блоге: 1
21.05.2014, 23:35  [ТС] #11
Почти правильно, только заменяются четные отрицательные элементы, а нужно нечетные отрицательные элементы ))
0
Caxap
37 / 21 / 2
Регистрация: 26.06.2011
Сообщений: 184
Записей в блоге: 1
22.05.2014, 23:54  [ТС] #12
Подскажите пожалуйста, как заменить нечетные отрицательные?
0
Тамика
Котовчанин
918 / 462 / 145
Регистрация: 16.02.2010
Сообщений: 3,259
Записей в блоге: 27
23.05.2014, 10:08 #13
Заменяются отрицательыне элементы с нечетным индексом.
1, 3, 5 , 7 ... А что Вам нужно?
0
23.05.2014, 10:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 10:08
Привет! Вот еще темы с ответами:

Стеки (функция, которая удаляет из стека первый отрицательный элемент, если такой есть) - C++
Здравствуйте! Помогите пожалуйста разработать функцию, которая удаляет из стека первый отрицательный элемент, если такой есть. Если не...

Массив: Определить количество строк, содержащих хотя бы один отрицательный элемент... - C++
Не могли бы вы мне подсказать, как исправить этот код.. Ошибка из-за указателя, а как исправить не знаю(( Задание такое: Дана ...

Функции (Составьте программу, обнуляющую главную диагональ квадратной матрицы, если в ней найдется хотя бы один отрицательный элемент) - C++
Дан двумерный массив А(M, M) в виде квадратной матрицы. Составьте программу, обнуляющую главную диагональ матрицы, если в ней найдется хотя...

Двумерный массив: определить количество столбцов, содержащих хотя бы один отрицательный элемент. - C++
Работа с двумерным динамическим массивом. Для целочисленного двумерного массива (размерность массива задаётся пользователем),...


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

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

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