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

ДИНАМИЧЕСКИЙ МАССИВ - C++

Восстановить пароль Регистрация
 
Danil-za
3 / 3 / 0
Регистрация: 16.05.2009
Сообщений: 69
20.01.2010, 17:21     ДИНАМИЧЕСКИЙ МАССИВ #1
Составить программу для подсчёта произведения элементов двумерной целочисленной таблицы В, состоящей из k строк и p столбцов, имеющих значения, кратные 3. Использовать динамический массив.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2010, 17:21     ДИНАМИЧЕСКИЙ МАССИВ
Посмотрите здесь:

C++ статический массив ----> динамический массив
Динамический массив C++
динамический массив C++
Динамический массив C++
C++ Динамический массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
20.01.2010, 17:31     ДИНАМИЧЕСКИЙ МАССИВ #2
C++
1
2
3
4
5
6
7
8
int **a;
a=new int*[k];
for(int i=0;i<k;i++)
   a[i]=new int[p]
int pr=1;
for(int i=0;i<k;i++)
   for(int j=0;j<p;j++)
      pr*=a[i][j]
Добавишь еще заполнение массива там...
Danil-za
3 / 3 / 0
Регистрация: 16.05.2009
Сообщений: 69
20.01.2010, 18:46  [ТС]     ДИНАМИЧЕСКИЙ МАССИВ #3
Больше всего затрудняло, как в эту программу вставить условие, чтобы считало произведение значений кратные 3.
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
20.01.2010, 18:52     ДИНАМИЧЕСКИЙ МАССИВ #4
в цикле вставляешь
C++
1
if(a[i][j]%3==0)
и считаешь произведение
Danil-za
3 / 3 / 0
Регистрация: 16.05.2009
Сообщений: 69
20.01.2010, 19:21  [ТС]     ДИНАМИЧЕСКИЙ МАССИВ #5
Получилось, что-то вроде этого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream.h>
void main()
{int k,p;
cout<<"BBeguTe k u p:";
cin>>k>>p;
int **B;
B=new int*[k];
for(int i=0;i<k;i++)
   B[i]=new int[p];
int pr=1;
  for(int j=0;j<p;j++)
 
if (B[i][j]%3==0)
      pr*=B[i][j];
cout<<pr;
}
но чё-то не запускается
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.01.2010, 19:40     ДИНАМИЧЕСКИЙ МАССИВ #6
Цитата Сообщение от Danil-za Посмотреть сообщение
но чё-то не запускается
Желательно до строки 13 (где Вы используете значения массива B[][]) присвоить значения элементам массива B[][].
Danil-za
3 / 3 / 0
Регистрация: 16.05.2009
Сообщений: 69
20.01.2010, 20:44  [ТС]     ДИНАМИЧЕСКИЙ МАССИВ #7
Подскажите, что о5 не так )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream.h>
void main()
{int k,p;
int **B;
B=new int*[k];
for(int i=0;i<k;i++)
   B[i]=new int[p];
int pr=1;
  for(int j=0;j<p;j++)
B[i][j]=rand()%10-5; // owu6Ka !!!
if (B[i][j]%3==0)
      pr*=B[i][j];
cout<<pr;
}
Добавлено через 45 минут
Тема ещё актуальна...
syd2010
23 / 43 / 1
Регистрация: 14.12.2009
Сообщений: 273
20.01.2010, 21:02     ДИНАМИЧЕСКИЙ МАССИВ #8
C++
1
2
3
4
5
6
7
8
9
for (int i=0;i<k;i++)
for(int j=0;j<p;j++)
{
B[i][j]=rand()%10-5;
if (B[i][j]%3==0)
      pr*=B[i][j];
}
cout<< pr;
delete b[];
Добавлено через 1 минуту
не забываем освобождать выделенную память))
Danil-za
3 / 3 / 0
Регистрация: 16.05.2009
Сообщений: 69
20.01.2010, 21:06  [ТС]     ДИНАМИЧЕСКИЙ МАССИВ #9
Цитата Сообщение от syd2010 Посмотреть сообщение
не забываем освобождать выделенную память))
Освободим после проверки

Добавлено через 3 минуты
Цитата Сообщение от syd2010 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
for (int i=0;i<k;i++)
for(int j=0;j<p;j++)
{
B[i][j]=rand()%10-5;
if (B[i][j]%3==0)
      pr*=B[i][j];
}
cout<< pr;
delete b[];
Добавлено через 1 минуту
не забываем освобождать выделенную память))
Не работает, напишите кто точно знает полностью рабочую задачу. Все варианты перепробовал.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.01.2010, 06:09     ДИНАМИЧЕСКИЙ МАССИВ #10
Цитата Сообщение от Danil-za Посмотреть сообщение
Подскажите, что о5 не так )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream.h>
void main()
{int k,p;
int **B;
B=new int*[k];
for(int i=0;i<k;i++)
 B[i]=new int[p];
int pr=1;
 for(int j=0;j<p;j++)
B[i][j]=rand()%10-5; // owu6Ka !!!
if (B[i][j]%3==0)
 pr*=B[i][j];
cout<<pr;
}
Добавлено через 45 минут
Тема ещё актуальна...
Для того что бы работатала функция rand() необходимо подключить #include <stdlib.h>
Для того чтобы создавать двухмерный массив размером k*p необходимо сначало присвоить значения переменным k и p
Вот этот кусок кода поясню в комментариях отдельно:
C++
1
2
3
4
5
6
int pr=1;
 for(int j=0;j<p;j++)
