Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [c/c++]двухмерный массив 
:(
    Опции темы
Infesta
Дата 8.12.2010, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



Доброго времяни суток.

предусмотреть динамический захват и освобождение памяти (операции new, delete), решение оформить в виде отдельной функции, возвращающей требуемый результат. На печать в виде таблиц вывести исходный двухмерный динамический массив. Исходная матрица формируется с клавиатуры функцией main()
Размеры массивов n, m  и значения элементов массива — с клавиатуры:

Дана целочисленная квадратная матрица. Определить:
произведение элементов в тех строках, которые не содержат отрицательных элементов;
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include<iostream>
//---------------------------------------------------------------------------

#pragma argsused
using namespace std;
void kol_stol(int,int, int **x);
void main(void)    {
int  n, m, i, j,**x;

cout<<"Vvedite znacheniya n & m:"<<endl;

cin>>n;
cin>>m;
 if(cin.good())
           {
  x=new int* [n];
  for(i=0;i<n;i++)
      x[i]=new int [m];
      }
      else {cout<<"Vvedeny ne chislovie znacheniya(Povtorite vvod)"<<endl;
        cin.clear();
        _flushall();}

      cout<<"Vvedite element massiva"<<endl;
   for(i=0;i<n;i++){
    for (j=0;j<m;j++) {cin>>x[i] [j];}}
 

     cout<<endl<<"Ishodnaya matrica:"<<endl;
   for(i=0;i<n;i++){
       for (j=0;j<m;j++){
            printf("%d%c", x[i][j], (j==m-1)? '\n' : '  ');}}

proizv(n,m,x);
getch();

for(i=0; i<n; i++)
    delete [ ] x[i];
     delete [ ] x;


}
void proizv(int n,int m, int **x)  {
int i,j,rez,k=0,res;
        for(i=0;i<n;i++)
                {
                for (j=0;j<m;j++)
                        {
                                if(x[i][j]>=0)
                                {
                                 for {i=0;i<n;i++)
                                 {
                                  for(j=0;j<m;j++){res=res*x[i][j]}}  break;}}}}


cout<<endl<<"OTVET:"<<rez<<endl;
}

подскажите пожалуйста, как организовать циклы, чтобы в функции proizv считало произведение элементов в тех строках, которые не содержат отрицательных элементов. Зарание благодарна.
PM MAIL   Вверх
mrbrooks
Дата 8.12.2010, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 16
Всего: 306



если нужно производить умножение по строкам массива, то, без фанатизма, можно так:
Код

void proizv(int n, int m, int **x)
{
    int result = 1;
    for(int i = 0; i<n; ++i)
    {
        for(int j = 0; j<m; ++j)
        {
            if(x[i][j] > 0) result *= x[i][j];
            else 
            {
                result = 0;
                break;
            }
        }
        std::cout << "line " << i << '\t' << "result " << result << std::endl;
        result = 1;
    }
}

PM MAIL   Вверх
Infesta
Дата 8.12.2010, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



Спасибо! )
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.