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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
#1

В одномерном массиве вычислить минимальный по модулю элемент массива - C++

12.01.2013, 21:07. Просмотров 3154. Ответов 10
Метки нет (Все метки)

В одномерном массиве, состоящем из n целых элементов, вычислить:
1) минимальный по модулю элемент массива;
2) сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине – элементы, стоявшие в нечетных позициях и распечатать их адреса.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 21:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В одномерном массиве вычислить минимальный по модулю элемент массива (C++):

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

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

В одномерном массиве вычислить минимальный элемент массива - C++
Не получается задачка: в одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить минимальный элемент...

В одномерном массиве, состоящем из n элементов массива, вычислить минимальный элемент массива - C++
помогите

В одномерном массиве, состоящем из n вещественных элементов вычислить минимальный элемент массива и сумму элементов массива. [CPP] - C++
В одномерном массиве, состоящем из n вещественных элементов вычислить минимальный элемент массива и сумму элементов массива, расположенных...

В одномерном массиве вычислить минимальный элемент - C++
В одномерном массиве, состоящем из п вещественных элементов, вычислить: - минимальный элемент массива; - сумму элементов массива,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
12.01.2013, 21:53 #2
Использовать вспомогательный массив можно?
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
12.01.2013, 22:04  [ТС] #3
да можно
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
12.01.2013, 23:52 #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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* В одномерном массиве, состоящем из n целых элементов, вычислить:
1) минимальный по модулю элемент массива;
2) сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
3) Преобразовать массив таким образом, чтобы в первой его половине располагались элементы,
стоявшие в четных позициях, а во второй половине – элементы, стоявшие в нечетных 
позициях и распечатать их адреса. */
 
#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
#define SIZE 100 // размер массива
 
int main()
{
    // Генерация массива случайными значениями
    int **arr = new int*[2];
    register size_t i;
 
    srand(time(0));
    cout << "We have array:\n";
    arr[0] = new int[SIZE];
    arr[1] = new int[SIZE];
    for (i = 0; i < SIZE; ++i) {
        arr[0][i] = i;
        cout << (arr[1][i] = (i % 2) ? (rand() % 100) * -1 : rand() % 100);
        // Отобразим по 10 элементов в столбце
        cout << ((i % 10 == 9) ? '\n' : ' ');
    }
    cout << '\n';
    // Найдём минимальный элемент по модулю (индекс)
    int abs_min;
    for (i = 1, abs_min = 0; i < SIZE; ++i) {
        if (abs(arr[1][i]) < abs(arr[1][abs_min]))
            abs_min = i;
    }
    cout << "Index of mininal value (" << arr[1][abs_min] << ") is " << abs_min << '\n';
    // Найдём сумму модулей эелементов массива послу "нулевого" элемента
    int abs_sum = 0;
    bool state = false;
    for (i = 0; i < SIZE; ++i) {
        if (arr[1][i] == 0)
            state = true;
        if (state)
            abs_sum += abs(arr[1][i]);
    }
    cout << "Sum of absolute values is " << abs_sum << '\n' << endl;
    // Отсортируем массив
    register size_t j;
    int temp, itmp;
    for (i = 0, j = SIZE - 1; i <= j; ++i, --j) 
        if (i % 2) {
            itmp = arr[0][i];
            temp = arr[1][i];
            arr[0][i] = arr[0][j];
            arr[1][i] = arr[1][j];
            arr[0][j] = itmp;
            arr[1][j] = temp;
        }
    // Отобразим индексы
    cout << "Show indexes:\n";
    for (i = 0; i < SIZE; ++i) {
        cout << arr[0][i];
        cout << ((i % 10 == 9) ? '\n' : ' ');
    }
 
    delete [] arr[0];
    delete [] arr[1];
    delete [] arr;
    
    return 0;
}
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
13.01.2013, 00:38  [ТС] #5
Цитата Сообщение от xtorne21st Посмотреть сообщение
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* В одномерном массиве, состоящем из n целых элементов, вычислить:
1) минимальный по модулю элемент массива;
2) сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
3) Преобразовать массив таким образом, чтобы в первой его половине располагались элементы,
стоявшие в четных позициях, а во второй половине – элементы, стоявшие в нечетных 
позициях и распечатать их адреса. */
 
