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

Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2; - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
ashta
6 / 6 / 1
Регистрация: 28.08.2012
Сообщений: 65
29.12.2012, 16:25     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2; #1
Дан массив целых чисел из 50 элементов.
Все элементы кратные 10 заменить 0;
Все нечетные элементы удвоить, а четные уменьшить на 2;

Как правильно заменить кратные 10 на 0? Заранее спасибо.

Вот мое решение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const int size=10;
int ar[size]={22,56,96,40,13,65,78,30,58,45};
 
for (int i=0; i<size;i++)
{
    if (ar[i]%10==0)//Все элементы кратные 10 заменить 0;
        cout<<0;
}
for (int i=0; i<size; i++)
{
    if (ar[i]%2!=0)
        ar[i]*=ar[i];//Все нечетные элементы удвоить
}
for (int i=0; i<size; i++)
{
    if (ar[i]%2==0)
        ar[i]-=2;//четные уменьшить на 2;
 
 
cout<<ar[i]<<",";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2012, 16:25     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2;
Посмотрите здесь:

C++ Дан массив.Все положительные элементы уменьшить на количество отрицательных элементов. Осуществить сдвиг вправо
Все отрицательные элементы массива уменьшить в двое, а все нулевые элементы заменить на... C++
C++ все четные эл-ты заменить на их квадраты, а нечетные удвоить (переделать с указателями)
C++ Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец массива - все нечетные
Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец массива - все нечетные C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Izaron
7 / 6 / 1
Регистрация: 29.12.2012
Сообщений: 41
29.12.2012, 16:30     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2; #2
Так?

C++
1
2
3
4
for (int i=0; i<size;i++)
{
    if (ar[i]%10==0) ar[i]=0;
}
ashta
6 / 6 / 1
Регистрация: 28.08.2012
Сообщений: 65
29.12.2012, 16:36  [ТС]     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2; #3
Цитата Сообщение от Izaron Посмотреть сообщение
Так?

C++
1
2
3
4
for (int i=0; i<size;i++)
{
    if (ar[i]%10==0) ar[i]=0;
}
Изменила на то, как Вы предложили. Теперь выводит -2 вместо 30 и 40.
Миниатюры
Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2;  
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
29.12.2012, 16:43     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2; #4
Цитата Сообщение от ashta Посмотреть сообщение
Теперь выводит -2 вместо 30 и 40.
Сначала они стали равны 0, а потом вы сами вычли из них -2, как из всех четных чисел)
Izaron
7 / 6 / 1
Регистрация: 29.12.2012
Сообщений: 41
29.12.2012, 16:45     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2; #5
Ваша ошибка в этом:

C++
1
2
3
4
5
6
7
8
for (int i=0; i<size; i++)
{
    if (ar[i]%2==0)
        ar[i]-=2;//четные уменьшить на 2;
 
 
cout<<ar[i]<<",";
}
Там надо проверять, больше ли проверяемый элемент нуля или нет. Так как числа, кратные 10, уже обнулили, а приписать еще одну проверку, забыли, то число уменьшается еще на 2.
ashta
6 / 6 / 1
Регистрация: 28.08.2012
Сообщений: 65
29.12.2012, 16:46  [ТС]     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2; #6
Цитата Сообщение от Schizorb Посмотреть сообщение
Сначала они стали равны 0, а потом вы сами вычли из них -2, как из всех четных чисел)
Я так и поняла, а как все-таки сделать так, чтобы заменялись 0?

Добавлено через 44 секунды
Цитата Сообщение от Izaron Посмотреть сообщение
Ваша ошибка в этом:

C++
1
2
3
4
5
6
7
8
for (int i=0; i<size; i++)
{
    if (ar[i]%2==0)
        ar[i]-=2;//четные уменьшить на 2;
 
 
cout<<ar[i]<<",";
}
Там надо проверять, больше ли проверяемый элемент нуля или нет. Так как числа, кратные 10, уже обнулили, а приписать еще одну проверку, забыли, то число уменьшается еще на 2.
Спасибо!!!
Izaron
7 / 6 / 1
Регистрация: 29.12.2012
Сообщений: 41
29.12.2012, 16:49     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2; #7
Чтобы заменялось на 0 без ошибок, пиши в последний цикл это:
C++
1
2
3
4
5
6
7
8
for (int i=0; i<size; i++)
{
    if (ar[i]%2==0) if (ar[i]>0)
        ar[i]-=2;//четные уменьшить на 2;
 
 
cout<<ar[i]<<",";
}
А в первый это:
C++
1
2
3
4
for (int i=0; i<size;i++)
{
    if (ar[i]%10==0) ar[i]=0;
}
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
29.12.2012, 16:51     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2; #8
Цитата Сообщение от ashta Посмотреть сообщение
а как все-таки сделать так, чтобы заменялись 0?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for(int i = 0; i<size; i++)
{
    if (ar[i] % 10==0)
        ar[i] = 0;
        
    else if(ar[i] % 2 != 0)
        ar[i] *= ar[i];
        
    else
        ar[i] -= 2;  
 
    cout << ar[i]<<",";
        
}
Можно в одном цикле все проверить.

Добавлено через 1 минуту
Еще

C++
1
ar[i]*=ar[i];//Все нечетные элементы удвоить
Так вы не удвоите, а получите квадрат значения)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2012, 16:55     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2;
Еще ссылки по теме:

Дано двумерный массив целых чисел. Все нечетные элементы заданного массива заменить суммой номеров их строки и столбца C++
C++ Векторы. Дана последовательность целых чисел. Заменить все четные элементы на Х
C++ Массивы: все элементы, кратные 10, заменить 0, все нечетные элементы удвоить, а четные уменьшить в 2 раза

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

Или воспользуйтесь поиском по форуму:
ashta
6 / 6 / 1
Регистрация: 28.08.2012
Сообщений: 65
29.12.2012, 16:55  [ТС]     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2; #9
Всем большое спасибо!!! Все работает на ура!!!!!

Добавлено через 3 минуты
Так вы не удвоите, а получите квадрат значения)

Точно, спасибо, что заметили. Удвоить это же умножить на 2, а не на самого себя.
Yandex
Объявления
29.12.2012, 16:55     Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2;
Ответ Создать тему
Опции темы

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