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

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

Восстановить пароль Регистрация
 
sanek9992
0 / 0 / 0
Регистрация: 11.04.2010
Сообщений: 19
27.04.2010, 08:31     Вычислить произведение положительных элементов массива #1
Даны три задания.
В двумерном массиве, состоящем из 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!!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2010, 08:31     Вычислить произведение положительных элементов массива
Посмотрите здесь:

Вычислить произведение положительных элементов строки матрицы C++
C++ Вычислить произведение положительных и отрицательных элементов каждой строки
C++ Вычислить произведение положительных элементов массива
C++ Вычислить произведение положительных элементов строки матрицы
Вычислить произведение положительных элементов в колонках массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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);
}
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);
}
enari
 Аватар для enari
18 / 18 / 2
Регистрация: 26.04.2010
Сообщений: 35
27.04.2010, 17:40     Вычислить произведение положительных элементов массива #4
Сумму он тебе правильно выдает... просто он ее считает до сортировки.
Вопрос про четные и не четные места в матрице может имелось ввиду, что i=1 , j = 1 (первая позиция в матрице) то это не четная позиция i =1 , j =2 то четная так как 2 позиция в матрице ?
Не ?
sanek9992
0 / 0 / 0
Регистрация: 11.04.2010
Сообщений: 19
27.04.2010, 22:05  [ТС]     Вычислить произведение положительных элементов массива #5
д нет) просто при выводе на экран отображаеться только в ответе произведение всех положительных элементов а сумму в ответе не выводит
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);
Yandex
Объявления
28.04.2010, 09:20     Вычислить произведение положительных элементов массива
Ответ Создать тему
Опции темы

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