#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
#define SIZE 100 // размер массива
 
int main()
{
    // Генерация массива случайными значениями
    int **arr = new int*[2];
    register size_t i;
 
    srand(time(0));
    cout << "We have array:\n";
    arr[0] = new int[SIZE];
    arr[1] = new int[SIZE];
    for (i = 0; i < SIZE; ++i) {
        arr[0][i] = i;
        cout << (arr[1][i] = (i % 2) ? (rand() % 100) * -1 : rand() % 100);
        // Отобразим по 10 элементов в столбце
        cout << ((i % 10 == 9) ? '\n' : ' ');
    }
    cout << '\n';
    // Найдём минимальный элемент по модулю (индекс)
    int abs_min;
    for (i = 1, abs_min = 0; i < SIZE; ++i) {
        if (abs(arr[1][i]) < abs(arr[1][abs_min]))
            abs_min = i;
    }
    cout << "Index of mininal value (" << arr[1][abs_min] << ") is " << abs_min << '\n';
    // Найдём сумму модулей эелементов массива послу "нулевого" элемента
    int abs_sum = 0;
    bool state = false;
    for (i = 0; i < SIZE; ++i) {
        if (arr[1][i] == 0)
            state = true;
        if (state)
            abs_sum += abs(arr[1][i]);
    }
    cout << "Sum of absolute values is " << abs_sum << '\n' << endl;
    // Отсортируем массив
    register size_t j;
    int temp, itmp;
    for (i = 0, j = SIZE - 1; i <= j; ++i, --j) 
        if (i % 2) {
            itmp = arr[0][i];
            temp = arr[1][i];
            arr[0][i] = arr[0][j];
            arr[1][i] = arr[1][j];
            arr[0][j] = itmp;
            arr[1][j] = temp;
        }
    // Отобразим индексы
    cout << "Show indexes:\n";
    for (i = 0; i < SIZE; ++i) {
        cout << arr[0][i];
        cout << ((i % 10 == 9) ? '\n' : ' ');
    }
 
    delete [] arr[0];
    delete [] arr[1];
    delete [] arr;
    
    return 0;
}
честно говоря не знаю что делает ваша программа но явно работает не с одномерным массивом да и выводит на экран какуето лабуду

Добавлено через 5 минут
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    const int n = 10;
    double arr[n], min;
 
    cout << "Введите " << n << " чисел:" << endl;
    for (int i=0; i<n; i++)
        cin >> arr[i];
    
    min = arr[0];
    for (int i=1; i<n; i++)
        if (abs(arr[i]) < abs(min))
            min = arr[i];
 
 
    cout << "минимальный по модулю равен " << min << endl;
 
    system("pause");
    return 0;               
}
я например нахожу минимальный по модулю так

Добавлено через 1 минуту
у вас минимальный тоже исчет правильно массив нужен одномерный
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
13.01.2013, 01:32 #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
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
60
61
62
63
64
65
66
67
68
69
70
71
72
/* В одномерном массиве, состоящем из n целых элементов, вычислить:
   1) минимальный по модулю элемент массива;
   2) сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
   3) Преобразовать массив таким образом, чтобы в первой его половине располагались элементы,
   стоявшие в четных позициях, а во второй половине – элементы, стоявшие в нечетных 
   позициях и распечатать их адреса. */
 
#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
#define SIZE 100 // размер массива
 
