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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2011, 20:57   #1
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию куда вставить еще одно условие?С++

программа находит кол-во седловых точек матрицы n*m,
проблема в том, что если матрица нулевая, то кол-во седловых точек ведь будет равно ко-ву нулей?то есть n*m, куда можно вставить это условие?
Код:
 		 for(i=0; i<n; i++)
		  for(j=0; j<m; j++)
		  	    if (a[i][j]==0) l=n*m; out<<l;
сам код
Код:
#include <iostream>
#include <fstream>
	using namespace std;
int main()
{

    int n, m;

		ifstream in;
		ofstream out;	
		 out.open("output.txt");
		 in.open("input.txt");
		
    in>>n>>m;
				  
	int a[n][m],i,j, count=0,l;
	int max=0,min=32565,jmin,imax; 
		
	           
		for(i=0; i<n; i++)
		  for(j=0; j<m; j++)
		 
		   in>>a[i][j];
		   	
	                      
		 for(i=0; i<n; i++)
		  for(j=0; j<m; j++)
		   {
		      if(a[i][j]<min)
		      {
					min=a[i][j];
			     jmin=j;
		      }
		      if(j==m-1)
		      {
		      for(int k=0; k<m; k++)
					if(a[k][jmin]>max)
						{
		            max=a[k][jmin];
                                   imax=k;  
                                 						
                  }	
					if(max==min)
                    	{count++;  out<<count<<endl;}
					min=32565;
					max=0;
			} 
			
		   }
return 0;
}
заранее спасиибо
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 27.02.2011, 21:04   #2
fizteh
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 46
По умолчанию

При вводе элементов массива пусть будет так:
Код:
int index=1;
l=n*m;
for(i=0; i<n; i++)
 for(j=0; j<m; j++)
 {
	 in>>a[i][j]; 
	 if (a[i][j]!=0)
		 index=0;
 }
 if (index==0)
{
	 cout<<l<<endl;
         return 0;
}
fizteh вне форума Ответить с цитированием
Старый 27.02.2011, 21:13   #3
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

Цитата:
Сообщение от fizteh Посмотреть сообщение
При вводе элементов массива пусть будет так:
Код:

	 if (a[i][j]!=0)
тут видимо a[i][j]==0 наоборот, спасибо большое, работает!
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 27.02.2011, 21:20   #4
fizteh
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 46
По умолчанию

Нет!!! именно (a[i][j]!=0) !!! я подразумевал, что изначально матрица нулевая, поэтому посчитал l, а если нашелся элемент не нуль, то она уже не нулевая.

Последний раз редактировалось fizteh; 27.02.2011 в 21:23.
fizteh вне форума Ответить с цитированием
Старый 27.02.2011, 21:28   #5
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

тогда ответ будет неправильный ни для нулевой ни для не нулевой матриц..
Код:
#include <iostream>
#include <fstream>
	using namespace std;
int main()
{

    int n, m;

		ifstream in;
		ofstream out;	
		 out.open("output.txt");
		 in.open("input.txt");
		
    in>>n>>m;
				  
	int a[n][m],i,j, count=0,l;
	int max=0,min=32565,jmin,imax; 
		
	     int index=1;
	     l=n*m;      
		for(i=0; i<n; i++)
		  for(j=0; j<m; j++)
		   {
		   in>>a[i][j];
		   if(a[i][j]!=0)
		   	index=0;
		   }	
	        if(index==0)
	        {
	        	out<<l<<endl;
	        	return 0;
	        }              
		 for(i=0; i<n; i++)
		  for(j=0; j<m; j++)
		   {
		      if(a[i][j]<min)
		      {
					min=a[i][j];
			     jmin=j;
		      }
		      if(j==m-1)
		      {
		      for(int k=0; k<m; k++)
					if(a[k][jmin]>max)
						{
		            max=a[k][jmin];
                                   imax=k;  
                                 						
                  }	
					if(max==min)
                    	{count++;  out<<count<<endl;}
					min=32565;
					max=0;
			} 
			
		   }
return 0;
}
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 27.02.2011, 21:43   #6
fizteh
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 46
По умолчанию

прошу прощение, if (index==1) {...} , а не нулю!
fizteh вне форума Ответить с цитированием
Старый 27.02.2011, 22:05   #7
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

да, спасибо,
но вот только заметила, если в матрице есть нули например
1 0 3
4 5 0
7 0 9
то ответ должен быть 7, а так ничего не выходит (
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как к условию, добавить еще условие valerij Microsoft Office Excel 8 22.10.2010 21:59
Куда вставить проверку на чётность? ElektrikMaximka Помощь студентам 5 09.10.2010 22:08
куда вставить код программы делфи Резеда Помощь студентам 9 21.12.2009 12:00
Одно поле StringField в DataView в Rave. Как добавить еще? Leser Помощь студентам 1 06.10.2008 15:00