B[i][j]=rand()%10-5; // Чему в этом месте равно i ?
if (B[i][j]%3==0)// эта строка будет выполняться только один раз
 pr*=B[i][j];
cout<<pr;
В общем эта часть кода должна выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
int pr=1;
for(i=0; i<k; i++)
 for(int j=0;j<p;j++)
{
B[i][j]=rand()%10-5; // owu6Ka !!!
if (B[i][j]%3==0)
 pr*=B[i][j];
}
// в этом месте по желанию можно предусмотреть если pr останется равно 1.
cout<<pr;
Danil-za
3 / 3 / 0
Регистрация: 16.05.2009
Сообщений: 69
21.01.2010, 16:13  [ТС]     ДИНАМИЧЕСКИЙ МАССИВ #11
valeriikozlov, у меня выходит ноль при любых значениях

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream.h>
#include<stdlib.h>
void main()
{int const k=5,p=3;
int **B;
B=new int*[k];
for(int i=0;i<k;i++)
   B[i]=new int[p];
int pr=1;
for(i=0; i<k; i++)
 for(int j=0;j<p;j++)
{
B[i][j]=rand()%10-5;
if (B[i][j]%3==0)
 pr*=B[i][j];
}
cout<<pr;
}
syd2010
23 / 43 / 1
Регистрация: 14.12.2009
Сообщений: 273
21.01.2010, 16:19     ДИНАМИЧЕСКИЙ МАССИВ #12
у меня билдере она и без этого модуля прет
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.01.2010, 16:37     ДИНАМИЧЕСКИЙ МАССИВ #13
Danil-za,
Запустите Вашу программу вот так (там дописан только вывод на экран самих элементов массива, что бы было видно из-за чего происходит постоянный вывод нуля):
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
#include<iostream.h>
#include<stdlib.h>
void main()
{int const k=5,p=3;
int **B;
B=new int*[k];
for(int i=0;i<k;i++)
   B[i]=new int[p];
int pr=1;
for(i=0; i<k; i++)
 for(int j=0;j<p;j++)
{
B[i][j]=rand()%10-5;
if (B[i][j]%3==0)
 pr*=B[i][j];
}
cout<<pr;
// âûâîä Г§Г*Г*Г·ГҐГ*ГЁГ© Г¬Г*Г±Г±ГЁГўГ* Г*Г* ГЅГЄГ°Г*Г*
cout<<endl;
for(i=0; i<k; i++)
{
 for(int j=0;j<p;j++)
     cout<<B[i][j]<<"  ";
    cout<<endl;
}
}
Наверняка у Вас получается также как и у меня. Мы перебираем элементы массива по строчно. В середине массива имеются элементы массива кратные 3. Но также после этих элементов есть элемент(ы) равные нулю. Так вот если элемент массива равен нулю, то он тоже подходит под условие:
if (B[i][j]%3==0)
Соответственно pr умножается на этот элемент и становится равной нулю. Если хотите от этого избавится (исключить умножение на нули), то сделайте так:
if (B[i][j]%3==0 && B[i][j]!=0 )
Кстати можете заметить, что сколько раз Вы не запускаете программу, элементы массива всегда одинаковые избавится можно и от этого: http://www.cyberforum.ru/cpp-beginners/thread44753.html
Danil-za
3 / 3 / 0
Регистрация: 16.05.2009
Сообщений: 69
21.01.2010, 16:42  [ТС]     ДИНАМИЧЕСКИЙ МАССИВ #14
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Так вот если элемент массива равен нулю, то он тоже подходит под условие: Соответственно pr умножается на этот элемент и становится равной нулю. Если хотите от этого избавится (исключить умножение на нули)
А как подходит под условие, разве ноль кратен 3 ?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.01.2010, 16:45     ДИНАМИЧЕСКИЙ МАССИВ #15
Цитата Сообщение от Danil-za Посмотреть сообщение
А как подходит под условие, разве ноль кратен 3 ?
Операция % находит целый остаток от деления, а это значит что:
5%3 даст в ответе 2
4%3 даст в ответе 1
3%3 даст в ответе 0
2%3 даст в ответе 2
1%3 даст в ответе 1
0%3 даст в ответе 0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2010, 16:46     ДИНАМИЧЕСКИЙ МАССИВ
Еще ссылки по теме:

C++ Динамический массив
C++ Переделать динамический массив на статический массив
C++ Массив и память. Как создать динамический массив?

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

Или воспользуйтесь поиском по форуму:
Danil-za
3 / 3 / 0
Регистрация: 16.05.2009
Сообщений: 69
21.01.2010, 16:46  [ТС]     ДИНАМИЧЕСКИЙ МАССИВ #16
valeriikozlov, спасибо за помощь
Yandex
Объявления
21.01.2010, 16:46     ДИНАМИЧЕСКИЙ МАССИВ
Ответ Создать тему
Опции темы

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