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

Задача на двумерные массивы - C++

Восстановить пароль Регистрация
 
ferdas
0 / 0 / 0
Регистрация: 24.02.2014
Сообщений: 41
17.03.2014, 19:33     Задача на двумерные массивы #1
Найти среднее арифметическое положительных элементов каждого столбца
Есть почти готовое решение, но, оно только правильное когда элементы столбцов больше 0 (>0)
C++ (Qt)
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
 
    int **a, m, n;
    int sum;
    void Input_A();
    void Serednye_A();
 
 
 
int main()
{
    setlocale (LC_ALL, "Russian");
 
    Input_A();
    Serednye_A();
 
getch();
return 0;
}
 
 
void Input_A() {
 
    
    cout << "ÂâåäiГІГј ГЄiëüêiГ±ГІГј ñòîâáöiГў m= ";
    cin >> m;
    cout << "ÂâåäiГІГј ГЄiëüêiГ±ГІГј Г«iГ*iéîê n= ";
    cin >> n;
    int sum = 0;
    a = new int*[m];
    for(int i=0; i<m; i++) {
        a[i] = new int [n];
    }
    for (int i = 0; i<m; i++){
        for (int j = 0; j < n; j++) {
            cout << "a[" << i << "][" << j << "]: ";
            cin >> *(*(a+i)+j);
        }
    }
}
 
void Serednye_A() {
    for (int i = 0; i<m; i++){
        sum = 0;
        for (int j = 0; j < n; j++) {
            if (a[i][j] > 0)
                sum += *(*(a+i)+j);
        }
        cout << "ÑåðåäГ*Вє Г*ðèôìåòè÷Г*ГҐ " << i+1 <<"-ГЈГ® ñòîâáöÿ= "<< sum / n<< endl;
        
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
17.03.2014, 19:40     Задача на двумерные массивы #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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
 
int **a, m, n;
int sum;
void Input_A();
void Serednye_A();
 
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    Input_A();
    Serednye_A();
 
    _getch();
    return 0;
}
 
 
void Input_A() {
 
 
    cout << "Введiть кiлькiсть стовбцiв m= ";
    cin >> m;
    cout << "Введiть кiлькiсть лiнiйок n= ";
    cin >> n;
    int sum = 0;
    a = new int*[m];
    for (int i = 0; i<m; i++) {
        a[i] = new int[n];
    }
    for (int i = 0; i<m; i++){
        for (int j = 0; j < n; j++) {
            cout << "a[" << i << "][" << j << "]: ";
            cin >> *(*(a + i) + j);
        }
    }
}
 
void Serednye_A() {
    for (int i = 0; i<m; i++){
        sum = 0;
        int count = 0;
        for (int j = 0; j < n; j++) {
            if (a[i][j] > 0){
                sum += *(*(a + i) + j);
                count++;
            }
        }
        if (count > 0) 
            cout << "Середнє арифметичне " << i + 1 << "-го стовбця= " << sum / double(count) << endl;
        else cout <<"В "<< i + 1 << "-ом столбце нет положительных элементов " << endl;
 
    }
}
recoder
 Аватар для recoder
129 / 129 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
17.03.2014, 19:40     Задача на двумерные массивы #3
Найти среднее арифметическое положительных элементов каждого столбца.
Есть почти готовое решение, но, оно только правильное когда элементы столбцов больше 0.
Меньше 0, вроде не положительные.
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
17.03.2014, 19:49     Задача на двумерные массивы #4
recoder, когда все элементы матрицы положительные, решение правильное. А когда хотя бы 1 отрицательный, то уже не верно.

Добавлено через 1 минуту
Цитата Сообщение от ferdas Посмотреть сообщение
int **a, m, n; int sum;
Можно обойтись без глобальных переменных:
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 <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
void Input_A(int**&,int,int);
void Serednye_A(int**,int,int);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int **a, m, n;
    cout << "Введiть кiлькiсть стовбцiв m= ";
    cin >> m;
    cout << "Введiть кiлькiсть лiнiйок n= ";
    cin >> n;
    Input_A(a,m,n);
    Serednye_A(a,m,n);
 
    _getch();
    return 0;
}
 
 
void Input_A(int**& a,int m, int n) {
    int sum = 0;
    a = new int*[m];
    for (int i = 0; i<m; i++) {
        a[i] = new int[n];
    }
    for (int i = 0; i<m; i++){
        for (int j = 0; j < n; j++) {
            cout << "a[" << i << "][" << j << "]: ";
            cin >> a[i][j];
        }
    }
}
 
void Serednye_A(int **a,int m,int n) {
    for (int i = 0; i<m; i++){
        int sum = 0;
        int count = 0;
        for (int j = 0; j < n; j++) {
            if (a[i][j] > 0){
                sum += a[i][j];
                count++;
            }
        }
        if (count > 0) 
            cout << "Середнє арифметичне " << i + 1 << "-го стовбця= " << sum / double(count) << endl;
        else cout <<"В "<< i + 1 << "-ом столбце нет положительных элеметов " << endl;
 
    }
}
Добавлено через 37 секунд
Цитата Сообщение от ferdas Посмотреть сообщение
*(*(a+i)+j)
Это можно заменить на a[i][j]
Yandex
Объявления
17.03.2014, 19:49     Задача на двумерные массивы
Ответ Создать тему
Опции темы

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