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

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

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

Все четные элементы, стоящие левее минимального, уменьшить в 2 раза - C++

19.09.2013, 17:06. Просмотров 790. Ответов 10
Метки нет (Все метки)

Здравствуйте, написала код к задаче "В массиве все четные элементы, стоящие левее минимального, уменьшить в 2 раза.
Пример: из массива A[5]: 3 2 1 0 4 должен получиться массив 3 1 1 0 4.", но код не работает. Помогите найти ошибку.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const int N=5;
int i,A[N],y,r,min;
cout<<"Vvedite 5 chisel"<<endl;
for (i=0;i<5;i++){
cout<<"A["<<i<<"]="<<" ";
cin>>A[i];}
for (i=0;i<N;i++){
cout<<A[i]<<" ";}  
 
min=A[0];
r=0;
for (i=0; i<N; i++) {if (A[i]<min) {min=A[i];} {r=min;}}
 
for (i=0; i>r; --i) {if (i%2!=0) {A[i]=A[i]/2;} } 
cout<<A[i]<<" ";
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 17:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Все четные элементы, стоящие левее минимального, уменьшить в 2 раза (C++):

В массив В перенести все элементы массива А, стоящие левее минимального элемента - C++
Ввести массив А. В массив В перенести все элементы массива А, стоящие левее минимального элемента, и имеющие ...

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

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

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

Все элементы заданного одномерного массива уменьшить в 2 раза - C++
1. Все элементы заданного одномерного массива А, начиная с первого по порядку положительного четного элемента, уменьшить в 2...

Все нулевые элементы матрицы увеличить на 5, ненулевые уменьшить в 2 раза - C++
В двумерном массиве (3х3) все нулевые элементы увеличить на 5 , ненулевые уменьшить в 2 раза .Пожалуйста проверьте программу и исправьте...

10
Ouroboros-SK
60 / 60 / 21
Регистрация: 08.09.2013
Сообщений: 187
Записей в блоге: 1
19.09.2013, 17:44 #2
Попробуйте 12-ю строчку заменить на:
C++
1
for (i=0; i<N; i++) {if (A[i]<min) {min=A[i];} {r=i;}
0
Shadow77
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 12
19.09.2013, 19:46  [ТС] #3
Не помогло... Он постоянно выдает лишь первый элемент массива
0
Ouroboros-SK
60 / 60 / 21
Регистрация: 08.09.2013
Сообщений: 187
Записей в блоге: 1
19.09.2013, 20:17 #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
#include <iostream>
#include <string>
 
int main()
{
    const int N = 5;
    int y, r, min;
    int A[N] = { 3, 2, 1, 0, 4};
 
    for (int i = 0; i < N; i++){
        std::cout << A[i] << " ";
    }
    std::cout << std::endl;
 
    min = A[0];
    r = 0;
    for (int i = 0; i < N; i++){
        if (A[i] < min){
            min = A[i];
            r = i;
        }
    }
 
    for (int i = r - 1; i > 0; i--){
        if ( i % 2 != 0){
            A[i] = A[i] / 2;
        }
    }
 
    for (int i = 0; i < N; i++)
        std::cout << A[i] << " ";
 
    return 0;
}
1
Shadow77
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 12
19.09.2013, 20:44  [ТС] #5
Большое спасибо! Постараюсь поработать над стилем программирования.
0
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
20.09.2013, 13:35 #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
32
33
#include<iostream>
using namespace std;
int main()
{
    int i,t,n,a[n],min;
    cout << "Length of an array: ";
    cin >> n;
    cout << "Enter the array" << endl;
    for(i=0; i<n; i++)
    {
        cout << "A[" << i << "]: ";
        cin >> a[i];
    }
    cout << "You enter: ";
    for(i=0; i<n; i++) cout << a[i] << ' ';
    cout << endl;
    min = a[0];
    t=0;
    for(i=0; i<n; i++)
    {
        if(min > a[i])
        {
        min = a[i];
        t = i;
        } 
    }
    for(i=0; i<n; i++)
    {
        if(i<t && a[i]%2==0) cout << a[i]/2 << ' ';
        else cout << a[i] << ' ';
    }
    return 0;
}
Добавлено через 9 минут
Цитата Сообщение от Shadow77 Посмотреть сообщение
В массиве все четные элементы, стоящие левее минимального, уменьшить в 2 раза.
Если под минимальным имееться ввиду минимальный четный элемент массива, то 21 строчку заменить на
C++
1
 if(min > a[i] && a[i]%2==0)
0
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
20.09.2013, 13:44 #7
необязательно использовать две переменных для поиска минимального элемента в массиве
достаточно запомнить его индекс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    const int N = 5;
    int A[N];
 
    cout << "Vvedite 5 чисел: ";
    for (int i=0; i<5; i++)
        cin >> A[i];
 
    int index = 0;  // индекс с минимальным элементом в массиве
    for (int i=1; i<5; i++)
        if (A[i] < A[index])
            index = i;
 
    cout << "индекс минимального элемента " << index << endl
         << "значение этого элемента " << A[index] << endl;
         
    _getch();
    return 0;
}
0
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
20.09.2013, 13:57 #8
Цитата Сообщение от _ Посмотреть сообщение
необязательно использовать две переменных для поиска минимального элемента в массиве
Ну я пока совсем дилетант, так что мне можно
Ну а вообще, приму к сведению, критика это хорошо.
0
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
20.09.2013, 14:59 #9
Цитата Сообщение от Drusha Посмотреть сообщение
Ну я пока совсем дилетант, так что мне можно
да здесь нет ничего сложного. вот смотрите, берем переменную index Это будет позиция минимального элемента. А если мы будем знать чему она равна, то можно легко получить значение, которое записано в этой позиции.

