Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
2 / 2 / 2
Регистрация: 29.11.2009
Сообщений: 320

Как можно бы создать метод для ввода размерности (т.е. для ввода private переменных n,m)?

12.09.2010, 18:57. Показов 1245. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно бы создать метод для ввода размерности (т.е. для ввода private переменных n,m)?
( что только я не пробывал: то переменные перекрываются, то нарушается область видимости n и m в некоторых методах).

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
class matrix
{ 
private:
        int i,j,m,n;
        int **matrica;
public: 
        matrix();
        ~matrix(); 
        int get(int ,int);
        void print();
};
 
matrix::matrix()
{  
        matrica=new int*[n];
       for ( i = 0; i < n; i++)
                matrica[i] = new int[m];
 
        for ( i = 0; i < n; i++)
               for ( j = 0; j < m; j++)
                        matrica[i][j] = rand() % 10;
 }
void matrix::print()
{
     for( i = 0; i < n; i++)
     {
         for(j = 0; j < m; j++)
               cout<<matrica[i][j]<<' ';
         cout<<"\n";
     }
 
}
 matrix::~matrix()
{
            for (i = 0; i < n; i++)
        free(matrica[i]);
 
free(matrica);
}
int matrix::get(int i,int j)
{
         if(i>=n||j>=m)
            return 0;
         cout<<matrica[i][j]<<'\n';
}
 
int main ()
{  
        system("cls");
        matrix object;
        object.print();
        int i, j;
         cout<<" get (i.j):"<<endl;
        cout<<"Enter i: ";
        cin>>i;
        cout<<"Enter j: ";
        cin>>j;
        if(object.get(i,j)==0)
           cout<<"i or j more or equal than n or m!\n";
        system("PAUSE");
        return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.09.2010, 18:57
Ответы с готовыми решениями:

Как сделать запрет ввода букв в поле для ввода input
Здравствуйте! Есть стандартное поле ввода &lt;input type='text' name='name1' size='30' maxlength='11'&gt; предназначенное для ввода...

Вот есть форма календаря для ввода дат, а для ввода времени?
Не ткнете, где взять можно??? Или может кодом кто поделится? Нужно часы и минуты выбирать из формы..... Как сделать - не согу...

Как создать поле для ввода текста?
{$apptype windows} {$reference System.Windows.Forms.dll} uses System.Text, System, System.Windows.Forms, ...

5
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
12.09.2010, 19:02
zhenya.ya,
C++
1
 void setSize();
в классе
Вне класса:
C++
1
2
3
4
5
6
7
8
9
10
11
void matrix::setSize()
{
    int first;
    int second;
    std::cout<<"Enter first size: ";
    std::cin>>first;
    std::cout<<"Enter second size: ";
    std::cin>>second;
    n=first;
    m=second;
}
Можно так же сделать чтобы размер вводился в main. А в setSize подавать уже данные значения. Тогда прототип меняется на
C++
1
void setSize(int, int);
а определение на:
C++
1
2
3
4
5
void matrix::setSize(int a, int b)
{
    n=a;
    m=b;
}
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
12.09.2010, 19:51
Цитата Сообщение от Lavroff Посмотреть сообщение
а определение на:
еще бы неплохо в этом методе перераспределение памяти устроить
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
12.09.2010, 19:55
fasked, Да. Точно)

C++
1
2
3
4
5
6
7
8
9
10
11
void matrix::setSize(int a, int b)
{
    for(int i=0; i<n; ++i)
        delete[] matrica[i];
    delete[]matrica;
    n=a;
    m=b;
    matrica=new int*[n];
    for(int i=0; i<n; ++i)
        matrica[i]=new int[m];
}
0
2 / 2 / 2
Регистрация: 29.11.2009
Сообщений: 320
12.09.2010, 20:13  [ТС]
Попробовал Ваши методы (оба). Но опять не все в порядке. Код "ложится" , а т.е. выскакивает
MSC++ debug library. Как с этим бороться?

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
63
64
65
66
67
68
69
70
71
72
73
74
class matrix
{ 
private:
        int i,j,m,n;
        int **matrica;
public: 
        matrix();
        ~matrix(); 
        int get(int ,int);
        void print();
        void setSize();
};
 void matrix::setSize()
{
    int first;
    int second;
    std::cout<<"Enter first size: ";
    std::cin>>first;
    std::cout<<"Enter second size: ";
    std::cin>>second;
    n=first;
    m=second;
 }
 
