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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Динамический массив, Операции с динамическим массивом? 
V
    Опции темы
Russian
Дата 8.4.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите заполнить динамический двумерный массив размерностью N x M и вывести его на печать? А также затем найти  номера последних отрицательных элементов каждой строки и каждого столбца. Заранее всем огромное спасибо!!!
PM MAIL   Вверх
Xenon
Дата 9.4.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Номер в столбце? Тогда так:
Код

#include <iostream>

int main(int argc, char* argv[])
{
    int n = 0; //Количество рядов
    int m = 0; //Количество столбцов
    std::cout << "Enter n: ";
    std::cin >> n;
    std::cout << "Enter m: ";
    std::cin >> m;
    //Создаем массив
    int** arr = new int*[n];
    for (int i = 0; i < n; ++i) arr[i] = new int[m];
    //Заполняем массив
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++j)
        {
            std::cout << i << ' ' << j << ": ";
            std::cin >> arr[i][j];
        }
    }
    //Поиск отрицательных чисел в столбце
    std::cout << "In column:\n";
    for (int i = 0, index = - 1; i < m; ++i)
    {
        for (int j = 0; j < n; ++j) if (arr[j][i] < 0) index = j;
        if (index != - 1) std::cout << i << ") " << index << std::endl;
    }
    //Поиск отрицательного числа в строке
    std::cout << "In a row:\n";
    for (int i = 0, index = - 1; i < m; ++i)
    {
        for (int j = 0; j < n; ++j) if (arr[i][j] < 0) index = j;
        if (index != - 1) std::cout << i << ") " << index << std::endl;
    }
    //Удаляем массив
    for (int i = 0; i < n; ++i) delete [] arr[i];
    delete [] arr;
    _flushall(); 
    getchar();
    return 0;
}

[UPDATE] По ряды забыл

Это сообщение отредактировал(а) Xenon - 9.4.2007, 22:41


--------------------
user posted image  
PM MAIL   Вверх
GIK
Дата 9.4.2007, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

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



Вот еще вариан, програмулька выводит и сохраняет индексы последних отрицательных чисел в столбце:

Код

#include <iostream>
#include <conio>
 using namespace std;

int main()
{  int i, j, n, m;
   cout<<"Vvedite kol-vo strok :";
   cin>>n;
   cout<<"Vvedite kol-vo stolbcov :";
   cin>>m;

   int **mas = new int*[n];
   for(i=0; i<n; i++)
     mas[i]=new int[m];

   cout<<"Vvedite znachenia massivov:"<<endl;
   for(i=0; i<n; i++){
     for(j=0; j<m; j++){
      cin>>mas[i][j];

     }
     cout<<endl;
   }
   cout<<"Vash massiv imeet vid:"<<endl;
   for(i=0; i<n; i++){
     for(j=0; j<m; j++){
      cout<<" "<<mas[i][j]<<" ";
     }  cout<<endl;
   }

   int *indBegin = new int[m]; 
   int *indEnd = new int[m]; 

    for(j=0; j<m; j++){
      indBegin[j]=-1;
      indEnd[j]=-1;
    }

   bool go=false;
   for(i=0; i<m; i++){
    for(j=0; j<n; j++)
    {
      if(mas[j][i]<0 && !go)
       {
         indBegin[i]=j; 
         indEnd[i]=j; 
         go=true;

       } else 
      if(mas[j][i]<0 && go)
       {
         indEnd[i]=j;
       }
      else
       { 
         go=false;
       }
   }
    go=false;
  }


   for(i=0; i<m; i++){
    cout<<"Poslednie otricatelnie ellementi stroki "<< i+1 <<" ";
    for(j=indBegin[i]; j<=indEnd[i]; j++){ 
     if(j!=-1) 
       cout<<" "<<mas[j][i];
    }
    cout<<endl;
   }

   for(i=0; i<n; i++){
    delete [] mas[i];
  }
    delete [] mas;
    delete indBegin;
    delete indEnd;

   getch();

    return 0;
}



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Night_xxx
Дата 9.4.2007, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 7.1.2007
Где: Набережные Челны

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



А вот и мой вариантик прилетает:

Код

#include "stdafx.h"
#include "iomanip.h"
#include "iomanip.h"
#include "stdlib.h"

