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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2012, 22:18   #1
Redbbt
Новичок
Джуниор
 
Регистрация: 07.06.2012
Сообщений: 2
Радость Массивы, функции СИ

Необходимо удалить строки и столбцы состоящие из нулей
А так-же найти первую строку содержащую хотябы один элемент типы Float double int
Сделал почему то иногда есть косяк когда строки или столбцы с нулями а так-же как ввести и вывести матрицу чтобы она не расползалась

Помогите пожалуйста буду сильно благодарен

Код:
#include <iostream>
#include <cmath>
using namespace std;

template <typename type>
type ** enter(int n,int m)
{
type ** mas = new type *[n];
    for(int i=1; i<=n; i++)
    mas[i]=new type[m];

  for (i = 1; i <= n; i++)for (int j = 1; j <= m; j++)cin>>mas[i][j];
  return mas;
}

template<typename type>
void sort(type **mas,int n,int m)
{int temp=0;
    
        for(int i=1; i<n; i++)
        {       temp=0;
                
		for(int j=1; j<=m; j++){ if(mas[i][j]!=0) temp=1;}
                if(temp==0)
                {
                        
                                for(int j=1; j<=m; j++)
								{mas[i][j]=mas[i+1][j]; mas[i+1][j]=0;}
                        
                }
	
        }     

{
 for(int i=1; i<m; i++)
 { temp =0;
             
                for(int j=1; j<=n; j++)
				{if(mas[j][i]!=0)temp=1;}
                if(temp==0)
                {
                              for(int j=1; j<=n; j++)
								{ mas[j][i]=mas[j][i+1]; mas[j][i+1]=0; }
                       
                }
        }
}

}



template<typename type>
int str(type ** mas,int n,int m)
{
	int k=0;
	for(int i=n;i>=1;i--)
	{
		for (int j=1;j<=m;j++) {if (mas[i][j]>0) k=i;}

	}
  return k;
}




template<typename type>
void print(type ** mas, int n,int m)
{int t=0,k=0;
for (int i = 1; i <= n; i++){
	for (int j = 1; j <= m; j++){if (mas[i][j]!=0)t=1;}
    if (t==0) k+=1;t=0;}
n=n-k;
k=0;
for (i = 1; i <= n; i++){
	for (int j = 1; j <= m; j++){if (mas[j][i]!=0)t=1;}
    if (t==0) k+=1;t=0;}
m=m-k;
k=0;

  for (i = 1; i <= n; i++){
	 for (int j = 1; j <= m; j++){
		 cout << mas[i][j] << ' ';
	 }
	 cout << endl;
 }
}

template<typename type>
void all(char * message)
{
  cout<<message<<endl;
  int n,m;
  cout<<"N,M";
  cin>>n;cin>>m;
  type ** mas = enter<type>(n,m);
  cout<<"k="<<str(mas,n,m)<<endl;
  sort(mas,n,m);
  print(mas,n,m);
}

int main()
{
    all<int>("Int:");
	all<float>("Float:");
	all<double>("Double:");
  return 0;
}

Последний раз редактировалось Stilet; 09.10.2012 в 08:15.
Redbbt вне форума Ответить с цитированием
Старый 08.10.2012, 23:46   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Косяк в том, что нумерация начинается с 0
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ массивы и функции. Jenkins Помощь студентам 15 28.02.2012 23:41
функции и массивы SkrudjMakdak JavaScript, Ajax 2 03.10.2010 22:08
Функции и массивы. 3.14rojoke Общие вопросы C/C++ 1 14.04.2010 15:32
Функции и массивы Baaandit Общие вопросы C/C++ 11 21.03.2010 00:22
Массивы и функции на Си Wertex Помощь студентам 5 17.09.2009 23:59