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

Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов - C++

Восстановить пароль Регистрация
 
Alexandra555
0 / 0 / 0
Регистрация: 17.05.2011
Сообщений: 33
28.05.2011, 14:47     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов #1
Помогите с решением!!

Что надо вставить вместо ???, чтобы все работало?

Даны вещественные массивы A[3][5], V[3][5]. Для каждого
массива опpеделить номеp столбца с наибольшим количеством
положительных элементов.

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
#include<iostream.h>
#include<conio.h>
 
void inputmas(int[3][5], char);
int schet(int[3][5]);
void outrez(int[3][5], char, int);
 
void main()
{
int a[3][5], v[3][5], num_stolbec_a, num_stolbec_v;
inputmas(a, 'a');
inputmas(v, 'v');
num_stolbec_a=schet(a);
num_stolbec_v=schet(v);
outrez(a, 'a', num_schet_a);
outrez(v, 'v', num_schet_v);
}
 
//определение функции ввода массива input()
void inputmas(int x[3][5], char name)
 {
 int i,j;
 cout<<"Вводим массив"<<name<<endl;
 for(i=0; i<3; i++)
 for(j=0; j<5; j++)
 {
 cout<<"Введите элемент массива"<<name<<"["<<i<<"]["<<j<<"]=";
 cin<< x[i][j];
 }
 }
 
 //определение расчетной функции schet()
 
int schet(int m[3][5])
 {
 
 ???
 
 }
 
//определение функции вывода массива outrez()
void outrez(int x[3][5], char name, int num_stolbca_)
 {
 int i,j;
 cout<<"Исходный массив"<<name<<":"<<endl;
 for(i=0; i<3; i++)
 for(j=0; j<5; j++)
 cout<<setw(6)<<x[i][j];
 cout<<"Наибольшее кол-во положит.эл-тов"<<name<<"содержится в"<<num_stolbca_<<"столбце\n";
 }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2011, 14:47     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов
Посмотрите здесь:

Для каждого массива опpеделить сpеднее аpифметическое наибольшего и наименьшего значений массива C++
C++ Для каждого массива определить номер строки с наибольшим количеством отрицательных элементов
Для каждого массива определить номер столбца с наибольшим количеством положительных элементов. C++
C++ Найти среднее арифметическое положительных элементов каждого столбца массива
Определить количество положительных элементов каждого столбца двумерного массива, содержащего 5 строк и 5 столбцов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.05.2011, 15:52     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов #2
Попробуй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int max=0, tmp=0, number=0;
for (int j=0; j<5; j++)
{
    for (int i=0; i<3; i++)
        if (m[i][j]>0)
            tmp++;
    if (tmp>max)
    {
        max=tmp;
        number=j+1;
    }
    tmp=0;
}
return number;
Alexandra555
0 / 0 / 0
Регистрация: 17.05.2011
Сообщений: 33
28.05.2011, 17:57  [ТС]     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов #3
Цитата Сообщение от soon Посмотреть сообщение
Попробуй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int max=0, tmp=0, number=0;
for (int j=0; j<5; j++)
{
    for (int i=0; i<3; i++)
        if (m[i][j]>0)
            tmp++;
    if (tmp>max)
    {
        max=tmp;
        number=j+1;
    }
    tmp=0;
}
return number;
у меня так что-то не идет что делать?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.05.2011, 19:44     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов #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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void inputmas(int[3][5], char);
int schet(int[3][5]);
void outrez(int[3][5], char, int);
 
int main()
{
     setlocale(LC_ALL, "Russian");
     int a[3][5], v[3][5];
     inputmas(a, 'a');
     inputmas(v, 'v');
     outrez(a, 'a', schet(a));
     outrez(v, 'v', schet(v));
     system("pause");
}
 
void inputmas(int x[3][5], char name)//определение функции ввода массива input()
{
     int i,j;
     cout<<"Вводим массив "<<name<<endl;
     for(i=0; i<3; i++)
          for(j=0; j<5; j++)
          {
               cout<<"Введите элемент массива"<<name<<"["<<i<<"]["<<j<<"]="; //Выводить каждый раз эту строку не очень удобно, особенно если вводить в массив не по одному элементу, а сразу все
               cin >> x[i][j];
          }
}
 
int schet(int m[3][5])//Определение расчетной функции schet()
{
     int max=0, tmp=0, number=0;
     for (int j=0; j<5; j++)
     {
          for (int i=0; i<3; i++)
               if (m[i][j]>0)
                    tmp++;
          if (tmp>max)
          {
               max=tmp;
               number=j+1;
          }
          tmp=0;
     }
     return number;
}
 
void outrez(int x[3][5], char name, int num_stolbca_)//Определение вывода массива outrez()
{
     int i,j;
     cout<<"Исходный массив "<<name<<":"<<endl;
     for(i=0; i<3; i++)
     {
          for(j=0; j<5; j++)
               cout << setw(6)<< x[i][j];
          cout << endl;
     }
     cout<<"Наибольшее кол-во положит. эл-тов "<<name<<" содержится в "<<num_stolbca_<<" столбце\n";
}
Добавлено через 15 минут
Во-первых, по стандарту языка такие заголовочные файлы, как iostream подключаются без ".h". Код, конечно, скомпилируется, но компилятор выдаст warning.
Во-вторых, главная функция в с++ именуется int main() а не void main().
В-третьих, т.к. функция schet() выдает результат в int, то вместо
num_stolbec_a=schet(a);
num_stolbec_v=schet(v);
outrez(a, 'a', schet(a));
outrez(v, 'v', schet(v));
целесообразнее будет просто
C++
1
2
outrez(a, 'a', schet(a));
     outrez(v, 'v', schet(v));
и переменные лишние можно не объявлять.
Ну вот, вроде все.
Alexandra555
0 / 0 / 0
Регистрация: 17.05.2011
Сообщений: 33
28.05.2011, 20:04  [ТС]     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов #5
soon, а что такое tmp?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.05.2011, 20:10     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов #6
Alexandra555, tmp-количество положительных элементов в столбце.
А max-соответственно максимальное количество положительных элементов, среди уже проверенных столбцов
Стоит также отметить, что если столбцов с одинаковым кол-вом положительных элеметов несколько, то программа выводит номер первого столбца.
Alexandra555
0 / 0 / 0
Регистрация: 17.05.2011
Сообщений: 33
28.05.2011, 20:20  [ТС]     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов #7
soon, Огромное Вам спасибо! Вы мне очень помогли!

Добавлено через 7 минут
а если в задачке дан вещественный массив, то что? надо int заменить на float ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2011, 20:58     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.05.2011, 20:58     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов #8
угу
и в функциях тоже
Yandex
Объявления
28.05.2011, 20:58     Для каждого массива опpеделить номеp столбца с наибольшим количеством положительных элементов
Ответ Создать тему
Опции темы

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