void main()
{
    int N,M,i,j,l,stroca,stolbec;
    
    cout<<"N= "; cin>>N;
    cout<<"M= "; cin>>M;
    cout<<endl;
    
    int **mas=new int*[N];
    
    for (i = 0; i < N; i++)
    {
        mas[i] = new int[M];
    }
    
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            cout<<"Enter mas# "<<i<<" "<<j<<"  "; 
            cin>>mas[i][j];
        }
        cout<<endl;
    }
    system("cls");
    
    cout<<"\t\t\t         mas\n\n";
    for(i=0;i<N;i++)
    {
        cout<<"\n\t\t\t";
        for(j=0;j<M;j++)
        {
            cout<<mas[i][j]<<"   ";
        }
        cout<<endl;
    }
    
    cout<<"\n------------------------------------------------------------------------------\n";
    
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            if(mas[i][j]<0)
            {
                l=0; l=j+1;
            }
        }
        if(l!=0){cout<<"\nV stroce nomer "<<i+1<<" poslednii otricatelinii element imeet nomer "<<l;}
        cout<<endl;
    }
    
    cout<<"\n------------------------------------------------------------------------------\n";
    
    for(j=0;j<M;j++)
    {
        for(i=0;i<N;i++)
        {
            if(mas[i][j]<0)
            {
                l=0;l=i+1;
            }
        }
        if(l!=0){cout<<"\nV stolbce nomer "<<j+1<<" poslednii otricatelinii element imeet nomer "<<l;}
        cout<<endl;
    }
    cout<<endl;
    
    delete [] mas;
}


Добавлено через 1 минуту и 31 секунду
Приветик 
Xenon
Как жизнь?
PM MAIL   Вверх
GIK
Дата 9.4.2007, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

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



Night_xxx
проверял хоть нет? smile
У меня вот совсем не то выдает... smile


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Night_xxx
Дата 9.4.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 7.1.2007
Где: Набережные Челны

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



GIK

Конечно проверял и все правильно, а что не так???????????????????????????????
PM MAIL   Вверх
Xenon
Дата 9.4.2007, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Night_xxx, как минимум в цикле
Код

for(i=0;i<N;i++)
{
    for(j=0;j<M;j++)
    {
        if(mas[i][j]<0)
        {
            l=0; l=j+1;
        }
    }
    if(l!=0){cout<<"\nV stroce nomer "<<i+1<<" poslednii otricatelinii element imeet nomer "<<l;}
    cout<<endl;
}


При проверке условия
Код

if(l!=0){cout<<"\nV stroce nomer "<<i+1<<" poslednii otricatelinii element imeet nomer "<<l;}

Переменная l может быть не иницилизированна, что приведет совсем не к тому результату, что ты ожидаешь.


--------------------
user posted image  
PM MAIL   Вверх
Night_xxx
Дата 9.4.2007, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 7.1.2007
Где: Набережные Челны

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



Ну фигли ну тогда просто проинициализировать вначале нулем и все. Делов то господа!!!!!!!!

Код

#include "stdafx.h"
#include "iomanip.h"
#include "iomanip.h"
#include "stdlib.h"

void main()
{
    int N,M,i,j,l=0,stroca,stolbec;       //вот тут подправляем и все
    
    cout<<"N= "; cin>>N;
    cout<<"M= "; cin>>M;
    cout<<endl;
    
    int **mas=new int*[N];
    
    for (i = 0; i < N; i++)
    {
        mas[i] = new int[M];
    }
    
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            cout<<"Enter mas# "<<i<<" "<<j<<"  "; 
            cin>>mas[i][j];
        }
        cout<<endl;
    }
    system("cls");
    
    cout<<"\t\t\t         mas\n\n";
    for(i=0;i<N;i++)
    {
        cout<<"\n\t\t\t";
        for(j=0;j<M;j++)
        {
            cout<<mas[i][j]<<"   ";
        }
        cout<<endl;
    }
    
    cout<<"\n------------------------------------------------------------------------------\n";
    
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            if(mas[i][j]<0)
            {
                l=0; l=j+1;
            }
        }
        if(l!=0){cout<<"\nV stroce nomer "<<i+1<<" poslednii otricatelinii element imeet nomer "<<l;}
        cout<<endl;
    }
    
    cout<<"\n------------------------------------------------------------------------------\n";
    
    for(j=0;j<M;j++)
    {
        for(i=0;i<N;i++)
        {
            if(mas[i][j]<0)
            {
                l=0;l=i+1;
            }
        }
        if(l!=0){cout<<"\nV stolbce nomer "<<j+1<<" poslednii otricatelinii element imeet nomer "<<l;}
        cout<<endl;
    }
    cout<<endl;
    
    delete [] mas;
}

PM MAIL   Вверх
GIK
Дата 9.4.2007, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

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



Может у меня компилер старый, но булдер 6 выдает не корректные результаты.
К примеру если вводить не отрицательные числа, то выдает
V stroce nomer poslednii otricatelinii element imeet nomer :1223213123
т.е. многозначное число.
И если вводить отрицательные числа, то выдает тоже не корректный результат.
Может я что-то не првильно делаю, но я вставил в код только  
getch();
чтобы проверить что выдает.


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Xenon
Дата 9.4.2007, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Night_xxx, ты уверен? Тестил? А вот это все что?
Цитата

                        4   5   -4

                        5   6   -4

                        3   2   5

                        -2   5   4
---------------------------------------------------------------------------
V stroce nomer 1 poslednii otricatelinii element imeet nomer 3
V stroce nomer 2 poslednii otricatelinii element imeet nomer 3
V stroce nomer 3 poslednii otricatelinii element imeet nomer 3?
V stroce nomer 4 poslednii otricatelinii element imeet nomer 1
---------------------------------------------------------------------------
V stolbce nomer 1 poslednii otricatelinii element imeet nomer 4
V stolbce nomer 2 poslednii otricatelinii element imeet nomer 4?
V stolbce nomer 3 poslednii otricatelinii element imeet nomer 2


Цитата

                        1   2   -4

                        1   2   4

                        1   3   -5

---------------------------------------------------------------
V stroce nomer 1 poslednii otricatelinii element imeet nomer 3
V stroce nomer 2 poslednii otricatelinii element imeet nomer 3 ?
V stroce nomer 3 poslednii otricatelinii element imeet nomer 3
---------------------------------------------------------------
V stolbce nomer 1 poslednii otricatelinii element imeet nomer 3 ?
V stolbce nomer 2 poslednii otricatelinii element imeet nomer 3 ?
V stolbce nomer 3 poslednii otricatelinii element imeet nomer 3


Это сообщение отредактировал(а) Xenon - 9.4.2007, 23:24


--------------------
user posted image  
PM MAIL   Вверх
Night_xxx
Дата 9.4.2007, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 7.1.2007
Где: Набережные Челны

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



Да вы меня поражаете господа из-за такой мелочи подняли кипиш : "АААААААА караул ошибка!!!!!!!!!"
Смотрите только что вписать и все!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Код

#include "stdafx.h"
#include "iomanip.h"
#include "iomanip.h"
#include "stdlib.h"

void main()
{
    int N,M,i,j,l=0,stroca,stolbec;     
    
    cout<<"N= "; cin>>N;
    cout<<"M= "; cin>>M;
    cout<<endl;
    
    int **mas=new int*[N];
    
    for (i = 0; i < N; i++)
    {
        mas[i] = new int[M];
    }
    
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            cout<<"Enter mas# "<<i<<" "<<j<<"  "; 
            cin>>mas[i][j];
        }
        cout<<endl;
    }
    system("cls");
    
    cout<<"\t\t\t         mas\n\n";
    for(i=0;i<N;i++)
    {
        cout<<"\n\t\t\t";
        for(j=0;j<M;j++)
        {
            cout<<mas[i][j]<<"   ";
        }
        cout<<endl;
    }
    
    cout<<"\n------------------------------------------------------------------------------\n";
    
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            if(mas[i][j]<0)
            {
                l=0; l=j+1;
            }
        }
        if(l!=0){cout<<"\nV stroce nomer "<<i+1<<" poslednii otricatelinii element imeet nomer "<<l; l=0;}
        cout<<endl;
    }
    
    cout<<"\n------------------------------------------------------------------------------\n";
    
    for(j=0;j<M;j++)
    {
        for(i=0;i<N;i++)
        {
            if(mas[i][j]<0)
            {
                l=0;l=i+1;
            }
        }
        if(l!=0){cout<<"\nV stolbce nomer "<<j+1<<" poslednii otricatelinii element imeet nomer "<<l; l=0;}     //l=0
        cout<<endl;
    }
    cout<<endl;
    
    delete [] mas;
}


Добавлено через 2 минуты
Да увидеть эту мелочь проще простого. Ну а Xenon аж не потрудился выделить. Да ну даете!!!!!!! smile 
PM MAIL   Вверх
Xenon
Дата 9.4.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Ну, просто существует такая традиция - код сначала отлаживают локально, потом выкладывают рабочую версию, а не исправляют по ходу действия. Человеку эту задачу сдавать же.


--------------------
user posted image  
PM MAIL   Вверх
Night_xxx
Дата 9.4.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 7.1.2007
Где: Набережные Челны

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



Так я говору про то что вот например посмотрели вы сразу написанную мною программку.
И вот увидели вы сразу ошибочку, точнее недочет и нет чтобы дописать дескать вот ещё вот это надо дописать вы начали ААААА
да тут вот же какая ошибка!!!!!!
  
Ну ведь секундное исправление и все!!!!  Я вас не понимаю
PM MAIL   Вверх
Xenon
Дата 9.4.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Night_xxx, я тебе на одну ошибку указал. К тому же не всем хочется рыться в чужом коде, поэтому тебя просто проинформировали, мол, ошибка у тебя, чувак - ищи.


--------------------
user posted image  
PM MAIL   Вверх
Night_xxx
Дата 9.4.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 7.1.2007
Где: Набережные Челны

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




А что у меня код непонятно написан?
Xenon
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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