int main()
{
    // Генерация массива случайными значениями
    int *arr = new int[SIZE];
    int *arr_h = new int[SIZE];
    register size_t i;
 
    srand(time(0));
    cout << "We have array:\n";
    for (i = 0; i < SIZE; ++i) {
        arr_h[i] = i;
        cout << (arr[i] = (i % 2) ? (rand() % 100) * -1 : rand() % 100);
        // Отобразим по 10 элементов в столбце
        cout << ((i % 10 == 9) ? '\n' : ' ');
    }
    cout << '\n';
    // Найдём минимальный элемент по модулю (индекс)
    int abs_min;
    for (i = 1, abs_min = 0; i < SIZE; ++i) {
        if (abs(arr[i]) < abs(arr[abs_min]))
            abs_min = i;
    }
    cout << "Index of mininal value (" << arr[abs_min] << ") is " << abs_min << '\n';
    // Найдём сумму модулей эелементов массива послу "нулевого" элемента
    int abs_sum = 0;
    bool state = false;
    for (i = 0; i < SIZE; ++i) {
        if (arr[i] == 0)
            state = true;
        if (state)
            abs_sum += abs(arr[i]);
    }
    cout << "Sum of absolute values is " << abs_sum << '\n' << endl;
    // Отсортируем массив
    register size_t j;
    int temp, itmp;
    for (i = 0, j = SIZE - 1; i <= j; ++i, --j) 
        if (i % 2) {
            itmp = arr_h[i];
            temp = arr[i];
            arr_h[i] = arr_h[j];
            arr[i] = arr[j];
            arr_h[j] = itmp;
            arr[j] = temp;
        }
    // Отобразим индексы
    cout << "Show indexes:\n";
    for (i = 0; i < SIZE; ++i) {
        cout << arr_h[i];
        cout << ((i % 10 == 9) ? '\n' : ' ');
    }
 
    delete [] arr_h;
    delete [] arr;
 
    return 0;
}
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
13.01.2013, 02:43  [ТС] #7
Цитата Сообщение от xtorne21st Посмотреть сообщение
Да, не заметил, что массив должен быть одномерным (но выводит программа, всё согласно условию):
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
60
61
62
63
64
65
66
67
68
69
70
71
72
/* В одномерном массиве, состоящем из n целых элементов, вычислить:
   1) минимальный по модулю элемент массива;
   2) сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
   3) Преобразовать массив таким образом, чтобы в первой его половине располагались элементы,
   стоявшие в четных позициях, а во второй половине – элементы, стоявшие в нечетных 
   позициях и распечатать их адреса. */
 
#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
#define SIZE 100 // размер массива
 