matrix::matrix()
{  
        matrica=new int*[n];
       for ( i = 0; i < n; i++)
                matrica[i] = new int[m];
 
        for ( i = 0; i < n; i++)
               for ( j = 0; j < m; j++)
                        matrica[i][j] = rand() % 10;
 }
void matrix::print()
{
     for( i = 0; i < n; i++)
     {
         for(j = 0; j < m; j++)
               cout<<matrica[i][j]<<' ';
         cout<<"\n";
     }
 
}
 matrix::~matrix()
{
     for (i = 0; i < n; i++)
     free(matrica[i]);
free(matrica);
}
int matrix::get(int i,int j)
{
         if(i>=n||j>=m)
            return 0;
         cout<<matrica[i][j]<<'\n';
}
 
int main ()
{  
        system("cls");
        matrix object;
        object.setSize();
        object.print();
        int i, j;
        cout<<" get (i.j):"<<endl;
        cout<<"Enter i: ";
        cin>>i;
        cout<<"Enter j: ";
        cin>>j;
        if(object.get(i,j)==0)
           cout<<"i or j more or equal than n or m!\n";
        system("PAUSE");
        return 0;
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
12.09.2010, 20:23
Оригинально. А ничего что в n и m мусор?

C++
1
2
3
4
5
6
7
8
9
10
matrix::matrix()
{  
        matrica=new int*[n];
       for ( i = 0; i < n; i++)
                matrica[i] = new int[m];
 
        for ( i = 0; i < n; i++)
               for ( j = 0; j < m; j++)
                        matrica[i][j] = rand() % 10;
 }
А вот так все работает. Функция setSize вызывается в конструкторе.

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
 
using namespace std;
 
class matrix
{ 
private:
        int i,j,m,n;
        int **matrica;
public: 
        matrix();
        ~matrix(); 
        int get(int ,int);
        void print();
                void setSize();
};
 void matrix::setSize()
{
    int first;
    int second;
    std::cout<<"Enter first size: ";
    std::cin>>first;
    std::cout<<"Enter second size: ";
    std::cin>>second;
    n=first;
    m=second;
 }
 
matrix::matrix()
{  
       setSize();
       matrica=new int*[n];
       for ( i = 0; i < n; i++)
                matrica[i] = new int[m];
 
        for ( i = 0; i < n; i++)
               for ( j = 0; j < m; j++)
                        matrica[i][j] = rand() % 10;
 }
void matrix::print()
{
     for( i = 0; i < n; i++)
     {
         for(j = 0; j < m; j++)
               cout<<matrica[i][j]<<' ';
         cout<<"\n";
     }
 
}
 matrix::~matrix()
{
     for (i = 0; i < n; i++)
     free(matrica[i]);
free(matrica);
}
int matrix::get(int i,int j)
{
         if(i>=n||j>=m)
            return 0;
         cout<<matrica[i][j]<<'\n';
}
 
int main ()
{  
        system("cls");
        matrix object;
        object.print();
        int i, j;
        cout<<" get (i.j):"<<endl;
        cout<<"Enter i: ";
        cin>>i;
        cout<<"Enter j: ";
        cin>>j;
        if(object.get(i,j)==0)
           cout<<"i or j more or equal than n or m!\n";
        system("PAUSE");
        return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2010, 20:23
Помогаю со студенческими работами здесь

Как создать стек для ввода данных
Данные ниже правильно написаны для добавления в стринггрид? p^.fio:=edi1.text; stringgrid1.cells; type uk=^zapis; ...

Форма для ввода переменных
Подскажите, пожалуйста, как можно организовать форму, в которую будут вводиться данные с клавиатуры, а не задаваться в html файле, как...

Создать очередь для символов. Создать функции для ввода и вывода элементов
Создать очередь для символов. Максимальный размер очереди вводится с экрана. Создать функции для ввода и вывода элементов очереди. Вводить...

Дописать программу для ручного ввода размерности матрицы с клавиатуры вместо константы в паскале
Добрый день! Дана матрица размером n х m в программе фиксированная 4*3. Переставляя ее строки и столбцы, добиться того, чтобы наибольший...

Программа для ввода переменных пользователем
Помогите пожалуйста , написать программу, что бы переменные вводились с клавиатуры (x,y,z) а) !x || !y &amp;&amp; z б) y || (x...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru