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

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

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

двухмерный динамический массив - C++

21.11.2013, 12:46. Просмотров 320. Ответов 3
Метки нет (Все метки)

задание было такое: Найти количество отрицательных и положительных элементов массива. Массив в памяти разместить динамически (с использованием операций new и delete), ввод исходных данных и вывод полученных результатов выполнить в основной функции, а решение задачи оформить в виде отдельной функции пользователя. Не использовать глобальных переменных.
Получилось что-то неправильное:
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int Fun_Sum_Kol(int, int, int**, int*);     // Описание прототипа функции
void main()
{
    int **a, i, j, n, m, sum, kol;
    cout << "\t Input N, M : ";
    cin >> n >> m;
    a = new int*[n];                    // Захват памяти под указатели
    for(i=0; i<n;i++)
        a[i] = new int[m];      // Захват памяти под элементы
    cout <<"\n Input A" << endl;
    for(i=0; i<n; i++)
        for(j=0; j<m; j++){
            cout << "\t a[" << i+1 << "][" << j+1 << "] = ";
            cin >> a[i][j];
        }
        cout <<"\n Matrix A:" << endl;
        for(i=0; i<n; i++) {
            for(j=0; j<m; j++)
                cout << "\t" << a[i][j];
            cout << endl;
        }
        // Обращение к функции с указанием фактических аргументов
        sum = Fun_Sum_Kol(n, m, a, &kol);       
        cout << "\n Kol-vo = " << kol << "\t Summa = " << sum << endl;
        delete []a;                         // Освобождение памяти          
        cout << "\n\t Delete !" << endl;
        cout << " Press any key ... " << endl;
        getch();
}
// Реализация описанной выше функции, в заголовке которой указаны формальные параметры, идентификаторы которых обрабатываются в ее коде */
int Fun_Sum_Kol(int a, int b, int **x, int *k)
{
    int i, j, s = 0;
    *k = 0;
    for(i=0; i<a;i++)
        for(j=0; j<b;j++)
            if(x[i][j] > 0){
                (*k)++;          // Скобки обязательны
            }
            if(x[i][j] < 0){
                    s=s+1;
                }
            return s;
}
вылетает ошибка, помогите пожалуйста решить проблему.
Миниатюры
двухмерный динамический массив  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2013, 12:46     двухмерный динамический массив
Посмотрите здесь:

C++ Двухмерный динамический массив строк
C++ Двухмерный динамический массив
C++ Тривиальная задача: двухмерный динамический массив
Указатель на двухмерный динамический массив C++
Двухмерный динамический массив C++
Двухмерный динамический массив C++
C++ Динамический двухмерный массив
Двухмерный динамический массив C++
C++ Динамический двухмерный массив (создать матрицу)
Динамический двухмерный массив C++
C++ Создать двухмерный динамический массив строк
Как правильней объявить динамический двухмерный массив C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,113
21.11.2013, 12:54     двухмерный динамический массив #2
Вроде отработало нормально, если не считать что не посчиталась сумма
Миниатюры
двухмерный динамический массив  
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.11.2013, 12:59     двухмерный динамический массив #3
TaPaH, скобки для циклов забыли.
C++
1
2
3
4
5
6
7
8
9
10
for(i=0; i<a;i++)
        for(j=0; j<b;j++)
        { // тут 
            if(x[i][j] > 0){
                (*k)++;          // Скобки обязательны
            }
            if(x[i][j] < 0){
                    s=s+1;
                }
       } // тут
как минимум

Собственно, студия даже ругается:
warning C4701: potentially uninitialized local variable 'j' used
TaPaH
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 21
21.11.2013, 13:58  [ТС]     двухмерный динамический массив #4
Цитата Сообщение от Tulosba Посмотреть сообщение
TaPaH, скобки для циклов забыли.
C++
1
2
3
4
5
6
7
8
9
10
for(i=0; i<a;i++)
        for(j=0; j<b;j++)
        { // тут 
            if(x[i][j] > 0){
                (*k)++;          // Скобки обязательны
            }
            if(x[i][j] < 0){
                    s=s+1;
                }
       } // тут
как минимум
вот дурная голова! спасибо заработало!

Добавлено через 2 минуты
Цитата Сообщение от egor2116 Посмотреть сообщение
Вроде отработало нормально, если не считать что не посчиталась сумма
там просто вывод неправильный, на месте суммы стоит количество отрицательных.


p.s. спасибо за замечание)
Yandex
Объявления
21.11.2013, 13:58     двухмерный динамический массив
Ответ Создать тему
Опции темы

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