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

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

Восстановить пароль Регистрация
 
netiv1
11 / 11 / 2
Регистрация: 12.10.2011
Сообщений: 42
22.05.2012, 19:59     Правильно ли я выделил память под элементы массива #1
Задание: Дана матрица 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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
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
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
22.05.2012, 21:05     Правильно ли я выделил память под элементы массива #4
да. строку 19 перепиши так
C
1
++k;
go
Эксперт C++
3582 / 1362 / 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++
3582 / 1362 / 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
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
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++
Правильно ли я освобождаю память C++
C++ Элементы заданного массива расположить в обратном порядке. Правильно ли решена задача?

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

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

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