int main()
{
    // Генерация массива случайными значениями
    int *arr = new int[SIZE];
    int *arr_h = new int[SIZE];
    register size_t i;
 
    srand(time(0));
    cout << "We have array:\n";
    for (i = 0; i < SIZE; ++i) {
        arr_h[i] = i;
        cout << (arr[i] = (i % 2) ? (rand() % 100) * -1 : rand() % 100);
        // Отобразим по 10 элементов в столбце
        cout << ((i % 10 == 9) ? '\n' : ' ');
    }
    cout << '\n';
    // Найдём минимальный элемент по модулю (индекс)
    int abs_min;
    for (i = 1, abs_min = 0; i < SIZE; ++i) {
        if (abs(arr[i]) < abs(arr[abs_min]))
            abs_min = i;
    }
    cout << "Index of mininal value (" << arr[abs_min] << ") is " << abs_min << '\n';
    // Найдём сумму модулей эелементов массива послу "нулевого" элемента
    int abs_sum = 0;
    bool state = false;
    for (i = 0; i < SIZE; ++i) {
        if (arr[i] == 0)
            state = true;
        if (state)
            abs_sum += abs(arr[i]);
    }
    cout << "Sum of absolute values is " << abs_sum << '\n' << endl;
    // Отсортируем массив
    register size_t j;
    int temp, itmp;
    for (i = 0, j = SIZE - 1; i <= j; ++i, --j) 
        if (i % 2) {
            itmp = arr_h[i];
            temp = arr[i];
            arr_h[i] = arr_h[j];
            arr[i] = arr[j];
            arr_h[j] = itmp;
            arr[j] = temp;
        }
    // Отобразим индексы
    cout << "Show indexes:\n";
    for (i = 0; i < SIZE; ++i) {
        cout << arr_h[i];
        cout << ((i % 10 == 9) ? '\n' : ' ');
    }
 
    delete [] arr_h;
    delete [] arr;
 
    return 0;
}
разобрался все выводит правильно (я просто не понял как он пронумеровал массив индексы в смысле) как ее переделать под одномерный массив ?
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
13.01.2013, 05:07 #8
Цитата Сообщение от илья1995 Посмотреть сообщение
разобрался все выводит правильно (я просто не понял как он пронумеровал массив индексы в смысле) как ее переделать под одномерный массив ?
Это и есть одномерный массив. Только пространство для него выделяется не статическое, а динамическое.
Чтобы переделать его под статическое, достаточно заменить строчки 19-20:
C++
1
2
int *arr = new int[SIZE];
int *arr_h = new int[SIZE];
на
C++
1
2
int arr[SIZE];
int arr_h[SIZE];
и удалить строчки 68-69:
C++
1
2
delete [] arr_h;
delete [] arr;
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
13.01.2013, 15:01  [ТС] #9
Цитата Сообщение от xtorne21st Посмотреть сообщение
Это и есть одномерный массив. Только пространство для него выделяется не статическое, а динамическое.
Чтобы переделать его под статическое, достаточно заменить строчки 19-20:
C++
1
2
int *arr = new int[SIZE];
int *arr_h = new int[SIZE];
на
C++
1
2
int arr[SIZE];
int arr_h[SIZE];
и удалить строчки 68-69:
C++
1
2
delete [] arr_h;
delete [] arr;
исправил как вы сказали всеравно массив не одномерный вот что выводит на экран
Миниатюры
В одномерном массиве вычислить минимальный по модулю элемент массива  
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
13.01.2013, 15:53 #10
Вот определение одномерного массива: "Одномерный массив – это фиксированное количество элементов одного типа, объединённых одним именем, причем каждый элемент имеет свой уникальный номер, и номера элементов идут подряд". То, что он отображается оп 10 элементов, это лишь для удобства, но данные хранятся в одномерном статическом массиве. Отображение по 10 в одной сточки, может показаться, что массив двумерный состоящий из 10 элементов по 10 в каждом. Но это не так. Это всего лишь форматирование вывода на консоль (для удобства отображения). Если вы хотите, чтобы отображались все 100 элементов в одной строке, просто заменить строчку 29 и 65 с содержанием:
C++
1
cout << ((i % 10 == 9) ? '\n' : ' ');
на
C++
1
cout << '\n';
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
13.01.2013, 16:17  [ТС] #11
Цитата Сообщение от xtorne21st Посмотреть сообщение
Вот определение одномерного массива: "Одномерный массив – это фиксированное количество элементов одного типа, объединённых одним именем, причем каждый элемент имеет свой уникальный номер, и номера элементов идут подряд". То, что он отображается оп 10 элементов, это лишь для удобства, но данные хранятся в одномерном статическом массиве. Отображение по 10 в одной сточки, может показаться, что массив двумерный состоящий из 10 элементов по 10 в каждом. Но это не так. Это всего лишь форматирование вывода на консоль (для удобства отображения). Если вы хотите, чтобы отображались все 100 элементов в одной строке, просто заменить строчку 29 и 65 с содержанием:
C++
1
cout << ((i % 10 == 9) ? '\n' : ' ');
на
C++
1
cout << '\n';
не вы меня не совсем правильно понимаете. я например ввожу размер массива 10 и он мне его заполняет 10-ю элементами в одной строчке. потом следующая строчка уже будет запись с максимальным элементом патом сумма модулей после 0 и патом еще 1 строчка отсортированный массив например у меня такое представление программы всего 4 строчки

Добавлено через 5 минут
я так понял вы задали размер массива 100 и для удобства вывода вы его разбили на 10 строчек но такой большой массив не нужен.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 16:17
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.01.2013, 16:17
Ответ Создать тему
Опции темы

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