index - индекс минимального элемента
A[index] - это то значение, которое записано в массиве по номеру index

получается что одним выстрелом убиваем сразу двух зайцев
1
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
20.09.2013, 15:07 #10
C++
1
for (i=0; i<N; i++) {if (A[i]<min) {min=A[i];} {r=min;}}
на

C++
1
2
3
4
5
6
7
8
for (i=0; i<N; i++) 
{
if (A[i]<min) 
{
min=A[i];
 r=i;
}
}
и зедсь:

C++
1
for (i=0; i>r; --i) {if (i%2!=0) {A[i]=A[i]/2;} }
на

C++
1
2
3
4
5
for (i=0; i<r; i++) 
{
if (i%2!=0) 
A[i]=A[i]/2;
 }
в 14 строчке почему --i был и i=0 должно быть i>r, когда r 4-ый элемент?
0
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
20.09.2013, 16:52 #11
Цитата Сообщение от _ Посмотреть сообщение
да здесь нет ничего сложного
Я и в начале все понял, когда Вы сделали замечание, я начал учить два месяца назад, но схватываю все на лету, пока ничего тяжелого не вижу. Но спасибо за разъяснения.
0
20.09.2013, 16:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2013, 16:52
Привет! Вот еще темы с ответами:

Вывести все четные элементы массива стоящие на не четных местах - C++
Вводится массив из 10 элементов. Вывести все четные элементы массива стоящие на четных местах

Уменьшить все четные элементы матрицы на значение максимального элемента - C++
В с++ составить программу, в которой: 1) организовать ввод квадратной матрицы размера n*n из целых чисел 2) уменьшить все четные...

Все элементы массива, стоящие после минимального, заменить нулями - C++
Все элементы массива, стоящие после минимального, заменить нулями Написал программу. Но не пашет. Где-то есть ошибки. Помогите исправить....

Дан массив A[N]. Все положительные элементы уменьшить на значение минимального элемента - C++
Здравствуйте! Помогите немного доделать вот такую задачку: Дано: ...


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

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

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