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

Произведение элементов массива, расположенных между максимальным и минимальным элементами массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Получить действительную матрицу элемент которой равен произведению элементов данной матрицы http://www.cyberforum.ru/cpp-beginners/thread181419.html
Дана действительная матрица , i, j=1, ..., n . Получить действительную матрицу , i, j=1, ..., n, элемент bij которой равен произведению элементов данной матрицы, расположенных в области, определяемой индексами i, j так, как показано на рисунке (область залита). Начал писать код посмотрите,и подскажите пожалуйста как доделать чтобы правильно работало. #include <iostream> using...
C++ Как обычную переменную сделать константой Как можно константой сделать обычную переменную, а то хочу создать матрицу nxn а мне VS требует что бы n1 и n2 были константами, или как можно это обойти http://www.cyberforum.ru/cpp-beginners/thread181400.html
C++ error C2065: eof: необъявленный идентификатор
#include "StdAfx.h" int getline(char s, int lim) { int c,i; for(i=0; i<lim-1 && (c=getchar()) != eof && c !='\n'; i++) // ошибка в этой строке. s=c; s='\0'; i++;
Преобразовать матрицу согласно условию C++
Помогите плииз с задачкой!=) Дана целочисленная матрица размера n x m, целые числа k, l (1 ≤ k ≤ n, 1 ≤ l ≤ n, k ≠ l). Преобразовать матрицу так, чтобы строка с исходным номером k непосредственно следовала за строкой с исходным номером l, сохранив порядок следования остальных строк.
C++ Структуры. Вывод информации о товарах http://www.cyberforum.ru/cpp-beginners/thread181357.html
переделайте пожалуйста под это задание: (Продукты питания: наименование, вес, цена, срок годности. Дополнить вывод информацией о товарах, которые следует уценить (срок годности которых истекает через 2 дня или ранее).) +Данные о предметной области представлены динамическим массивом структур, содержа-щими поля согласно варианту. #include <stdafx.h> #include <iostream> #include <cctype>...
C++ Написать функцию которая может читать цифры с 1-го до n-го элемента в массиве (используя pointer) Написать функцию которая может читать цифры с 1-го до n-го элемента в массиве и выводит их. Примичание использовать pointer. Ввод: 3 1 2 3 Вывод: 1 2 3 подробнее

Показать сообщение отдельно
ValeraRU
Сообщений: n/a
25.10.2010, 18:31     Произведение элементов массива, расположенных между максимальным и минимальным элементами массива
Здравствуйте,нужна помощь,в общем на лаб. по программированию сейчас идут задачи с массивом,в связи с нехваткой знаний обращаюсь к вам за помощью) помогите чем сможете
вот задача(пример)
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
75
76
77
78
79
80
81
/*
Подключние рабочих библиотек:
    <stdio.h> - библиотека ввода/вывода
*/
#include <stdio.h>
 
int main(int argc, char* argv[])
{
    /* Именованная константа, определяющая количество элементов массива */
    const    MAX_ELEMENTS = 8;
 
    /* Объявление и инициализация переменных */
    float    m[MAX_ELEMENTS];
    float    sum = 0;
    float    result = 1;
    int      iMax, iMin;
 
    /* Запрашиваем ввод данных с клавиатуры */
    for (int i = 0; i < MAX_ELEMENTS; i++)
    {
        printf("m[%d] = ", i);
        scanf("%f", &m[i]);
    }
 
/* Принимаем индексы максимального и минимального массива равными 0 */
    iMin = iMax = 0;
    for (i = 0; i < MAX_ELEMENTS; i++)
    {
        /* Вычисляем сумму отрицательных элементов массива */
        if (m[i] < 0) sum += m[i];
 
        /* Находим индексы максимального и минимального элементов массива */
        if (m[i] > m[iMax]) iMax = i;
        if (m[i] < m[iMin]) iMin = i;
    }
 
    /* Находим произведение элементов массива, находящихся между минимальным и максимальными элементами */
    for (i = ((iMax < iMin) ? iMax : iMin);
        i <= ((iMax > iMin) ? iMax : iMin);
        result *= m[i++]);
 
    /* Выводим на экран результат вычислений */
    printf("\nСумма отрицательных элементов = %.2f\n", sum);
    printf("Результат = %.2f\n\n", result);
 
    /* Сортировка элементов массива по возрастанию */
    for (i = 0; i < MAX_ELEMENTS; i++)
    {
        for (int j = i + 1; j < MAX_ELEMENTS; j++)
        {
            if (m[i] > m[j])
            {
                result = m[i];
                m[i] = m[j];
                m[j] = result;
            }
        }
    }
 
    /* Вывод на экран отсортированного по возрастанию массива */
    printf("Отсортированный массив:\n");
    for (i = 0; i < MAX_ELEMENTS; printf("%.2f ", m[i++]));
 
    return 0;
}
 
Результат выполнения программы:
m[0] = 3
m[1] = 7
m[2] = -4
m[3] = 8
m[4] = -1
m[5] = 9
m[6] = 0
m[7] = 7
 
Сумма отрицательных элементов = -5.00
Результат = 288.00
 
