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

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

Войти
Регистрация
Восстановить пароль
 
netiv1
11 / 11 / 2
Регистрация: 12.10.2011
Сообщений: 42
#1

Правильно ли я выделил память под элементы массива - C++

22.05.2012, 19:59. Просмотров 411. Ответов 9
Метки нет (Все метки)

Задание: Дана матрица N*M, содержащая оценки класса за второе полугодие. Подсчитайте количество неуспевающих учеников(имеются оценки 0,1,2,3).
Вот сделал, но не уверен что правильно выделил память т.к. массив двумерный. Прога то работает, но она работает даже при выделении памяти под a= new int *[0], поэтому и проверить норм не могу, может как-то по другому надо память выделять.
Пожалуйста посмотрите у кого есть немного времени. И подскажите как определить выделилась ли память корректно.
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
#include <stdio.h>
#include <conio.h>
main()
{
int i,j,n,m,k=0;
int **a;
puts("Vvedite kol. stolbcov i strok (cherez probel):");
scanf("%d %d",&n,&m);
  a=new int *[n];
  for (i=0; i<n; i++)
    a[i]=new int[m];
puts("\n Input Elementi:");
  for (i=0; i<n; i++)
  for (j=0; j<m; j++)
    scanf("%d",&a[i][j]);
  for (i=0; i<n; i++)
  for (j=0; j<m; j++)
    if ((a[i][j] == 0) || (a[i][j] == 1) || (a[i][j] == 2) || (a[i][j] == 3))
    k = k+=1;
  printf("Kolichestvo neyspevausсih studentov=%d", k);
  for (i=0; i<n; i++)
  delete[] a[i];
  delete []a;
  getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2012, 19:59     Правильно ли я выделил память под элементы массива
Посмотрите здесь:

Подсчитать, сколько элементов ввел пользователь, выделить память под два массива и переписать в них элементы - C++
Ребята помогите решить задачу: Пользователь вводит размер массива и заполняет его с клавиатуры. Необходимо подсчитать, сколько...

Как правильно выделить память под структуру? - C++
имеются структуры struct ship { struct point first; struct point last; }; struct point { int x;

Как правильно выделить память под двумерный массив в шаблоне? - C++
template &lt;class T&gt; T* array &lt;T&gt;::f (unsigned size) { //...... T* templateBuf = new T ; for (unsigned index = 0;...

Элементы заданного массива расположить в обратном порядке. Правильно ли решена задача? - C++
В общем задача такая : элементы заданного массива T(k) расположить в обратном порядке: t k,t k-1,...,t2,t1. // массив.cpp : main...

Правильно ли очищается память? - C++
сть программа которая работает с динамическим массивом. работает она так: int** a = new int*; for(int i=0; i&lt;nl i++) a = new...

Правильно ли я освобождаю память - C++
Вот есть примерно такой код. Метод baseFactory() постоянно вызывается и там генерируется новый объект класса. Правильно ли я освобождаю...

Как правильно освободить память - C++
Написал вот такой костыль: wchar_t* getDate() { time_t seconds = time(NULL); tm timeinfo = *(localtime(&amp;seconds)); return...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
Заблокирован
22.05.2012, 20:03     Правильно ли я выделил память под элементы массива #2
netiv1, нет, new/delete это с++. В си памятью занимаются функции malloc/calloc/realloc.

Добавлено через 1 минуту
Цитата Сообщение от netiv1 Посмотреть сообщение
И подскажите как определить выделилась ли память корректно.
можешь не сомневаться, все что попросил, все выделится.
netiv1
11 / 11 / 2
Регистрация: 12.10.2011
Сообщений: 42
22.05.2012, 20:55  [ТС]     Правильно ли я выделил память под элементы массива #3
Цитата Сообщение от alkagolik Посмотреть сообщение
netiv1, нет, new/delete это с++. В си памятью занимаются функции malloc/calloc/realloc.
А вообще правильно ли решена задача, если не учитывать что new/delete это с++?
alkagolik
Заблокирован
22.05.2012, 21:05     Правильно ли я выделил память под элементы массива #4
да. строку 19 перепиши так
C
1
++k;
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
22.05.2012, 21:14     Правильно ли я выделил память под элементы массива #5
Цитата Сообщение от netiv1 Посмотреть сообщение
a=new int *[n];
Цитата Сообщение от netiv1 Посмотреть сообщение
Правильно ли я выделил память под элементы массива
Нет, не правильно!!!
Ilyawow
24 / 24 / 5
Регистрация: 18.11.2011
Сообщений: 266
24.05.2012, 07:56     Правильно ли я выделил память под элементы массива #6
Память выделяется так
C++
1
2
A= new int [N];
delete A;
вот так
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.05.2012, 10:01     Правильно ли я выделил память под элементы массива #7
Цитата Сообщение от Ilyawow Посмотреть сообщение
вот так
Не правильно! А вот так верно
C++
1
2
A = new int [N];
delete [] A;
netiv1
11 / 11 / 2
Регистрация: 12.10.2011
Сообщений: 42
24.05.2012, 20:10  [ТС]     Правильно ли я выделил память под элементы массива #8
Цитата Сообщение от go Посмотреть сообщение
Не правильно! А вот так верно
C++
1
2
A = new int [N];
delete [] A;
Запутался совсем, а почему не так?
C++
1
A = new int *[N];
Вот написал фрагмент проги:
допустим массив m[3][4]:
C++
1
2
3
4
5
6
7
8
int **m;
m=new int*[3];   // захват памяти для указателей
for (int i=0; i<3; i++)  //захват памяти для элементов
    m[i]=new int[4];  
… // обработка элементов
for (int i=0; i<3; i++)  // освобождение памяти занятой под элементы
     delete [] m[i];
delete [] m;  //освобождение памяти занятой под указатели
Разве должно быть так? Но почему?
C++
1
m=new int [3]
alkagolik
Заблокирован
24.05.2012, 20:40     Правильно ли я выделил память под элементы массива #9
Цитата Сообщение от netiv1 Посмотреть сообщение
Вот написал фрагмент проги:
допустим массив m[3][4]:
верный фрагмент, но это никак не Си.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2012, 19:03     Правильно ли я выделил память под элементы массива
Еще ссылки по теме:

Как правильно освобождать память - C++
Подскажите пожалуйста ,где память чистить в таком случае?Или как это правильно сделать. char *funk(.....){ char *name = new...

Как правильно освободить память - C++
Здравствуйте все! Подскажите, как правильно освобождать память, выделенную под массив оператором new? int *Arr = new int; ... delete...

Как правильно освободить память - C++
Здрасте! (Тема: Шаблоны функций.) Не могу правильно написать метод для освобождения памяти. В мейне делаю все необходимые мне...

Не могу правильно выделить память - C++
Прошу помощи #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;windows.h&gt; #include &lt;memory.h&gt; #include...

Как правильно освободить память - C++
Есть функция char* md5(const char*). Как освободить память выделенную ею? #include &lt;openssl\md5.h&gt; char* md5(const char* text) { ...


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

Или воспользуйтесь поиском по форуму:
silent_1991
29.05.2012, 19:03     Правильно ли я выделил память под элементы массива
  #10
 Комментарий модератора 
Перенесено из "С для начинающих"
Yandex
Объявления
29.05.2012, 19:03     Правильно ли я выделил память под элементы массива
Ответ Создать тему
Опции темы

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