Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2015, 22:35   #1
Ne_programistka
 
Регистрация: 24.12.2015
Сообщений: 9
Восклицание Массив C++ Помогите девушке

Дан двумерный массив целых чисел. Определить количество нечетных элементов массива. Очень срочно нужно
Ne_programistka вне форума Ответить с цитированием
Старый 24.12.2015, 22:54   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
for(auto i = 0; i < n; ++i)
  for(auto j = 0; j < m; ++j)
    if(a[i][j] % 2)) ++count;
П.С. Если это не ваше может стоит задуматся о смене направления обучения?..
p51x вне форума Ответить с цитированием
Старый 24.12.2015, 23:03   #3
Ne_programistka
 
Регистрация: 24.12.2015
Сообщений: 9
По умолчанию

Просто это и не связано с моим направлением обучения)) сейчас попробую)

мой CodeBloks просто не хочет даже создавать обычный безразмерный массив

Последний раз редактировалось Stilet; 25.12.2015 в 10:21.
Ne_programistka вне форума Ответить с цитированием
Старый 25.12.2015, 10:22   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не хочет даже создавать обычный безразмерный массив
А как ты пробуешь, и какие ошибки лезут?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2015, 11:36   #5
taras-proger
Подтвердите свой е-майл
 
Регистрация: 12.11.2014
Сообщений: 470
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
for(auto i = 0; i < n; ++i)
  for(auto j = 0; j < m; ++j)
    if(a[i][j] % 2)) ++count;
П.С. Если это не ваше может стоит задуматся о смене направления обучения?..
auto здесь не уместен, так как 0 может быть любого целого типа, а количество элементов массива всегда должно быть типа size_t.
Код:
size_t i;
size_t j;
size_t count;
for (i=0, count=0; i<n; ++i)
{
 for (j=0; j<m; ++j)
 {
  if ((a[i][j]%2)!=0)
  {
   ++count;
  }
 }
}
, но лучше так:
Код:
int **row;
int *item;
size_t cout;
for (row=a+n-1, count=0; row>=a; --row)
{
 for (item=(*row)+m-1; item>=(*row); --item)
 {
   if (((*item)%2)!=0)
   {
    ++count;
   }
 }
}
.
taras-proger вне форума Ответить с цитированием
Старый 25.12.2015, 11:38   #6
taras-proger
Подтвердите свой е-майл
 
Регистрация: 12.11.2014
Сообщений: 470
По умолчанию

Цитата:
Сообщение от Ne_programistka Посмотреть сообщение
обычный безразмерный
Уж или обычный, или безразмерная суперэкзотика. Что нибудь одно.
taras-proger вне форума Ответить с цитированием
Старый 25.12.2015, 12:04   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
auto здесь не уместен, так как 0 может быть любого целого типа
Вы бред не несите, а прочитайте стандарт или попробуйте скомпилить.

Цитата:
а количество элементов массива всегда должно быть типа size_t.
Т.е.
Код:
int i;
a[i] = ..
не скомпилится?

Код:
size_t i;
size_t j;
size_t count;
for (i=0, count=0; i<n; ++i)
Зачем этот С стиль? Зачем мешать компилятору оптимизировать? Зачем гадить лишними переменными, если они не нужны после цикла?

Цитата:
но лучше так:
Вместо понятного кода, вы для новичка рпедлагает адресную арифметику и выкрутасы с указателями? Тем более, что выделение вы не указываете. Адресация хромает и т.д.

Цитата:
безразмерная суперэкзотика
С каких пор вектор или лист стал экзотикой?
p51x вне форума Ответить с цитированием
Старый 25.12.2015, 12:48   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Тарас, динамическая матрица так не создаётся.

Код:
// Создание динамической матрицы
struct index{unsigned int col, row;};// Структура индексов обрабатываемого массива

double **CreateMatrix(index x)
{
  double **A = new double *[x.row];
  for(unsigned int i=0; i < x.row; i++) A[i] = new double[x.col];
  return A;
}
А вот так, можно заполнить матрицу из строки.

Код:
// Заполнение матрицы из строки.
// В качестве разделителя используется пробел
double **FillingMatrixString(double **A, string s, index x)
{
  string m;
  unsigned int k = 0;
  for(unsigned int i = 0; i < x.row; i++)
  {
    for(unsigned int j = 0; j < x.col; j++)
    {
      m = "";
      while(s[k] == ' ' && k != s.length()) k++;
      while(s[k] != ' ' && k != s.length())
      {
        m += s[k++];
      }
      A[i][j] = atof(m.c_str());
    }
  }
  return A;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 25.12.2015 в 12:59.
Smitt&Wesson вне форума Ответить с цитированием
Старый 25.12.2015, 23:11   #9
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение

Т.е.
Код:
int i;
a[i] = ..
не скомпилится?
т. е. это - говнокод.
поскольку имеет место каст от к size_t.

полагаю нет нужды объяснять о проблемах
неконтролируемого каста знакового к беззнаковому?

Цитата:
Сообщение от p51x Посмотреть сообщение
С каких пор вектор или лист стал экзотикой?
ни то, ни другое никогда не являлось массивом.
_Bers вне форума Ответить с цитированием
Старый 26.12.2015, 02:56   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
т. е. это - говнокод.
поскольку имеет место каст от к size_t.
Напишите это в коммитиет стандартизации, т.к. в стандарте
Цитата:
5.2.1 Subscripting [expr.sub]
1 A postfix expression followed by an expression in square brackets is a postfix expression. One of the expressions
shall have the type “pointer to T” and the other shall have unscoped enumeration or integral type.
The result is an lvalue of type “T.” The type “T” shall be a completely-defined object type.62 The expression
E1[E2] is identical (by definition) to *((E1)+(E2))
Где здесь size_t?

Цитата:
полагаю нет нужды объяснять о проблемах
неконтролируемого каста знакового к беззнаковому?
Во-первых, каста нет
Во-вторых, если индексы не превосходят + диапозон, то ничего страшного.

Цитата:
ни то, ни другое никогда не являлось массивом.
Т.е. если мы к массиву добавим обертку с несколькими функциями для аллокации, реаллокации - он перестает быть массивом?
А стек у нас какой релегиозно правильный? На листе или на массиве тоже годится? А дерево тоже сюрприз не дерево...
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите девушке! Заполнить массив случайным образом, выделить в отдельные массивы буквы латинского алфавита, Svetlana90 Помощь студентам 0 19.05.2015 14:14
Помогите девушке alena1995 Помощь студентам 7 03.12.2014 17:03
Паскаль массив, помогите девушке!!!на учебную практику срочно нужно!!! анастасия56 Помощь студентам 1 30.05.2009 13:37