Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

22.05.2012, 19:59. Просмотров 447. Ответов 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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2012, 19:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Правильно ли я выделил память под элементы массива (C++):

Подсчитать, сколько элементов ввел пользователь, выделить память под два массива и переписать в них элементы - 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++
есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; void sort_1(const...

Элементы заданного массива расположить в обратном порядке. Правильно ли решена задача? - 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...

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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