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

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

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

Вычислить произведение положительных элементов массива - C++

27.04.2010, 08:31. Просмотров 689. Ответов 5
Метки нет (Все метки)

Даны три задания.
В двумерном массиве, состоящем из m на n элементов вычислить:
1-Произведение положительных елементов массива
2-Сумма элементов массива,расположенных до максимального.
3-Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.

нужно сделать их одни целым кодом.
я разобрался только с первым.. нужна помощь с остальными
Вот код первого из заданий . может не правильно проверьте пожалуйста. но помоему се так как должно быть) и прошу помочь со вторым и третьим)
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
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
void main()
{
    FILE*flab;
    flab=fopen("lab4.txt","w");
    int const m=6,n=6;
    int a[m][n],i,j,p=1;
        for(i=0;i<m;i++)
        for(j=0;j<n;j++)
        {
    a[i][j]=rand()-1000;
    if(a[i][j]>0) p=p*a[i][j];
        }
    for(i=0;i<m;i++)
    {
    for(j=0;j<n;j++)
    printf("%5d",a[i][j]);
    printf("\n");
    }
    printf("\n *1* %d ",p);
}
Заранее благодарен

Добавлено через 8 минут
если нетрудно можно небольшие коментарии к действиям) з.ы Спасибо)

Добавлено через 8 часов 25 минут
Hellp!!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2010, 08:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить произведение положительных элементов массива (C++):

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

Вычислить произведение положительных элементов массива - C++
Люди помагите сделать задачю: Вычеслить произведение положительных элементов массива.

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

Вычислить произведение положительных элементов сгенерированного массива - C++
Сформировать массив K из 23 элементов через генератор случайных чисел. Вывести его на экран. Вычислить произведение положительных...

Вычислить произведение положительных элементов в колонках массива - C++
Помогите, пожалуйста! Не считает произведение. Что исправить? Само задание: Посчитать произведение положительных элементов в тех колонках...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
27.04.2010, 10:07 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
a[i][j]=rand()-1000 Даст кучу непонятных чисел.
Нужно как-то ограничить, тем более, что для Int нельзя будет посчитать произведение больших чисел, поэтому например a[i][j]=rand()%10-4; числа от -4 до 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
    
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
void main()
{
 
            int const m=6,n=6;
        int a[m][n],j;
        unsigned long p=1;
        int max = 0, mi, mj; //максимальный элемент
        int sum = 0;
        int tmp,k;
        for(i=0;i<m;i++)
        for(j=0;j<n;j++)
        {
           a[i][j]=rand()%10-4;//......
           if(a[i][j] > 0) p *= a[i][j];//произведение положительных элементов
           if(a[i][j] > max) {max = a[i][j]; mi = i; mj = j;}//ищем максимальный элемент
        }
 
        for(i=0;i<=mi;i++){
            for(j=0;j<n;j++)
            {
                 if(mi == i && mj == j) break;
                 sum+=a[i][j]; //считаем сумму до максимального элемента
            }
        }
 
        for(k = 0; k < m; k++)
        for(i = n - 2; i > 0; i--)//сортировка пузырьком по строкам массива
           for(j = 0; j < i; j+=2){
              if( a[k][j+1] > a[k][j+3] && j+3 < n)//сортировка нечетных
              {
                 tmp = a[k][j+1];
                 a[k][j+1] = a[k][j+3];
                 a[k][j+3] = tmp;
              }
              if( a[k][j] > a[k][j+2] )//сортировка четных
              {
                 tmp = a[k][j];
                 a[k][j] = a[k][j+2];
                 a[k][j+2] = tmp;
              }
           }
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
                printf("%7d",a[i][j]);
            printf("\n");
        }
        printf("\n *1* %d \n *2*",p,sum);
}
0
sanek9992
0 / 0 / 0
Регистрация: 11.04.2010
Сообщений: 19
27.04.2010, 16:43  [ТС] #3
А еcли например просто оставить rand() при задаче констант поставить не int а char к примеру. значения тогда будут до 32 ? и по поводу других заданий которые второе и третье. я вообще не могу разобраться. что в них да как..

Добавлено через 18 минут
Небольшой коллапс) невыдает почемуто сумму елементов расположеных до максимального. пробывал распечатывать отдельным циклом и всеравно нет. распологает все елементы пузырьком. Спасибо) запомню в следующий раз)
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
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
void main()
{
 
                int const m=6,n=6;
                int a[m][n],i,j;
                unsigned long p=1;
                int max = 0, mi, mj; //максимальный элемент
                int sum = 0;
                int tmp,k;
                for(i=0;i<m;i++)
                for(j=0;j<n;j++)
           
        {
                   a[i][j]=rand()%10-4;//......
                   if(a[i][j] > 0) p *= a[i][j];//произведение положительных элементов
                   if(a[i][j] > max) {max = a[i][j]; mi = i; mj = j;}//ищем максимальный элемент
                }
 
                for(i=0;i<=mi;i++){
                        for(j=0;j<n;j++)
                        {
                                 if(mi == i && mj == j) break;
                                 sum+=a[i][j]; //считаем сумму до максимального элемента
                        }
                }
 
                for(k = 0; k < m; k++)
                for(i = n - 2; i > 0; i--)//сортировка пузырьком по строкам массива
                   for(j = 0; j < i; j+=2){
                          if( a[k][j+1] > a[k][j+3] && j+3 < n)//сортировка нечетных
                          {
                                 tmp = a[k][j+1];
                                 a[k][j+1] = a[k][j+3];
                                 a[k][j+3] = tmp;
                          }
                          if( a[k][j] > a[k][j+2] )//сортировка четных
                          {
                                 tmp = a[k][j];
                                 a[k][j] = a[k][j+2];
                                 a[k][j+2] = tmp;
                          }
                   }
                for(i=0;i<m;i++)
                {
                        for(j=0;j<n;j++)
                                printf("%7d",a[i][j]);
                        printf("\n");
                }
                printf("\n *1* %d \n ",p,sum);
}
0
enari
18 / 18 / 2
Регистрация: 26.04.2010
Сообщений: 35
27.04.2010, 17:40 #4
Сумму он тебе правильно выдает... просто он ее считает до сортировки.
Вопрос про четные и не четные места в матрице может имелось ввиду, что i=1 , j = 1 (первая позиция в матрице) то это не четная позиция i =1 , j =2 то четная так как 2 позиция в матрице ?
Не ?
0
sanek9992
0 / 0 / 0
Регистрация: 11.04.2010
Сообщений: 19
27.04.2010, 22:05  [ТС] #5
д нет) просто при выводе на экран отображаеться только в ответе произведение всех положительных элементов а сумму в ответе не выводит
0
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
28.04.2010, 09:20 #6
C
1
printf("\n *1* %d \n *2* %d \n",p,sum);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2010, 09:20
Привет! Вот еще темы с ответами:

Вычислить произведение положительных элементов в первой и во второй половине массива - C++
Заполнить одномерный массив целыми числами. Вычислить произведение положительных элементов в первой и во второй половине массива.

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

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

Вычислить произведение отрицательных элементов и произведение положительных элементов последовательности - C++
В последовательности действительных чисел a1,a2,...,an есть только положительные и отрицательные элементы. Вычислить произведение...


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

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

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