Отсортированный массив:
-4.00 -1.00 0.00 3.00 7.00 7.00 8.00 9.00
вот условие(моей задачи)
В одномерном массиве, состоящем из п вещественных элементов, вычислить:
1) сумму положительных элементов массива;
2) произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Упорядочить элементы массива по убыванию.
и вот что я написал
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
#include <stdio.h>
#include <math.h>
int main(int argc, char* argv[])
{
    const    MAX_ELEMENTS = 80;
    float    m[MAX_ELEMENTS];
    float    sum = 0;
    float    result = 1;
    int      iMax, iMin,n;
      FILE *in=fopen("1.txt","r");
    fscanf(in,"%d", &n);
    for (int i = 0; i < n; i++)
    {
      //    printf("m[%d] = ", i);
    fscanf(in,"%f", &m[i]);
    }
    iMin = iMax = 0;
    for (i = 0; i < MAX_ELEMENTS; i++)
    {
    if (m[i] > 0) sum += m[i];
    if (m[i] > m[iMax]) iMax = i;
    if (m[i] < m[iMin]) iMin = i;
    }
    for ( i = ((iMax < iMin) ? iMax : iMin);
    i <= ((iMax > iMin) ? iMax : iMin);
    result *= m[i++]);
    printf("\n summa polojitelinih 4isel  = %.2f\n", sum);
    printf("rezultat = %.2f\n\n", result);
    for (i = 0; i > MAX_ELEMENTS; i--)
    {
    for (int j = i - 1; j < MAX_ELEMENTS; j--)
    {
        if (m[i] < m[j])
        {
        result = m[i];
        m[i] = m[j];
        m[j] = result;
        }
    }
    }
    printf("otsortirovanii massiv:\n");
   for (i = 0; i < MAX_ELEMENTS; printf("%.2f ", m[i++]));
    return 0;
}
помогите доработать =(
очень надо!

и вот вторая задача
пример:

ДВУМЕРНЫЕ МАССИВЫ

Пример задания: Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
Пример решения задачи:
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
#include <stdio.h>
 
int main(int argc, char* argv[])
{
    /* Объявляем и инициализируем матрицу 8х8 */
    int     matrix[8][8] = {
                           { 2, 7, 2, 7, 1, 4, 0, 3 },
                           { 1, 0, 7, 6, 0, -8, 3, 5 },
                           { 2, 7, 1, 8, 1, 4, 9, 3 },
                           { 9, 2, 8, 5, 2, 0, 0, 6 },
                           { 7, 1, 1, 3, 9, 3, 9, 1 },
                           { 8, 2, 4, 9, 1, -6, 4, 9 },
                           { 0, 3, 9, 0, 9, 4, 8, 8 },
                           { 1, 8, 3, 2, 8, 2, 8, 0 }
                           };
    int     i, j, iSumm; /* Счетчик и переменная для хранения суммы */
    bool    bFlag;          /* Флаг */
 
    /*----------------------------------------------*/
    /*    П Е Р В А Я   Ч А С Т Ь   З А Д А Н И Я   */
    /*----------------------------------------------*/
    printf("k = ");
    for (i = 0; i < 8; i++)
    {
        /* Присваиваем Флагу исходное значение */
        bFlag = true;
        for (j = 0; j < 8; j++)
        {
            /* Сравниваем элемент i-й строки j-го столбца с элементом j-й строки i-го столбца. В случае их несоответствия присваиваем Флагу значение Ложь и прерываем цикл по j конструкцией break */
            if (matrix[i][j] != matrix[j][i])
            {
                bFlag = false;
                break;
            }
        }
        /* В случае сохранения флагом исходного значения выводим на экран номер соответствующей строки */
        if (bFlag) printf("%d ", i);
    }
 
    /*----------------------------------------------*/
    /*    В Т О Р А Я   Ч А С Т Ь   З А Д А Н И Я   */
    /*----------------------------------------------*/
    printf("\n\n");
    for (i = 0; i < 8; i++)
    {
        /* Присваиваем переменным исходные значения */
        bFlag = false;
        iSumm = 0;
        for (j = 0; j < 8; j++)
        {
            /* При нахождение хотя бы одного отрицательного элемента присваиваем Флагу значение Истина, обозначающее необходимость вывода Суммы на экран */
            if (matrix[i][j] < 0) bFlag = true;
 
          /* Суммируем значения элементов i-й строки */
            iSumm += matrix[i][j];
        }
        /* В случае нахождения в строке хотя бы одного отрицательного элемента выводим на экран сумму элементов i-й строки */
        if (bFlag) printf("Сумма элементов строки #%d = %d\n", i, iSumm);
    }
 
    return 0;
}
 
Результат выполнения программы:
k = 2 6
 
Сумма элементов строки #1 = 14
Сумма элементов строки #5 = 31
что надо сделать мне :
Осуществить циклический сдвиг элементов квадратной матрицы размерности МхN вправо на k элементов таким образом: элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку справа налево, из нее - в первый столбец снизу вверх, из него - в первую строку; для остальных элементов - аналогично.
ребята очень нужно,заранее благодарю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru