Вернуться   Компьютерный форум > Компьютеры > Программы > Программирование
 
 
Опции темы
Старый 15.12.2012, 22:02   #1
Новичок
 
Регистрация: 30.12.2011
Сообщений: 7
Репутация: 0
Exclamation Удалить из матрицы все столбцы, в которых нет отрицательных элементов(С++)

Код:
int otr=0;
    for(j=0;j<m;j++)
        {
            for(i=0;i<n;i++)
            {
                if (A[i][j]<0)
                otr=otr+1;
                }
        if (otr=0)
            {
                for (i=0;i<n;i++)
                {
            A[i][j]=A[i+1][j];
                }
        
            m--;
            otr=0;
            }
        }
        cout << "Массив:" << endl;
          for (int i = 0; i < n; ++i) 
    {
      for(int j = 0; j < m; ++j) 
        
          cout << A[i][j] << " ";
            cout <<endl;   
    }
Вообще ничё не удаляет( Где ошибка? =(
Banni123 вне форума  
Старый 16.12.2012, 02:48   #2
Новичок
 
Аватар для Qiker
 
Регистрация: 10.07.2009
Сообщений: 227
Репутация: 17
По умолчанию

Код:
// 2.cpp: определяет точку входа для консольного приложения.
//Удалить из матрицы все столбцы, в которых нет отрицательных элементов

#include "stdafx.h"
#include "stdlib.h"
#include <windows.h>
#include <iostream>
#include <windows.h>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL,"");
	int **a;
	int n,m;
	int j;
	cout<<"Введите количество строк: ";
	cin>>n;
	cout<<"Введите количество столбцов: ";
	cin>>m;
	a=new int*[n];
    for(int i=0;i<n;i++) a[i]=new int[m];

	for (int i=0; i<n; i++)
		for (int j=0; j<m; j++)
		{
			cout<<"Введите "<<j+1<<" элемент "<<i+1<<" строки: ";
			cin>>a[i][j];
		}

	system("cls");
	for (int i=0; i<n; i++)
	{
		for (j=0; j<m; j++)
			cout<<a[i][j]<<" ";
		cout<<endl;
	}		
	int flag=1;
	for (int i=0; i<m; i++)
	{
		for (j=0; j<n; j++)
			if ( a[j][i] < 0 ) { flag=0; break; }
			
			if ( flag ) {
				
				for (int y=0; y<n; y++)
					for (int k=i; k<m-1; k++)
					a[y][k] = a[y][k+1];
				
				flag=0;
				m--;
				i--;
			}
			flag=1;
		
	}
	cout<<endl;
	//system("cls");
	for (int i=0; i<n; i++)
	{
		for (j=0; j<m; j++)
			cout<<a[i][j]<<" ";
		cout<<endl;
	}		
			

	system("pause");
	 for(int i=0;i<n;i++) delete a[i];
       delete[]a;
}
Qiker вне форума  
Старый 18.12.2012, 15:11   #3
Новичок
 
Регистрация: 21.11.2009
Сообщений: 486
Репутация: 47
По умолчанию

Banni123, попробуйте написать так:

Код:
 int j=0, y;
    while(j<m)
    {
        for(i=0;i<n;i++)
            if (A[i][j]<0)
                break;
        if(i==n)//если нет ни одного отр.эл. то удаляем столбец. 
        {
            for(y=j; y<m-1; y++)
                for(i=0; i<n; i++)
                    A[i][y]=A[i][y+1];
            m--;
            j--;
        }
        j++;
    }
sheff-09 вне форума  
Ads
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изготовление элементов дизайна (бесплатно и за плату). Djeday Реклама, объявления 0 21.09.2012 17:27
Контрастность LCD-матрицы komrad Периферия 1 04.06.2012 22:16
Удаление ненужных элементов (вопрос скорее всего по реестру) ShmeaogorL Windows 7 8 01.05.2012 12:43
Паскаль: сумма элементов denis_stell Программирование 4 10.03.2010 14:54
DELPHI сортировка элементов массива Izzie Программирование 0 08.03.2010 13:06


Текущее время: 18:51. Часовой пояс GMT +4. Powered by vBulletin® Version 5.8.9
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.